Game development

Its time to blog about something rather different. So apart from PhotoFiltre LX I have many
work-in-progress projects. Two of these are games and I must admit working on them is both a
fun and educational experience.


This was my first game, a 2D side scrolling shooter. The characters, weapons, sounds and levels will be
based on the 3D shooter Urban Terror. The sounds are from the original game but the graphics I created
in Inkscape + GIMP.
The gameplay is not quite there yet but the idea and code for basic gameplay is in place. However, with
this being my first game I focused on quick development and simple code. Looking back at the game now
I can see many ways to improve it. On a desktop computer the game will still run fine but on lower
power devices such as my netbook the framerates are a bit unstable.


White Guardian

My second game. I took a slow approach to coding it and made sure to be efficient as possible. I had
a plan to release this game for Android, so it really does need to be built with performance in mind.
Most of the development at the moment is on the menu system. In order for menu features to work I also
have to code most of the backend systems for the game.


So now what do you learn while working on games? Well lets break down some points here:

  • The story is important
  • Proper planning saves time
  • Take game development seriously
  • You can’t do everything
  • Different development cycles
  • Don’t ‘improve’ what already works

The story is important

So you want to make a game and dive into code. Not such a good idea if you don’t know where the game
will go in terms of the story. Its advisable to write the story of a game first especially in this
case because its an RPG genre. Later this will help knowing what dialog each main character will be
saying and help design the level locations. Also its good to use some dedicated software for writing.
I found one called Plume Creator which allows you to define characters, the scenes and write the
story organised into chapters.

Proper planning saves time

For any game its helpful to plan out the level design, what types of units will be in it and what kind of
stats will they have. Think about the menu layout and graphics style you want. Before you start
programming spend some time to plan out how to store data. (variables, arrays, structs etc.)

Take game development seriously

Games can be fun but don’t even think for a second that making them is equally easy and fun. In order to
make a good game you need to focus and develop it as a serious project. Once you get some decent
groundwork done on the development you can then decide what fun elements to introduce for the player.
If you develop the game properly the addition of new content should be made as easy as possible.
Developing a game in a poor manner will make it difficult to add more content. Making this difficult will
test you and may force you to give up working on the game.

You can’t do everything

Alright maybe there is somebody out there who is a ‘pro’ at coding, graphic design, artwork and
sound/music creation. However, for the most of us we have an expert level of skill in one area. Perhaps
we have a little skill in another but certainly we can’t cover every area. Games that turn out the best
usually come from a team of coders, artists and music/sound producers. Myself for example, I can produce
pretty good code and I have a little skill with graphics too. That is pretty much it though, I wouldn’t
be great with creating a soundtrack or doing more artistic stuff with graphics.

Different development cycles

For my first game I just did non-stop development. Never once did I do anything different or think
“is this the best way of doing it?”. However now I am working on a development cycle with an
optimization cycle straight after. I go back and forth between the two cycles. Development just involves
adding new features, fixing bugs and improving features. Optimization involves going back over features
and check if the efficiency can be improved, removing unused variables or graphics from past ideas.

Don’t ‘improve’ what already works

Sometimes you will look at a feature and think of a genius idea to do it better. However more often than
you think this idea will not work out in practice. You will then realise the time wasted on
‘fixing’ a feature that was already working fine. A better way to deal with this is moving ahead with
development on features and when the game is nearly finished maybe experiment a bit.
Doing this will at least stop time wasted in the game development period and won’t affect progress.