GG Orientation
GG Orientation
Version 1.0
1
Table of Contents
Introduction Synchronizing Teams .................................................................................................................................................. 12
Section: Game Design Document ...................................................................................................................................................... 15
Game Design Document Introduction ............................................................................................................................................. 16
Game Design Document User Experience ...................................................................................................................................... 18
Game Design Document Style Guide .............................................................................................................................................. 19
Game Design Document Script ....................................................................................................................................................... 20
Game Design Document Glossary .................................................................................................................................................. 21
Section: Technical Design Document................................................................................................................................................. 22
Technical Design Document Introduction ........................................................................................................................................ 23
Technical Design Document Hardware/Software Specification ....................................................................................................... 24
Technical Design Document Performance Specifications................................................................................................................ 25
Technical Design Document Architecture........................................................................................................................................ 26
2
Table of Contents
Table of Contents
Project Schedule Understanding Constraints .................................................................................................................................. 36
Section: Execution ............................................................................................................................................................................. 39
Execution - Intro ................................................................................................................................................................................. 40
Execution Cadence ......................................................................................................................................................................... 41
Execution Vertical Slices ................................................................................................................................................................. 42
Conclusion ......................................................................................................................................................................................... 43
3
Introduction
Intro 4
The Game Design Document
The Technical Design Document
The Estimate Sheet
Introduction
The Project Schedule
Execution
NOTICE
All team members should read each section. While the technical design document may be the most important document to a
technical person, the other sections are still very important. It takes a team to build a game so understanding the context of the
other groups and individuals will help you do your job.
4
Introduction
Introduction - Roles
Congratulations on your purchase of a custom game. Procuring a game is exciting but it may also be intimidating if you have never
been part of the process before. Making a game is hard because it takes many disciplines. The following roles are required to make
a game:
Designer 5
Designers define the user experience, develop gameplay strategies, and balance competition.
Artist
Introduction
Artists create the digital assets that define game aesthetics.
Programmer
Programmers use scripting or programming languages to add logic and systems to a game.
Manager
Managers coordinate the individuals. Producers, Art Directors, Project Managers, and Technical Directors are all important
managers. A lead is another type of manager who is the best of peers in a given domain (i.e. Programming Lead). Its
important for all managers to be in touch with their project. We suggest that managers spend at least 30% of their time getting
their hands dirty. Leads should only manage 20% or less.
WARNING
After developing a game, teams often do a post-mortem (some call them post-partum). Typically, team communication is the
number one topic cited by team members as the biggest area for improvement.
5
Introduction
WARNING
Its the designers job to define the game characteristics. The designer uses past experience and opinions to set design and its
important to let the designer do their job. Typically, its better to keep the design team size to a minimum, too many opinions water
down a design and reduce the je ne sais quoi. It is, however, useful for a designer to realize that constraints, such as technical,
schedule, resource, force a designer to make decisions and be critical of their design.
6
Introduction
6
Introduction
Introduction
Stability
Maintainability
Fun
Replayability
Joy Moments
WARNING
Design changes should be well understood as soon as possible. Changing design during execution without careful consideration is
a recipe for disaster.
7
Introduction
To create fun you should consider one of two paths: cloning or iterative design.
Cloning
Cloning means taking a proven design and copying it.
Iterative Design 8
Iterative design requires developing prototypes (either on paper or with a prototyping application) and usability testing. During
usability testing, we determine if what was built is fun. If its not, you should prototype and try again.
Introduction
WARNING
Design is constrained by technical, schedule, and resource constraints. If the goal of your game is to be persuasive there is yet
another level of challenge. Persuasive games have the challenges of 1) Software development 2) Game development 3)
Instructionally correct. Thats a triple whammy!
8
Introduction
Introduction
Prototype Alpha
Demonstrates that an idea is feasible. Feature complete. Not ready for 3rd party testing.
9
Introduction
Vision 10
The goals of the project. It is extremely important to communicate goals, preferably in priority order, to all team members.
Pre-Production
Introduction
During pre-production we assemble the team and set the standards for goals, design, and schedule. We document them in
order to facilitate sharing.
Production
During production we execute on the game design and react appropriately to inevitable changes.
Release
Release is the end of production. Feature development is complete; final QA and certification commences.
Support
Once live, the game must be supported. In live development models, the base game is released while the other stages, listed
above, occur in parallel with support.
Decommission
The game is retired from play.
10
Introduction
WARNING
Typically, the amount of work (a measure of efficiently completed effort) often occurs over a long duration (amount of calendar
time). The reason are the dependencies and iterations. Later decisions, such as technical implementation decisions, are gated by
earlier decisions like design and vision. These dependencies create a development process that is inherently serial.
11
Conversely, later constraints, such as technical implementation and schedule, can affect earlier decisions such as design. These
changes result in another iteration that is still inherently serial.
Introduction
While this process may be slow, it would be significantly more time consuming if these designs were implemented instead of
simply simulating them on paper in a game design document. By setting aside appropriate time for pre-production, we can reduce
dependencies and iteration and increase parallelism during implementation.
11
Introduction
Communication across teams is vital and very difficult. The first challenge is to create a common, agreed upon set of guidelines. The 12
second challenge is to actually get people to abide by them. We use several documents to synchronize our teams.
Intent Document
Introduction
Defines the base design in one page. Its the pitch document before you write the Game Design Document.
Estimate Sheet
The estimate sheet decomposes the implementation into smaller units for the purpose of making estimates. The estimate
sheet includes all production stages such as development time, QA, usability, refactoring, and release.
Project Schedule
The project schedule takes the estimates from the estimate sheet and assigns resources to them. The project schedule gives
us our milestone dates.
12
Introduction
WARNING
Using a document as an authoritative source can be a great way to synchronize your team, but simply making the document will
not achieve the goal of a synchronized team. There are several guidelines you should follow:
Single Owner 13
While many people will contribute to the documents, there should be one owner of the document. Its everyones
responsibility to understand and contribute to the document, but a single owner should merge together everyones
comments and notify the group when a new revision of the document is ready for review.
Introduction
Assumptions
The team should recognize that the design document is the authoritative source. If something isnt specified, it should be
considered ambiguous. If something is really important to you and the documents dont include the information you need to
represent your important topic, ask the document owner to update it.
Updating
You wont get the design 100% correct during pre-production. That means things are going to change. When they do, the
document owner should update it and share it with the team. Typically, the document owner will update the document
immediately and share a new version of the document on a weekly basis, typically in a project meeting or once a week
during the sprint.
13
Introduction
PRO TIP
These documents are for collaboration and communication. You should always include page numbers and sections using a
numbering system. Its much quicker to refer to a spec if its numbered appropriately (i.e. John, did you take a look at the design
specification in section 2.3.4?).
14
PRO TIP
Introduction
Have you gained a new team member? Its no big deal. Ask the new team member to read the GDD and TDD and come back with
questions. Consider giving them a test. Even if you dont grade it, the very process of testing someone increases the likelihood that
they will retain the information.
14
Game Design Document
15
Game Design Document
WARNING
16
Game Design Document
PRO TIP
Move the rock! The most difficult part of a new idea is getting started. Dont be afraid to be wrong. Move the rock by putting down
the first proposal and sharing it with someone else or the team. Dont get worried about formatting at this stage; you should
assume that you will be removing or refining a lot of your ideas. Even if you share something thats 95% wrong, you are sill 5%
right and your next step will be clearer.
17
18
The user is in the shuttle. She pulls the yoke towards her stomach.
End Of Experience
18
Game Design Document
In addition to the style guide, we may build common art during the pre-production phase. Developing common art early in
19
development helps us maintain a consistent look across all experiences and increases parallel development.
19
Game Design Document
20
Game Design Document
21
Technical Design Document
22
Technical Design Document
The technical design document is more like the blueprints of a home, not the rendering. It should be specific and detailed enough
that developers will be able to reference it to implement the project.
23
Technical Design Document
The following is a list of possible software modules you may need to formally define.
24
Domain Module
End-User Configuration Min System Ram
24
Technical Design Document
25
Technical Design Document
One way to start defining your architecture is to simply decompose the product into anticipated modules. Similar to a Work 26
Breakdown Structure (WBS), you can use the 100% rule to decompose the product into smaller pieces. After decomposing the
product, you can then look for opportunities for shared systems such as managers and utilities.
WARNING
Architecture is very difficult. Trying to design too much up front can lead to disastrous results. Instead, let your architecture evolve
by building your product in steps based on what the product should do. For example, if you have never seen a car before, it would
be too difficult to sit down and design a car. Instead, it would be better to evolve your architecture over time in phases.
27
Dont design a car; instead, break your project into phases:
-A rolly thing
-A rolly thing that can slow down.
WARNING
Building a system that is too rigid is bad. Things will need to evolve over time so your system needs to be flexible enough to adapt.
Surprisingly, making your system too flexible can also be bad. When systems are engineered to be too flexible, doing very simple
things can become very complex due to all the systems required to couple systems together (if your system is too complex, a
solution is to build a tool that makes the process easier). And if those systems couple together at runtime, debugging can become
very difficult. Balance is important. The best architectures are both flexible and simple.
27
Technical Design Document
Startup
Shutdown
Disconnect (if applicable)
Reconnect (if applicable)
Functions
Parameters
Data structures and data alignment
Examples
Error Handling
28
Technical Design Document
Estimate Sheet
Estimate Sheet
You understand the goals, the intended design, and the likely implementation its now time to determine the work effort of tasks.
30
Estimate Sheet
Estimate Sheet
Armed with our goals, design, and technical design document, we are ready to start thinking from a production perspective (as
opposed to simply thinking of decomposition of the product modules) and develop tasking.
31
Lets first take a look at what a section of our estimate sheet might look like:
Estimate Sheet
31
Estimate Sheet
Provides estimate 32
The obvious reason for estimating is to provide estimates for the project schedule.
Additional Decomposition
Estimate Sheet
Drives finer-grained decomposition of the architecture. This is why we tend to estimate in hours instead of days. Estimates
over two days are reviewed as candidates for further decomposition.
32
Estimate Sheet
PRO TIP
Dont be surprised when the estimate process forces revisions of design or implementation. Track the changes in the TDD and
GDD so that the new approach can be shared with the remaining team members. 33
Estimate Sheet
WARNING
Warning, estimates change when you switch from one developer to another. Add the assumed resource to add validity to the
estimate.
WARNING
Estimates should be in work effort, not duration. Work effort defines how many hours the work takes to complete, not how long it
takes on a calendar. Consider a two hour job that starts at the end of the day Friday and finishes early Monday morning. The work
effort is two hours, but the duration is forty-one hours.
33
Estimate Sheet
PRO TIP
Estimate Sheet
4. Someone else has done this and I understand this; job might not be well-defined -- don't make decisions on this. We need to talk more.
5. Done something similar to this before and this relates to that work -- this estimate has a variance of +/- 50 percent of estimate.
6. I think I understand this fairly well and I understand the goal.
7. The average case for programming when the requirements are understood.
8. A confident case for programming; average case for a lot of art work.
9. I've done this before and it's very similar.
10. I'm probably not working on software... or... no matter what, I'm only going to work on this for a period of time (i.e. 1 week of QA).
PRO TIP
It isnt a perfect science, but at GarageGames we use the following formula to calculate risk adjusted time:
34
Project Schedule
35
Project Schedule
Project Schedule
You have a solid estimate sheet and you feel confident about your numbers. Next, its time to let the schedule dictate when the
project will be done.
35
Project Schedule
Dependencies
A dependency prevents a job from starting because it is dependent on another job. A classic example is that QA cant begin 36
its review until the software is feature complete (unless you are OK with the inefficiency of doing it again).
Critical Path
Project Schedule
A critical path exists when the date of a given milestone or release date is wholly dependent on a single resource. We can
reduce critical paths by balancing workload across multiple resources. Critical paths that arent resolved need to be managed
closely since their impact on a release date can be profound.
Over-allocations
Workers time should not be allocated greater than 40 hours. If you find that you need more than 40 hours from any single
employee, you project has systemic issues that need to be resolved with more money, more time, or a reduction in features.
Work Balancing
Balancing work across employees increases velocity. Conversely, working in parallel increases management overhead.
Hiring Needs
Your project schedule is a great tool to help you assess your hiring needs. Its not unusual to spend two or three months
trying to find the right hire. If you dont know well in advance, you will end up compromising your needs and make a bad hire.
36
Project Schedule
WARNING
Remember, estimates are estimates and many things will change over time. Its important to update your project schedule weekly
if you want it to be useful for the entire life of your project.
37
Project Schedule
WARNING
Dont get too granular or expect too much fidelity from your project schedule. Its a tool to use for guidance but its not perfect.
Dont be upset if someone is doing a task on Monday that is scheduled for Friday (or vice versa). We estimate in hours but we look
at the project schedule in granularities of weeks not days.
WARNING
The milestone and release dates are a function of feature count, complexity/risk, and parallel development and typical
development constraints. Until the project schedule is built, milestone dates and releases are guesses. After the project schedule
is built, milestone and release dates are educated guesses.
37
Project Schedule
WARNING
Its important to get team buy-in on the estimates. Your estimates arent nearly as important as the people who will live up to the
commitment. If you want your developers to truly commit to their work load, you need to get their buy in. 38
Project Schedule
WARNING
Generally, you should place higher risk tasks earlier in the project schedule. By doing this, you will have more time to react to
changes discovered when you actually implement the task in question.
38
Execution
Section: Execution
Now we discuss the hard part
39
Execution
Execution
Congratulations, now comes the hard part. Execution.
39
Execution
Execution - Intro
Executing your project, commonly called production, is an extremely complex process that requires highly-talented and seasoned
professionals. This document will scratch the surface of execution by discussing some of our best practices.
40
PRO TIP
At GarageGames we use a ticket tracking system to task those who are doing the work. Sharing a project schedule is not granular
Execution
enough. We use this same ticket system for tracking bugs. Customers who want to put their finger on the pulse of the project are
welcome to review the tickets at any time.
40
Execution
Execution Cadence
So far, weve not discussed agile methods. We use the aforementioned process to help us determine our path for a reasonable
horizon. We use agile methods to implement that path. The agile methods we use include:
Weekly Sprints 41
Once a week, we use the project schedule and backlog (a place to put discovered and incomplete work) to build a project
sprint. At the beginning of a sprint we commit to the work we will perform. The goal is to complete your work by the end of the
sprint.
Execution
Daily Standups
Every day we meet as a team to discuss what we did yesterday and we are doing today. The goal of this meeting is to meet
no longer than you need to in order to get your work done.
WARNING
Dont nag developers during the sprint. If youve done it right, they are committed to deliver on their promises. Measure their performance at the
end of the sprint but dont make the sprint so long that your developers fall victim to procrastination.
WARNING
Be considerate during the daily standup. You goal is to inform others so that you can work out interdependencies between the team. Its not a
time to argue implementation. Handle those discussions after the meeting.
41
Execution
PRO TIP
Execution
After developing a vertical slice, usability testing is advised. To test usability, we put new users in front of the product and ask them
to use it. If they cant use it without additional information, your product will not thrive in the real market. As game developers, we
are too experienced to represent a typical user; therefore, we must find testers that are more representative of the games
audience.
42
Conclusion
Conclusion
Thank You!
43
In closing, wed like to thank you again for choosing GarageGames for your game development service needs. The success of our
project together will hinge on our ability to collaborate effectively.
Conclusion
We hope that this guide will provide you with insight into the challenges of game development and the methods weve developed to
manage the challenge. We encourage you to share this document with everyone who we might be working with.
We would like to thank NASA for the use of the images. http://history.nasa.gov/diagrams/mercury.html
If you have any questions, please feel free to reach out directly to your point of contact or our CEO. He can be reached at
ericp@garagegames.com.
43