ATTENTION: This page is part of my achieved '2004' website, if looking for a more recent portfolio, please go back to the main index page here.
Projects - Any work that Tom's done, right here. Resources - Anything useful, it might be made for Tom, but you might like them too! Home - Back to where you started About Me - All about Tom Hill, CV, Personal Statement, Other Interesting things... Contact - Speak to the man himself!


Welcome to the Projects' page. A page encompassing all the projects I feel the need to boast about for some reason or another.

Work In Progress
My forth semester at University is over, but I'm trying to keep myself busy. While a whole host of mini-projects over the Summer awaits me, here's a view of the ones I'm currently working on.

Graphical Effects
Escentially, my goal here is to build upon my Programming for Visual Simulation engine (see below). The first of these effects I'm implementing is the inclusive of shadow volumes (or stencil shadows). Brought to public attention in the new Doom 3 engine, they are very much part of the games people will be playing in the near future, and I'm certainly having fun implementing them.


Name: Programming for Visual Simulation
Description: A 3D engine, with animation and simulation components.
Language: C
Tools: GLUT (GLUT Homepage)

Development time: March - May 2004 (8 Weeks)

Executable: (577 KB)
With the Executable, please take the glut32.dll file included with each, and copy it to your Windows/System directory, for the program to work correctly.

Controls: WSAD for camera control, left click to move viewpoint, right for zoom. Other controls are specified by buttons on the HUD.


Programming for Visual Simulation
My favourite module of my forth semester at University, this assignment had the brief of creating an interactive animation/simulation program. I decided to make my 'engine', as much as physically possible completely user defined. This meant that a single scene file would define everything the a user of the engine could interact with.

How the scene hierarchy worked, what HUD buttons did, particle system parameters, animations, meshes; all of these were stored within a single scene file.

Noteworthy aspects of the engine were the complete scene graph, and 'plugable' design of the engine. Components could be pluged in easily (e.g. the animation and simulation systems), and HUD buttons with 'standard' actions, that could have values specified for their actions etc.



Name: 3D Graphical Programming
Description: A full on 3D scene renderer, completely programmed by myself.
Language: C
Tools: GLUT (GLUT Homepage)

Development time: March - May 2004 (8 Weeks)

Executable: (813 KB)
With the Executable, please take the glut32.dll file included with each, and copy it to your Windows/System directory, for the program to work correctly.

Controls: All controls detailed in the console that accompanies the main window.


3D Graphical Programming
Following on from the '2D Graphical Programming' (as profiled below), the aim of this project was to take the rasterisation functions we'd spent the first semester perfecting, into 3D, by creating a full transformation pipeline. This involved taking a mesh through every stage of the process, from using model, view, and perspective matrices, 4D geometric clipping, phong (and gouraud) shading of all shapes.

Advanced features included the shading section of the assignment. With texturing, perspective correct interpolation, and normal mapping all included in the final product. An assignment I had enjoyment creating from start to finish, which has nutured an interest in graphics in my skillset.





Name: C++ DirectX Game
Description: A test of C++ and DirectX, mixed into a game.
Language: C++
Tools: DirectX

Development time: March - May 2004 (8 Weeks)

Executable: (1.46 MB)
With the Executable, please make sure you have the latest (9.0b) version of Microsoft's DirectX installed on your machine.

Controls: Click and Move mouse to control plane direction, W/S increase/decrease plane thrust.


C++ DirectX Game
As part of a university module, the task was to create a basic game, to the design specified by the assignment. Essecentially, it's a very basic 'collect and dodge' game. Where the player must collect crystals, and dodge enemies and scenery. Once all the crystals have been collected, the game is complete.

Whereas the original brief was to create a completely first person game, where everything was played on a 2D plane. I however decided to make the project slightly different, and original. I decided to make a 3D flying game, where the aim was to fly through a course.

The main point of the module was to test our C++ skills, from the original semester of the double module, while also learning how a basic game engine would be constructed. The production of the game focused on creating a Visualisation module (which could be replaced by an OpenGL equivalent if needed), and a main 'game world' module, which was responsible for all of the game code.

Name: Pong Demo
Description: A very simple pong demo using my 2D Graphical Programming rasterising technology.
Language: C
Tools: GLUT (GLUT Homepage)

Development time: January 2004 (1 Week)

Executable: (68 KB)
With the Executable, please take the glut32.dll file included with each, and copy it to your Windows/System directory, for the program to work correctly.

Controls: W and S - Up and Down for Left paddle, P and L - Up and Down for Right paddle, B - when ball not in play, begins play.


Pong Demo
After deciding on Pong as a game to test my rasterising technology while on a University break, I firstly updated it to just iron out a few niggles I had first time round. The major addition here was the option to rasterise by texturing.

Overall, the majority of development time was taken up by this improving process, and of course adding new functionality in the form of new matrix and 'game' modules. Transformations within the program could finally be carried out, meaning I could have a ball and paddle that move!

