I have started (and failed to finish) lots of projects so I my first thought in starting my current project was “How can I ensure I finish this one?”
All of this has boiled down to some pretty simple rules to follow
- Keep it simple
- Limit the scope
- Re-use existing tech (Open Source is GOOD!)
- Don’t use tech just because it exists
Ok. So the first 2 are pretty similar… in fact they are the same! Why? Well it is because I REALLY need to remember this point across different areas of the development. Game design and technical implementation mostly. Do I really need to develop in 3D? Would 2D work? How about a dynamic vs fixed camera? How many mechanics do I want to aim for? Sparse map vs tile based? The whole point is that I want to concentrate on a few areas and just make them REALLY good and easy to understand and implement.
Re-using existing tech is another way of saying “Use open source libraries”. On this game some of the tech I am using includes :
- SDL : Input
- Ogre3D : Graphics
- FMOD : Audio
- Boost : Smart pointers so far
- Lua : An interesting way to do in game console and configure data
Don’t use tech just because it exists. I see FAR too many games (commercial and indie) that seem to feel that to be a great game they need a sophisticated physics engine. RUBBISH! Often just using such tech starts out as an “This tiny part of the game would benefit” but ends up being used everywhere and just over complicating your code, design and overall implmentation.