Programming your game is the construction equivalent of actually building a house based from a plan. Builders don’t build houses without architects plans. They don’t just throw a house together by laying bricks and placing window frames in where they should roughly go based on gut instinct and experience. They have detailed instructions on how the house should fit together.
That being said, writing a game in a small team or as a one man effort is more like a construction job where most of the materials need to be custom fabricated by the builder.
Having off-the-shelf engines available like Unity or frameworks like Mono Game, XNA or Moai helps a lot to reduce the amount of custom fabrication needed.
There are tools like Game maker studio which seek to improve the situation further.
Each level of pre-fabrication reduces the potential for flexibility, however as has been noted, too much flexibility can be the first step on the road to ruin.
When programming your game you have to do a lot of work which may not be appreciated by the player. Those little systems in game to do things like Save and Restore of player state or complicated collision resolution code. These things take time to create yet are not strictly part of the gameplay.
All of the work comes together at the end from an epic landscape of components to a small package once it’s all folded in.
When was the last time you r played with a Lego kit? If it was recently, good for you – Lego is brilliant. If it was a long time ago, go get some Lego, it’s one of the best Adult guilty pleasures around.
The point here is that when you open a Lego Kit, you have bags of individual pieces. You open the bags and spread the pieces out onto the table, or the floor. Then you read the instructions (The Design Document) Then based on the step by step instructions (Your task list and estimates) you create the model in a logical and often component based way. At the end of a very short time, the model is complete and you’re ready to either play with it or pull it apart and make a new one.
For me Game development is the same. You build the pieces of the steering mechanism, you build the suspension mounts, You put the engine block together. Then at the end after you have all of these component parts all assembled on your table, you put them together to form a car. the car appears to be much smaller than the pieces laid out on your table previously, but it’s fully functional.
Anyone from the UK who was born in the 60’s/70’s will remember Airfix. In fact, you can replace Airfix with Games Workshop if you like – for context.
Airfix models were a hobby all on their own while I was growing up. As a boy, I just wanted to play with the finished jet fighter, but I had to go through the steps of building it first.. and before I could build it, I had to paint it.
I didn’t have to create the actual plastic plane parts, but I had to apply my painting skills and patience in assembly.
For me this is akin to a Modder altering models in an existing game. The models exist already (often broken into several meshes), they can be re-textured or even modified, then put together an played with in the game as a specialized Mod.
Again though, the sum of the parts and the amount of time needed to put the whole thing together is far greater than it would first appear.
I’ll talk about the actual programming challenges at another time. My intention with this article is to get people thinking about the complexities involved and to avoid under estimation.