My collision system is very crude, and although at the time of writing being less than a week into my new semester I already know of a far better way to have carried it out. Development notes would have to include how much my respect has grown for languages such as OpenGL and DirectX, because my 2D rasteriser makes the game go slow on anything bigger than a 300 x 300 pixel window. Also, I'd like to thank Marque Pierre Sondergaard's contributions for textures for the ball, paddles and walls. He also did some background pictures, but texturing an area that big brought the game down to unplayable levels, so unfortunately they couldn't be used.

Name: 2D Graphical Programming
Description: An application showcasing 2D graphical techniques.
Language: C
Tools: GLUT (GLUT Homepage)

Development time: November - December 2003 (2 months)

Grade: A+

Executable: (144 KB)
With the Executable, please take the glut32.dll file included with each, and copy it to your Windows/System directory, for the program to work correctly.

Controls: Left Click - define vertex, Right Click - cancel polygon, Return - define polygon, N - clear all polygons, < and > - darken/lighten current colour, Numbers - select a pre-defined colour.


2D Graphical Programming
Now this module is why I came to University to do programming. At last a module where we actually get to display things on screen. I cannot emphasise enough how much I enjoyed creating this assignment. The basic idea of the end program was to provide a way to show off how our technology for rasterising polygons, lines, etc. worked in a more interesting way than 'here are some shapes I drew on-screen'. By far the most memorable part in development was when I managed to code a line that was then displayed on-screen for the first time. I think my mood could have been described as more than ecstatic! Even though the line wasn't drawn at the right coordinates.

I have plans to take my underlying code and apply it to a game, seeing as I now have no excuse in the form of 'I can't get anything to display on screen', so hopefully development on that would be quick. A simple arcade game would be fine to base it off, perhaps Space Invaders, Pong, or something else?

Name: Game Software Design
Description: An analysis and design of the Game Rules in F-Zero X.
Language: UML

Grade: A
Tools: MS Visio

Visio's HTML output: f-zero.htm (N/A KB)


Game Software Design
An entire module all concerned with how to design programmes. I found this an enjoyable and interesting module on the whole, learning the skills need to have a 'standard' way of presenting my ideas.

The assignment was clear: Choose a game, then choose a system of it (be that graphics, user interface, game rules etc.) and then analyse and design it using Unified Modelling Language.

Designing software before production is very much a skill any programmer should have, even more so where programmers will very rarely be working on their own, but within a team where communication between team members is vital.

Working on this assignment, was enjoyable because of two things, firstly I got to take a deeper look into one of my faviourite games of the last generation, and secondly I got a glimpse of exactly what the original team had to get through while making the game.

Name: Pigeons Vs. Seagulls
Description: A Game Design Brief for a Module as part of my Degree. Contains, a game brief, supporting descriptions, and rationale.

Grade: A

Document: GDE_pigeonsvsgulls.doc (2.48 MB)


Game Design: ICA - Create a Game Brief
Being a programmer, you don't often get a chance to flesh out ideas about a whole game, so it was very refreshing to get to do it in this module of my course. The basic ideal for this module was to think up of an idea, then create the initial pitch document that you'd show to people to get them interested before production.

I'm not too sure whether the game would be considered weird or 'too out there', as tutorial feedback gave me this suggection, but I'm happy with the concept as a whole, and allowing people to read through it, backs up my opinion, as all the feedback I've had is very positive.

Name: Ark Raider
Description: GBA game
Language: C
Tools: HAM Dev kit (

Development time: May - August 2003 (3 months + 1/2 month preperation and research)

Executable: arkraider.gba (411 KB)
Emulator: Visual Boy Advance (

GBA Controls: A - shoot, B - jump, D-pad - move.

Emulator (VBA) Controls: Z - shoot, X - jump, Arrow Keys - move.

Ark Raider: A GBA Demo
Serving as my first game demo of anytype ever, and a test of programming skills after my first year in University, Ark Raider is a very simple overhead view 'Zelda inspired' maze game. Built in stages, and scheduled to be completed in my spare time while working a unpredictable shift pattern in my summer job, I'm quite impressed with myself how I managed to complete it in such little time and get a complete package together.

Programmed with the aid of the invaluable HAM GBA development kit (, and in C, I'm quite embarrased at the state of the final source code as I ran away with myself many a time and it's very unreadable I will admit, even moreso now while in the second year of my course where neat code is a very large priority, and something I now instinctively look for. However it's a mistake I'll never make again, and just one of the many things I learnt throughout the project.

Other things that need commenting are Nkem Joseph Oyem's work on the main character, for first time sprite work on his part, I was very impressed. While I also have to congratulate myself on creating a collision detection system that works on a per pixel basis, and one which is exactly the same as what was commonly used in 16bit games, but I only found that out after creating it for my demo.

To sum up, I'd like to add that when people say you learn more from trying to make a game, than from just talking about it, I for one agree with them totally now.

Contact About Me Resources Projects Home