So, what exactly is a technical specification document? Compared to the functional specification that explains what, technical specification explains how. In simpler terms, a technical specification for a game is a blueprint. The game has to be created eventually, which is why the technical specification should be created in order for the programmers to think about how the game will exactly be implemented. This helps to reduce the confusion during the implementation stage. Most gaming companies tend to avoid this step as they claim it is too time confusing and feels the document is only needed for programmers. But in actual fact, creating the technical specification saves more time as compared to the number of revisions and changes without one.
So, who will be in charge of writing this document? The lead programmer or technical director of course. Ultimately, this document is for a programmer to understand how to implement the game. It would be better to get the whole team of programmers involved as well. The document should be written in a way that only technical team members would understand, which is from a system perspective, not a user perspective.
Overall Game Mechanics
The heart of the entire document, this section talks about the hardware platform being used, operating system, externally code objects (EXEs, DLLs) and any internally generated code objects.
Hardware Platform or Operating System: You have to state what kind of hardware platform as well as the operating system your game will support. For instance, if it’s for PC or Mac, state the minimum system requirements that are needed to run the game. If the game is distributed in other ways such as a cartridge, state what is the ROM.
External Code: Note down in the detail the purpose and source of the code that is used such as Operating System code or any preprocessing tools. Besides that, if there are specific drivers or code libraries involved such as DirectX should also be stated here.
Code Objects: Identify the purpose and scope of the code objects being used, built and compiled into the EXE. If any DLLs are being used, state each and every one of them and explain what is the purpose of using them.
Control Loop: In each game, there is a control loop which is how the start-up code is being transferred to the main game code. List down all the functions involved and what their purpose is such as the movement, collision and rendering. Describe the function of drivers, multithreading and memory management.
Game Object Data: List down all the data structures and identifiers involved. The game would not be complete without the physics and statistics of the game are completely laid out and documented. If the game uses object-oriented programming, explain the class inheritance tree as well as the class interface properties and functions. If there are collections, list them out as well. If there is a specific variable that is being used during game routines such as rendering, collision or movement, identify them. Think of the technical issues that regularly occur and try to optimize the code to ensure versatility, speed and neatness.
Data Flow: Describe how the overall data is being loaded, stored, processed, transferred, restored and saved. If there are references, write them down and explain them.
Game Physics and Statistics: Among the entire sections of the technical specification, this is probably one of the most fun parts of it all! Implement the codes that are flexible and modular so that it is easy to change while developing the game. Changes will definitely occur throughout the entire developing process. Hence, it’s best to code so that the changes only need to be made by the designers without having to touch the back-end.
Multiplayer: Another important aspect of the technical documentation is how the multiplayer perspective will be implemented. Questions to ask yourself would be is it peer-to-peer or client-server? If it’s a client-server, what will it be hosted on, GGServers or other types of hosting servers? What are the sizes of the packets and how often will it be sent out? What about the packets that are missed and how will you handle latency issues?
All in all, it is extremely effective to assign specific sections to the specific programmers in charge. This will ensure the document will be well-written and organized.