View on GitHub

TDD

This is a research about the Technical Design Document

THE TECHNICAL DESIGN DOCUMENT

I am Dani Lorenzo, student of the Bachelor’s Degree in Video Games by UPC at CITM. This content is generated for the second year’s subject Project 2, under the supervision of lecturer Ricard Pillosu.

Index

Introduction

What is a Technical Design Document?

A Technical Design Document (TDD) is a scheme for the programmers in a team to implement and code the features of their game. It lets the developers of the team specify what are the requirements, how they should be implemented and the tools and technology required for that implementation. Besides, the TDD is also a useful document to show when it comes to find a publisher for your game, considering that they are becoming every time more careful about evaluating the games they may invest in.

The relation of the TDD with the GDD

Both the GDD and the TDD are video game related living documents, which means they are regularly updated and edited during the development of the product, so which is their relation? The Game Design Document (GDD) is the soul of a videogame, it is equivalent to the Bible of a television series (sometimes a GDD is also called Bible). It allows game developers to administrate and organize their ideas in a document which will be followed by all the members of the team and will be used as the base for the development of the game. On the other hand, the TDD is a blueprint for all the technical aspects of the features which are defined in the GDD. In that way, we could declare as Laura Deng says that “while a GDD is derived from the game concept and is a functional description of the game from the user’s point of view, a TDD is an architectural description of the game from the implementer’s point of view”.

Sections of a Technical Design Document

The information contained in a TDD can vary depending on the company or the project. Nevertheless, there are sections which are more usual than others, so we will divide them in what I have called core sections and extra sections.

Core sections

The core sections are those which tend to be in all the TTDs no matter what the game is about.

Features from the GDD

Since the TDD is the document that will handle all the technical aspects of the development of the game it is important to summarize the most relevant features of GDD to have them handy.

Github branches

Original DOOM’s bible (GDD).

Technical goals

The technical goals are a list of objectives set to ensure everyone inside the team knows where to aim when working. They define what is expected to achieve in relation to the code, the game engine or the platform where the game is going to be delivered. Some examples would be immersive ambient sound, complex AI or realistic shadows.

Technical risks

At the same time a team has its goals there are also risks which must not be overlooked. If the company is planning to make a level like the time-travel level of Dishonored 2 (one where you can go from the past to the future and the scenery changes) one of those risks could be that the fact of having two maps loaded and rendered at the same tame makes the game go incredibly slow. In order to take the risks into account they are written down in the TDD.

Github branches

Time-travel level in Dishonored 2. As we can see in the image, the player is in one stage (present) while is looking through its gadget to the other stage (past) in real time.

Code style guidelines

Being one of the most important of the TDD, in this section are described the code conventions that will be applied during the development of the whole project, in order to have an organized and homogeneous code that every programmer of the team is able both to understand and to work with. The thoroughness of the code style guidelines depends on the programming team and their objectives. Here are some examples of the elements one could find in this section:

This list of elements has been made taking DevCrumb’s TDD as a reference.

External libraries

In this section are detailed the external libraries which are going to be used for the development of the project and what are they going to be used for.

Code organization overview (UML)

The UML offers a general outlook of the structure the code will have and the inheritance relation between its classes. UML diagrams show the functions and the variables included in each module. It is a guide used to see the whole picture of the code. Nevertheless, this guide will change as the project goes by and the game evolves, becoming more complex each time and being extended with more specified UML diagrams of the emergent code modules.

General UML

DevCrumb’s general UML for their game Warcraft II: The Stolen Artifacts.

Branching policy

Branches are very useful during the coding process of the game, but a team needs to have stipulated in which way are they going to use them to ensure this advantage does not turn against them. This is what this section of the TDD is for. It defines a series of rules and conventions that are going to be followed every time a member desires to make a commit. These rules consist of when should a developer branch, which branch should the developer use, when should the developer commit a merge and to which branch should the developer make the merge commit.

Github branches

This is an example of a branching system inside a GitHub project. If you are interested and want more information about branching strategies you can check out this website.

Performance budgets

Related with the technical goals, the performance budgets are a series of limits imposed on the metrics that affect the game performance. Those could be the frames per second the game runs, the amount of disk memory is occupied by a certain feature of the game or the time it is expected for a map to be loading. Performance budgets serve as a point of reference for making decisions about design, technology and adding features. That enables the team to approach to the game with an established mentality about which standards their final result must accomplish.

However, they are sometimes difficult to achieve or may change through the game creation process as the TDD evolves, so they are only a guide. As Ben Garney and Eric Preisz say in their book Video Game Optimization “the performance budget, much like a financial budget, is typically not perfect. It is a benchmark for measurement and guidance. […] Use the budget to determine problems and to forecast and manage change”.

Here there is an interesting video about performance budgets in websites.

Build delivery method

This section describes the process that will be followed every time a build is delivered. It explains if there will be used an extern program, who will deliver the build and when will it be delivered.

Version list

Planning beforehand what it is intended to have for each version of the game creates a guideline to follow when it comes to create the releases. In this way the team can identify in which phase of the development they are. For example, a company creating an RTS could decide that they want the fog of war to be for the version v0.6. Eventually, when it is implemented it will mean they have achieved that version and that it is time for a new release.

Delivery platform and requirements

It defines the target platform for which the game will be delivered, such as PC, Xbox, PS4 or other consoles. In addition, in this section is specified the minimum and the recommended hardware and software which are required to play it.

Platforms

The consoles of the last generation, considered the 8th.

Extra sections

The extra sections of a TDD are those which vary depending on the game or are not as important or necessary as the core sections.

Choice of game engine

If the game is going to use a game engine this section explains which one has been decided to use and the reasons of this election. It also has a brief description of the features the chosen engine provides to the developers.

Art and audio tools

In case there is no Art Bible and no Audio Bible, this section will specify which art tools will be used for the game art and audio and which tool will be used for each art or audio area.

3D Objects, terrain and scene management

In this section is explained which objects will be in each part of the map, which terrains will be used in the game and how will be the scene management.

Use of physics engine

This section describes how will be de collision detection, how will be the physics calculated and applied to the game (gravity, friction…) and how will be the interaction of the characters or the other entities with the game world.

Artificial Intelligence

If the game will have a complex AI system, it is very important it is conscientiously planned and detailed.

Networking

In the case the game is multiplayer or has a multiplayer mode this section explains how it will be handled.

References used

These are all the pages I have checked while doing the research.

Go back to top.