James Grafton.com

Games Demos

Being a keen computer games fan, I enjoy developing computer games in my spare time. On this page you can find a complete listing of all my games and demos that I have developed so far along with a brief explanation about each of them.

Another brick in the wall

This was my first attempt at making any sort of game. At this point I had been learning java for one year and while quite proficient, I lacked a lot of skills related to experience such as extensible design. However I was quite happy to get a working program out of it and learnt many things from it such as:

-Line drawing algorithms.
-Blitting images to screen.
-Capping frame rate and update rate.
-Using buffering.
-Rendering to full screen and windowed mode.
-Elastic collision.
-Speed vectors.
-Sprite utilisation.
-Game optimisation.
-Writing a level designer.

I wrote the game with one other person, who was responsible for the physics, whilst I was responsible for the graphics and level design. While I managed to make a fully working level designer and graphics engine the game was never fully finished due to time constraints, although it is still playable. See below for screenshots:

Intro screen
Level intro screen
In game
Level editor

Gunishment

After taking a short break away from making games, to concentrate on university I decided to get back into it again and learn one of the the most important languages; that of C++. Gunishment was programmed using visual studio and SDL. SDL was used to speed up the development process exponentially, since necessary functions such as image rotation, loading images from disk and image blitting could be done with simple function calls. This is one of the reasons why I have been able to get so far with it even with the time constraints of being in my final year. However I do make a point of whenever I use someone else’s libraries to read the source code wherever possible and understand how it works for myself. Since I was far more experienced with programming by this point and had practiced it professionally I managed to come up with a far better structure and as well as learning many more key concepts:

-Setting up and maintaining a TRAC database.
-Setting up and maintaining SVN.
-Collision response.
-Velocity vectors.
-Further optimisations.
-C++ OOP.
-Per pixel collision.
-Rectangle collision.
-Circular collision.
-Alpha blending.
-AI vector tracking.

As Gunishment was turning out to be quite a useable game I wanted to spend more time on it, so I proposed it as a test case for eye tracking integration in games. As of the time this was written it is fully up and running and functional, and is used to move the light source around in figure 2.3.

Intro screen
Character select screen
Story screen
In game
Options menu

Bat

This was my first attempt at programming using a different C++ compiler (gcc) and for a new platform (PSP). It was basically just a test game to have a poke around the PSP API and see how easy it would be to make a game for it. It turned out to be quite easy to program for and taught me a lot about working outside of a standard PC environment and all the restrictions that it imposes. The game itself is just a one player version of the classic pong.

In game

Robotron

After the success of bat I decided to make a more challenging game, and base it on the old arcade classic ROBOTRON 2064. Due to time constraints I opted to use a library for graphics calls and sound functions, and after looking at SDL for the PSP and wishing that it would compile, work, and be fast enough I opted for the popular OSLIB which runs on OpenGL for the PSP. The game so far has an intro screen, and a game where you can move around and shoot, and includes music and xSound FX. See below for screenshots:

Intro screen
In game

OpenGL texture engine

During the summer of 2007 I decided to start learning OpenGL. It was a very steep learning curve and an interesting experience. I thought it best to start by going through NEHE’s tutorials on the net. I then settled on the 3D level tutorial, and triedto expand upon it. I got as far as adding the following features:

++Debug message printing to screen.
++Basic level design with texture caching.
++Fully object orientated design.
++Plane based collision detection system/ response system (slide along walls).
++Added jumping/basic gravity.

In game

SVN for this can be found here.
Binary for this can be found here.

Pucker DS

After getting a DS in early in summer 2008 I was interested in its capabilities, and how hard it would be to develop for. It represented an interesting challenge for me since there was only 4mb of ram to use and the methods of game design are quite drastically different due to the hardware limitations (no floats, minimise branching, 64*64 max sprite size etc….).

This was the first project where I really wanted to lead the development and see what it would be like to have a team of developers all working from one versioning system, and each delegated an individual job.

It ended up being a pretty successful project, and taught me a bit about team management as well, in the way that I was organising the production of the game between me (the developer) and the person I had doing my art.

Development logo
Title screen
In game

SVN for this can be found here.
Binary for this can be found here. (Zip file includes iDeas NintendoDS emulator)

Spitfire Maverick

After the successful completion of pucker DS I decided to make a game for the DS that would really push its capabilities. So far Spitfire Maverick includes terrain generation, simulation flight physics, simple particle generation and landscape collision.

In game
In game

Latest SVN for this can be found here.
Latest binary for this can be found here. (Zip file includes iDeas NintendoDS emulator)