Welcome to the Projects' page. A page encompassing
all the projects I feel the need to boast about for some reason
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
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.
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.
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.
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
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.
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.
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
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?
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
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
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.
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 (www.n-gine.de),
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.