Building a game is not easy. It can be a challenge to stay competitive. A game may require innovative technology and innovative software algorithm to be successful. However, without careful design, a game may end up fail in the market. Designing a game require careful consideration.
The game type has to be decided early. There should be a complete design of what the game is about, how the user interacts and how the game will respond. The implementation complexity of the game has to be considered early. Adding complexity during implementation will raise the difficulty exponentially. Any detail about the game should already finalized before implementation.
Change of design during implementation process should be avoided. Any change during implementation would end up delay the implementation progress significantly. A change during implementation is often break the existing implementation. Sometimes it may even require a code rebuild. When many changes happen in the implementation process, the game may never be released at all because at the time the games ready to release it already too late.
It is very important to carefully think any detail of the design before the implementation start. It is better to spent more time at the design process. Careful design may save a lot of time in implementation.
It is better to do research for the game marketing side before the implementation. Sometimes the design may have to be changed to accommodate the need of the market. Market is important. Use other successful game as comparison. Learn their user comment. You will see a lot of user opinion that can be applied to your game to compete with the one already on market.
If you have enough budgets, you can also use third party service to help collect the data you need. User survey may help a lot if you intend to build a game not available in the market yet. Research will help the game reach the intended audience.
The design of the game has to be independent from the platform. The design should never have specific requirement for hardware. Flexible design would allow easier portability between platforms and would help improve the code maintainability.
A Different platform would require a different kind of design implementation. Each platform has each own feature and limitation. Implementation for one platform may not work for another platform. There can be similarity between different platforms but the difference can be big enough to warrants complete codes rebuild.
The game rendering type can be decided at this step. Depending on the platform, rendering can be 2D (raster rendering) or 3D (perspective rendering). Even if the platform does not support it, any type of rendering can be used. There are trick to make 2D rendering looks like 3D or the opposite. Some platform may have huge performance hit if forced to work on specific rendering type.
Game engine, library and tool
Do research on game engine, library and tool available on the intended platform. Best choice on game engine, library and tool will increase development time exponentially. On most platform game engine, library and tool may also available free. They will be very useful especially when you are a beginner in the game programming.
Do not leave behind code documentation. While it is a tedious thing to do at first, code documentation will help a lot later on. Documentation will give tremendous help to reduce the time needed for code modification and debugging. It also helps another programmer when many people are working the game.
Optimization should be done at later stage unless the limitation of the game intended platform is too severe. Optimization should never be done when the intended platform can run the game adequately. It is more important to focus on making the complete game instead of focusing on one part before the game is complete. Once the game is complete, the problem of bottleneck should be apparent. The optimization technique required could be different from optimization technique for individual part. It is best to complete the game first.
Prototyping and beta testing
Prototyping is important. Prototyping help you realize what is missing in the design or in the implementation. It also helps identify the quirk or problem. During prototyping, beta tester can help locate the bug or identify a missing feature. Prototyping step can be used to gather necessary information to complete the game. Many new good idea or suggestion may arise during prototyping. However finishing the game should take priority over adding feature not exist in the original design.
When releasing game make sure that the game is playable and install correctly. It is OK if there are some small bug and some performance problem. If those bugs and performance problem do not trouble the user, you can release them as patch later. You can use this step to gather information on what user need for improvement. If the game is successful, you can use this information to produce the sequel.
Do not underestimate the importance of game design. Careful design may save you from trouble later and give your game more chance for success in the market.