Facilitating the Education of Game Development

Transcription

Facilitating the Education of Game Development
Otto-von-Guericke University Magdeburg
Department of Computer Science
Institute for Simulation and Graphics
Games Group
Diplomarbeit
Facilitating the Education
of Game Development
Lennart Nacke
Otto-von-Guericke Universität Magdeburg
Fakultät für Informatik
Institut für Simulation und Grafik
Arbeitsgruppe Grafische und Interaktive Methoden für Computerspiele
Diplomarbeit
Facilitating the Education of Game Development
L ENNAR T N ACKE
Matrikel-Nr. 159745
Date of Submission:
Examiner:
November 04, 2005
Prof. Dr.-Ing. M AIC M ASUCH
Dr.-Ing. K NUT H AR TMANN
Supervisor:
Processing Period:
Prof. Dr.-Ing. M AIC M ASUCH
May 23 – November 04, 2005
Diplomstudiengang Computervisualistik
Otto-von-Guericke Universität Magdeburg
Fakultät für Informatik
Universitätsplatz 2, D-39106 Magdeburg
Pronouns and Glossary Terms
In this thesis the author uses “she” when referring to indefinite people. This can be the “programmer”
or the “DEVELOPER”. This is because of the lack of a gender-neutral pronoun that is applicable to a
human being in the English language. The decision for using “she” was made, because the author
would like to see more women to join into playing and especially in developing computer games.
Some computer science or game development specific technical terms are explained in the Glossary.
You can find these words like IGDA printed in bold with small capitals, when they are first used
in the thesis. This style always references a glossary word. If there is a longer or more suitable
description than that in the glossary, it usually references to the chapter that discusses the term in
detail.
c 2005 by Lennart Nacke. All rights reserved.
Abstract
This thesis focusses on game development and educational benefits gained from
teaching games to university students. First, it sketches the complex pipeline of
tasks inherent in game development with focus on used tools. Classifying the many
diverse tools used by different kinds of game developers helps to identify areas of
employment within game development.
A discussion of educational facilities and the specific niches of game development
that they focus on, allows the conclusion that many games created there only reach
up to a prototypic level. Thus, requirements for a game prototyping tool are derived.
The author then provides estimated solutions for these needs with an extraordinary
focus on the usefulness for computer science students.
This leads to an implementation of a game prototyping tool, which brings the applications of the multimedia environment S QUEAK into play. After showing the educational benefits of Squeak, one can find out about some examples of educational
game development with its help. This brings further information on the game engine
that was used as an essential part of the prototyping tool created for this thesis.
Finally, an analysis of advantages and disadvantages of using Squeak for educational game development is done. Also, prospects and possibilities for extending the
prototyping tool are discussed.
Revolutions come from standing on the shoulders of giants and facing in a better direction.
A LAN K AY
Acknowledgements
First, a huge thank you to the many fantastic friends that gave their time, moral
support, ideas, expertise, and cheers during the writing of this thesis. Without you,
I could not have finished this. Another big thanks to the game industry veterans
Bob Bates, Bruce Shelley, Jochen Hamma, David A. Smith, and lecturer Prof. Mark
Overmars of Utrecht University that took time off their busy schedules to answer
my questions and helped me get further insights into a few core secrets of game
development.
I was delighted by the supervision of Prof. Maic Masuch, who has positively helped
me with criticism, motivation, and ideas for my research. I was always proud to be
a part of his Games Group at the Institute for Simulation and Graphics. Also, the
time I spent working with Squeak at the impara GmbH has extended my view on
programming, and I enjoyed working with everyone of them.
Many friends contributed to this thesis in special ways: Stefan Carl-McGrath and
his wife Stacy gave me crucial tips for my writing style and proof-read this thesis
twice. André Miede was so kind to get me started with his LATEX template. Thanks
to Ivonne Drube, who created the graphics for the demo prototype.
Alexander Opel, Christian Hansen, Aidan Fraser, and Simon McCallum all proofread my alpha versions of this thesis and helped me improving it. They also consistently cheered me up - a job, which was also done well by Jan Fietz and Patty
Gadegast, with whom I worked together in the past years, especially during the
GCDC and who have become close friends.
Thanks to Nadin Koch for giving me an industry-insider’s view on some things from
time to time, and for letting me use her SpeedTree research. Also, many thanks to
Ralf Armin Böttcher, who helped in defining software defects in the quality assurance workflow.
Finally, of course, thanks to my family especially my parents, Wolfgang and Anne
Nacke, for their incredible moral support, love and encouragement - and my girlfriend Ellen Zacher, who supported me during the writing of this thesis in every
possible way. Thank you.
Lennart Nacke, November 2005
v
Contents
1 Introduction
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Research Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Structure of This Thesis . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Basics of Game Development
2.1 The Game Development Process . . . . . . .
2.1.1 Concept . . . . . . . . . . . . . . . . .
2.1.2 Pre-Production . . . . . . . . . . . . .
2.1.3 Prototyping . . . . . . . . . . . . . . .
2.1.4 Full Production . . . . . . . . . . . . .
2.2 Traditional Software Development vs. Game
2.3 Game Prototypes in Iterative Development .
2.4 Summary . . . . . . . . . . . . . . . . . . . .
1
2
3
6
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
Development
. . . . . . . .
. . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
12
13
16
19
24
27
29
3 Game Development Tools
3.1 More Than a Collection of Middleware: The Game Engine
3.2 General Definition of Middleware . . . . . . . . . . . . . .
3.3 Game Development Suites . . . . . . . . . . . . . . . . . .
3.3.1 Macromedia Flash . . . . . . . . . . . . . . . . . . .
3.3.2 Game Maker . . . . . . . . . . . . . . . . . . . . . .
3.3.3 Vision SDK . . . . . . . . . . . . . . . . . . . . . . .
3.3.4 Important Aspects of Development Tools . . . . . .
3.4 Defining Classes for Game Development Tools . . . . . .
3.5 Progress and Future Game Development Strategies . . .
3.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
31
31
34
38
39
40
41
42
44
46
49
.
.
.
.
.
.
.
.
.
.
.
51
51
52
55
56
57
57
58
58
59
61
62
4 Developing a Concept for an Educational Prototyping Tool
4.1 Game design vs. Game development . . . . . . . . . . . . . .
4.2 Adequate Education for Jobs in Game Development . . . . .
4.3 Teaching Focussed on Developer Tasks . . . . . . . . . . . .
4.3.1 Game Designer . . . . . . . . . . . . . . . . . . . . . . .
4.3.2 Producer . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.3 Game Programmers . . . . . . . . . . . . . . . . . . . .
4.3.4 Game Artists and Animators . . . . . . . . . . . . . . .
4.3.5 Conclusion for Education . . . . . . . . . . . . . . . . .
4.3.6 Advice from Professionals . . . . . . . . . . . . . . . . .
4.4 Game Development Tools used to Facilitate Game Education
4.5 Towards an Educational Game Prototyping Tool . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
vii
viii
Contents
4.5.1 Requirements Analysis for a Game Prototyping Tool
4.5.2 A Proposal for an Architecture of a Prototyping Tool
4.6 Conclusion for the Implementation of a Prototyping Tool .
4.6.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . .
5 Implementation of a Game Prototyping Tool
5.1 Game Development in Smalltalk . . . . . . . .
5.2 The Development Environment . . . . . . . .
5.2.1 Squeak . . . . . . . . . . . . . . . . . . .
5.2.2 Tweak . . . . . . . . . . . . . . . . . . .
5.2.3 The iEngine . . . . . . . . . . . . . . . .
5.3 LeGaCy - A Tool for Rapid Game Prototyping
5.3.1 User Interfaces in LeGaCy . . . . . . .
5.3.2 The Features of LeGaCy . . . . . . . . .
5.4 A Game Prototyping Example . . . . . . . . .
5.4.1 The Game Idea . . . . . . . . . . . . . .
5.4.2 Demonstration . . . . . . . . . . . . . .
5.5 Summary . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6 Summary and Conclusion
6.1 Results of This Research . . . . . . . . . . . . . . .
6.2 Discussion . . . . . . . . . . . . . . . . . . . . . . .
6.2.1 Critical Review . . . . . . . . . . . . . . . . .
6.2.2 Advantages and Disadvantages of Game
Squeak . . . . . . . . . . . . . . . . . . . . . .
6.3 Future Work Perspectives . . . . . . . . . . . . . . .
6.4 Personal Remarks . . . . . . . . . . . . . . . . . . .
6.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
63
68
69
70
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
71
71
73
73
77
79
81
82
84
89
89
91
91
. . . . . . . .
. . . . . . . .
. . . . . . . .
Development
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . .
. . . .
. . . .
with
. . . .
. . . .
. . . .
. . . .
93
93
95
96
96
97
98
99
Glossary
101
References
105
A Interviews
A.1 Interview with Mark Overmars . . . . . . . . . . .
A.2 Five Questions for Four Game Industry Veterans
A.2.1 Interview with Bob Bates . . . . . . . . . .
A.2.2 Interview with Jochen Hamma . . . . . . .
A.2.3 Interview with Bruce Shelley . . . . . . . .
A.2.4 Interview with David A. Smith . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
115
115
122
122
125
128
130
B Figures and Tables
B.1 Middleware and Tools . . . . . .
B.2 The Game Development Pipeline
B.3 Game Engine Overview . . . . .
B.4 Mini Games . . . . . . . . . . . .
B.5 Common Development Tools . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
133
133
134
135
136
137
Index
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
139
1 Introduction
The only legitimate use of a computer is
to play games.
(E UGENE J ARVIS )
Although people have played games since the beginning of humankind, it was not
until in 1958, when the physicist William A. Higinbotham developed T ENNIS FOR
T WO that games would find their way into computers [8BitMuseum05]. It took more
than ten further years for games to conquer the amusement arcades around the
world, when the P ONG-phenomenon spawned the global video game mass-market
in 1972 [Mertens02, Lischka02]. Figure 1.1 shows a screenshot of P ONG.
Today, an increasing number of the living population grows up with video games. Thus, the
interest for understanding this new medium
among young people is strong. The subject also
became more interesting for educators. Most
students are eager to analyse and recreate
games in an academic context. Not only does
the intrinsic motivation to keep playing fascinate scientists, but the educational contexts
of some games are also useful. This especially
applies for computer science, because game
development incorporates almost every aspect
of it.
Figure 1.1: One of the first video
games in history: PONG.
This thesis will look into using game development as a subject for teaching certain
aspects of computer science, especially object-oriented design. We will also look
into possibilities of teaching game design to non-professional users with a strong
interest in the academic side of game development.
1
2
1 Introduction
1.1 Motivation
Developing a professional computer game has become an incredibly complex task
over the years. In the 1980s, a single person was able to create a computer game by
herself - usually a programmer - that designed, programmed and delivered the game
all on her own. The art was usually homespun, because of the graphic capacities
of the hardware and the target group consisted of technology interested people only.
However, things changed fast. Over the past decades,
the complexity and quality of game graphics became
the biggest selling point in this competitive market.
Therefore, the programmers had to team up with artists
and management people.
After the great success of id Software’s D OOM
[IdSoftware05], game DEVELOPERs and PUBLISHERs
discovered the Internet as a distribution and marketing medium [Kushner03]. Even today the distribution
and safety protection of computer games via the Internet are reaching new heights with the release of
H ALF -L IFE 2 and its accompanying software “Steam” by
Valve1 [Hodgson03]. The software is shown in Figure 1.2.
Figure 1.2: A screenThis novel approach has the potential to change game
shot of the games panel
publishing forever. The classic role of publishers as
in Valve’s Steam.
the powerful controlling instance over marketing and
distribution might become obsolete in the future, and
the developers might possibly retain more rights over their intellectual property.
Royalty share could also become more attractive for publishers.
Teams and budget sizes have exploded continually over the last years. For recent
entertainment software titles, a team of at least 40 to 400 developers, not counting
the contractors and freelancers needed in special phases (e.g. shortly before completion), spends two years of development time. The cost and the risk of developing
a successful title over this long time-span have also increased.
This has resulted in publishers being careful, and producing less innovative titles,
which often results in narrowing the target group for a game towards hardcore
players. The more a game costs, the fewer titles the publishers produce. This
causes more development studios to go bankrupt. However, the distribution on the
internet that was mentioned above could provide solutions for this problem.
1 Valve Software is one of the most successful PC game development studios.
1.2 Research Objectives
3
Professional game development itself has become a complex, interdisciplinary, and
collaborative procedure. To begin with, it is interesting to analyse the implicitly
known development process, and then teach it to students. This way they get a
basic understanding of how the industry works and what methods apply when
developing a large software project in a team.
Games can also be researched on a more diverse scale, including serious games
and academic approaches towards using games as a meta-medium for teaching
certain areas of languages, arts, mathematics, physics, and chemistry, or computer science. Developing game projects in short time-spans in a team of students
without professional aid often leads to unpleasant results, and games that are of
miserable quality. This could be due to an educational goal that many academic
games have [Overmars04a].
Player freedom and intended player experience denote a common control-conflict
in game design. This is a challenge game designers need to face, when they want
to transport a message to the players. The player wants complete control over the
game, but the game developer cannot grant her this, as it might ruin the game
experience. A psychological trick is to let the player think that she has complete
control over the game world, while guiding her in the right direction of the story or
the educational goal.
One has to also keep in mind that there are different approaches to developing
computer games, according to the target groups. Thus, a next-generation console
title has a different requirement-specification than a casual game developed by
non-professional programmers.
After prior reflections on teaching game design in university courses
[Nacke04, Masuch04b], obviously, a wide variety of skills is needed for creating computer games. All the different aspects of game development teach the
students a broad knowledge of programming, design, team management, and communication that is unique in education.
A challenge of game design in an educational context is the complexity of the task.
Simplifying this complexity of the game creation process by creating a tool that
assists in conceptual game design is a goal of this thesis.
1.2 Research Objectives
This thesis aims at showing how games and education supplement and connect to
each other. Computer games do not only serve as attractive motivational sources
that challenge students to spent more time on thinking about algorithms and mathematics, but they are visually comprehensive for non-professional people, too.
4
1 Introduction
This comprehensiveness makes them also the perfect tool for learning - not only,
but especially - computer science related matters. Thus, creating games and playing
them complement each other so ideally that it is only a matter of time until playful
teaching becomes the standard, enforcing better learning results in the future.
The research in this thesis focusses on the analysis of game development, compares
it to software development with a focus on similarities in the processes, and gathers
ideas from past experiences [Masuch04b]. The curriculum developed in [Nacke04]
lacked the right support for the chosen tools2 .
This was making it hard to concentrate fully on one basic aspect of designing games,
Figure 1.3: The students of a game design course at the Otto-von-Guericke University of
Magdeburg. They gather together for analysing video games, which will later help them
producing a game in a team project.
and often lead to problems in supporting the needs of particular students. These
obstacles, however, can probably never be erased, because many different students
with different skill sets usually come together for the courses (Figure 1.3 shows the
students of a game design course at the Otto-von-Guericke University of Magdeburg). This resembles “real” game development in a way.
2 Chosen tools in this case refers to software that is made for a game development course, taught to
people with little or no game development or programming experience.
1.2 Research Objectives
5
Nevertheless, the primary goal is the academic education of game development
rather than producing a professional product 3 . A nice secondary side-effect is the
mediation of diverse knowledge from other areas of computer science. There can be
other teaching goals as well, but the emphasis needs to be on understanding game
development as a complex process.
Therefore, the ideal way of approaching game development is to focus on one part of
it and try to teach decent knowledge of the other parts. In a computer-science environment, the focus naturally is technical-related. An important area of programming is object-orientation, a principle that becomes more popular among computer
scientists.
Object-oriented design is an intuitive method for learning programming, so the aim
of this thesis is to develop software that allows for understanding object-orientation,
as well as game design. My hypothesis is that object orientation is a natural approach to game design. It does not help to grasp the subject, but it introduces
structured and abstract thinking to computer scientists.
Here, the focus of a tool has to be on creating small comprehensive game prototypes that show functionalities of the gameplay rather than polished graphics or
final games. Creating such game prototypes can also serve as a quality analysis for
tools, since the games are typical “first” game projects that many non-professional
game-programmers choose as a starting point for game development.
In conclusion, the educational advantages of computer games are plentiful and important benefits are:
• Computer games are great motivators for learning almost any subject
• Games always train skills, enforcing learning-by-doing4
• Collaboration is an essential part of game development
• Object-oriented design can be used to teach game design
This thesis will underline the importance of teaching game development as part
of computer science. Not only because it is a hands-on area of applied computer
science, but also because it positively enforces learning. The entertainment value
that has kept science separate will help those who embrace the subject to reach
much better results in the future.
3 This means producing a shrink-wrap PC game sold at computer stores. This would be a bottomless
pit of producing media assets (like sounds, graphics, text, and basically anything that is presented
to the player).
4 This is also true for developing games.
6
1 Introduction
1.3 Structure of This Thesis
After reading this introduction, one should be curious enough to read about the
basics of developing games that chapter 2 describes. The chapter gives a review of
game development and consequently subdivides it into different stages, which are
explained in more detail to highlight the iterative nature of the game development
process.
Subsequently, a comparison of game and software development follows, which will
explain the distinct features that make game development so interesting and complex. Eventually, the chapter ends with a discussion of different forms of prototypes
and their use in game development
Next, in chapter 3, the standard tools of the game industry are highlighted and
classified. The use of MIDDLEWARE and how it can be distinguished from a GAME
ENGINE both receive special consideration.
Following a discussion of the tools is the detailed explanation of the classification
made to differentiate between them. The final section describes the progress and
direction of game development, and the use of tools within game development.
This leads to an analysis of game development education, and the institutions that
offer it, in chapter 4. First, a definition clarifies the terms game design and game
development. An analysis of academic education opportunities for jobs in computer
game development follows. A comparison of different academic facilities and their
approaches towards a game-centred education shows different demands for different jobs.
Knowing the job positions the educational institutions would like their graduates
to fill, a description of the most important jobs in game development follows. The
subsequent paragraphs depict some experiences of teaching towards these profiles.
Next, the software used in game development education is portrayed. Consequently,
the requirements for a prototyping tool aimed at teaching game development are
gathered. Discussing possible solutions helps to sketch an outline of desired features of the prototyping software for the use in game development education. Finally, a software architecture based on the requirements is proposed.
Chapter 5 begins with an introduction towards the object-oriented environment
and programming language Squeak [Squeak05], where some historic details and
an outline of its functionalities lead to a discussion of the benefits of its different
interface-toolkits.
1.3 Structure of This Thesis
7
Next, an outline of implemented classes of the prototyping tool L E G A C Y5 is given. It
discusses thoughts on the interface, introduces details of the program library, and
shows how to extend or reuse them. Before finishing, the functionalities of LeGaCy
are explained with the help of a prototyping example.
Finally, the summary outlines all the previous work with a special look at the
achieved results in chapter 6. A discussion of the results follows with regard to the
academic context. Here, the advantages and disadvantages of Squeak for computer
game programming are evaluated. Personal remarks and future prospects conclude
the thesis.
5 The name stems from the developer’s first name, for details see glossary.
2 Basics of Game Development
You have to learn the rules of the game.
And then you have to play better than
anyone else.
(A LBER T E INSTEIN )
This chapter gives the basic foundation for further analysis in this thesis. First, the
iterative cycles of game development show how the industry works and how the
development groups interact. Section 2.1 outlines game development in stages of
conception, pre-production, prototyping, and full production.
This approach should be taken with the usual reserve. Other views of game development do exist, and they can be true as well. To understand how to teach game
development in academia, we need to structure and classify its parts to fully grasp
the process as a whole. A development pipeline is sketched in the first section and
can be seen completely in Figure B.2. The pipeline bases on ideas from Masuch,
Electronic Arts, and Fullerton et al. [Masuch05, ElectronicArts05, Fullerton04].
Section 2.2 discusses the differences that exist between game and software development. This is much of an outsider’s view, but these points are based on multiple
discussions with software developers in forums and conventions. The last part in
Section 2.3 talks about the meaning and different types of prototypes, which will
become important for the implementation later.
2.1 The Game Development Process
This section explains what game development consists of. It is important to identify
it as a pipeline of iterative processes, with each phase describing a certain process
or stage of development. In real life, the process is much more complex, but for a
theoretic overview, we can simplify its units. Every unit represents a stage of game
development.
9
10
2 Basics of Game Development
G Concept
The game idea is the initial spark that comes to mind and then matures into a more
complex combination of ideas. It defines the core theme of a game that is fleshed out
in the concept. Ideally, the first game ideas are independently developed. However, the
truth is that often potential funding mainly influences and depends on the theme of a
game.
F Forming an Idea
F Designing the Idea to get Funding
G Pre-Production
Small and less professional game development studios sometimes start directly from
here: Programming the prototype, as the idea and gameplay develops in their head.
However, this stage should really involve careful gameplay testing and exact planning.
F
F
F
F
Gameplay Prototyping
Pitching1 the Prototype
Planning the Production
Writing a Design Document
G Prototyping
Several prototypes are produced in a collaborative effort. The designers produce a framework, around which the game will be built. The prototypes are refined until they reach a
mature stage (e.g. a stable organisation of features) where full production starts.
F
F
F
F
F
F
Artwork and Sound Creation
Engineering Developers
Production and Management
Game Design
Tool Programming
Quality Assurance
G Full Production
This is the final development stage, before the game is finished and the gold master2 is
handed over to marketing and distribution. The focus is on reaching several milestones
and avoiding critical bugs.
F
F
F
F
Art Focus
Production Focus
Programming Focus
Level Design Focus
1 see glossary: P ITCH
2 A term for the completed game that will ship to stores.
2.1 The Game Development Process
11
The process of game development is usually
carried out in an iterative manner during all
of its phases [Mencher03, ElectronicArts05].
There is no common agreement or universally
valid definition of what the phases and their
content are. However, the formal description of
the iterative game design process as described
in [Fullerton04] (which can be seen in Figure 2.1) mix very well with the abstract outline given in [Masuch05] and the more informal
workflow sketched by [ElectronicArts05].
Figure B.2 in the Appendix B shows a workflow
diagram of the incremental development phases
that are subsequently discussed in more detail.
The pipeline has a strong focus on these layers of production that each contain iterative revisions of the ideas and prototypes generated
within them. The stages are described, however,
without any claim for completeness.
Figure 2.1: An outline of iterative development as sketched by
[Fullerton04].
Although the specific development processes may slightly vary, depending on budget, team-size, and the development platform, the basic principles should be understood. Things like iterative development cycles (the incremental refinement of the
game), collaborative, interdisciplinary teamwork and economy-focused production
constraints will be highlighted as essential parts of the following phases.
Concept Phase
Gathering Ideas
Money Acquisition
Theme
Funding
Pre-Production Phase
Figure 2.2: The concept phase is the start of every game project
12
2 Basics of Game Development
2.1.1 Concept
Getting a concept is the starting phase of game production. Here, game designers
form ideas and evaluate their potential, to decide whether they should spent time
and money on producing a core gameplay prototype out of it (see Figure 2.2).
Gathering Ideas
Some developers view producing ideas as the most enjoyable part in production,
and many players reach a stage at one time or another, where they have an idea for
a game. However, not all ideas are useful, and many are not worth investing time
and money in. Usually, teams produce game ideas in a group, which later develops
the game as well. Often, there is no need for hiring external people to create ideas.
Producing innovative ideas and special gameplay is a unique selling point, but also
a big risk that most publishers are not willing to take.
Nevertheless, the industry needs to find good ways to improve idea generation.
The authors Schnetzler [Schnetzler04] and de Bono [DeBono04] formalise idea
generation with engineering methods, which can be applied whenever the need for
specific ideas arises. De Bono gives several useful advice on techniques that let one
form ideas, give them a direction, and a way to filter and refine them towards a
needed goal [DeBono85].
After the idea is found, the designer has to identify her audience, and modify the
idea, so that it works with that audience. The intended audience is also included
when designing the first look and feel of the game. During the later design stages,
there will also be a point, where some of the game features possibly need to be cut
back. This is all part of iterative development, and the designer should not fear, but
know about the consequences when sketching out the game.
Funding
The transition from the initial game idea to the first game design is fuzzy, as some
development studios prefer to first sketch a rough concept, while others prefer a
formal design treatment that can then be made into a full design document.
However, this process does usually not involve a publisher, but is carried out independently by a developer. Only after the creation of a design document or a software
prototype, the game is pitched to a publisher to enter production planning. Before
the pitch, the developer has to plan ahead how to fund his resources well enough,
so pre-production will be reached. This might also include altering the theme and
setting of the game to be more attractive for a certain publisher portfolio. It is a sad
reality that games are usually developed towards publishers’ requirements rather
than focussing on players’ wishes3 .
2.1 The Game Development Process
13
2.1.2 Pre-Production
During pre-production, game designers commonly test ideas in prototyping cycles, before integrating them in the design document, and moving on to planning
the production from there. Two stages are possible (compare [Fullerton04] and
[Salen03]).
The first stage omits the use of computers and lets the game designer produce her
ideas with the help of pen and paper, up to a stage, where she presents the game
prototype to the development team. Eventually, an investor can also be a part of
this presentation, if the developer has a good connection to a publisher. Then, they
decide, if they want to develop the game further by writing a software prototype, or
they do not approve the idea. This way, the developer avoids producing dreadful
games at this early stage.
Management can use iterative checks on the state of a game to avoid draining
Pre-Production Phase
Playtesting / QA
Game Design Prototyping
Publisher
Physical Prototype
Financial Plan
Presentation
Software Prototype
Production Planning
Design Document
●
Story
●
Gameplay/Mechanics
●
Characters
●
Levels
●
●
●
●
●
Task Breakdown
Priorities
Milestones
Scheduling
Resource Management
Figure 2.3: The pre-production phase, where the game design document and the production plan merge to reach the actual prototype creation.
money and workforce into a product, which the team will never finish. This is
important, because a game has to make its expenses in the end. Therefore, publishers often take control of production at this stage (for an outline of this phase,
see Figure 2.3). They direct the ideas of the development team so that the product
will suit the market demands.
3 Nevertheless, publishers analyse the market to find out features that a majority of people want in
a game. This is the reason why many PC game titles focus on this mainstream gusto.
14
2 Basics of Game Development
The publishers’ focus on market demands and sales deadlines is also responsible
for a decrease of innovative games and much pressure, which is put on developers
for meeting the Christmas deadline4 . The developer community currently discusses
intellectual property thoroughly, and the International Game Developers Association (IGDA) hosted “Quality of Life”-panels at the Game Developers Conference
(GDC) in 2005.
Gameplay Prototyping
After the first sketch, the game designers start building a physical prototype of the
game, which they playtest with the development team. This is most often a “paper
or physical prototype” (see Figure 2.4) where cards, paper, dice, chips, or a board
serve as ingredients for creating a first playable game version.
This stage itself - like game development - should be iterative and aim at refining
(a) A physical game prototype example from
[Fullerton04].
(b) A “paper computer” prototype developed
at the University of Applied Sciences
Magdeburg-Stendal.
Figure 2.4: Physical gameplay prototypes created with not much more than pen and
paper.
the prototype, while it is played repeatedly. Later, the game designer starts writing
the game treatment, where she formally explains game mechanics and gameplay.
Subsequently, she should present this game to stakeholders and the development
team, always keeping the unique selling points in focus.
The next prototype is a software prototype, where a computer program roughly
shows the gameplay, usually using only placeholder or temporary graphics. Ideally,
4 The time around Christmas in December is where most video games are sold.
2.1 The Game Development Process
15
this software prototype is evaluated and playtested in iterative cycles, too. During
this process, it should be possible to save notes and ideas on issues occurring
unexpectedly.
Thus, an ideal software companion for prototyping would be a Wiki5 , which designers and playtesters can edit together. Out of the Wiki notes, creating a detailed
design document will advance much faster. Other software used for prototyping are
multimedia editors and non-professional game suites6 . The software prototype7 is
usually used with the design document to pitch the game to a publisher.
Design document
After having worked on these prototypes, the game has evolved into a mature stage,
where the game designer has fleshed out most features of the game. This is the
time to collect all the ideas and thoughts into a detailed document that can then be
used for building the full game during the production stage.
The design document outlines level-features, plot, gameplay characteristics, main
characters and the story embedded in the game. When questions about the game
occur later during the implementation, this reference should provide the answers
to most of them. It is also important that the layout of the design document is attractive, which means that additionally to the Wiki, a good layout-tool and a reliable
text processor should be used (e.g. Adobe InDesign, Microsoft Word, OpenOffice).
Production Plan
Usually, after building a software prototype and carving a design document, it is
time to specify the planning for further production. As stated before, a publisher
(or a producer) generally does this after seeing the game design prototype. Further
production especially needs much money, and with that comes the need to keep
the costs short.
Bigger development houses like Electronic Arts [ElectronicArts05], for example, plan
the production internally. This includes milestones to check on the progress of the
product and the constitution of the team. Therefore, the production team assigns
and schedules tasks. An outline of required resources is laid out, and the prototype
production starts subsequently.
Good tools for planning the production are project management tools, chat software,
5 Wiki is a collaborative software commonly used in the world wide web, which allows users to add
content to a website for exchanging information.
6 Examples of this are Macromedia Flash, Macromedia Director, and Game Maker, a few of which
will be discussed in section 3.3.
7 Often this is a prototype version enriched with polished graphics.
16
2 Basics of Game Development
asset managers, and trackers. Some examples of these are Microsoft Project, Wiki
Software, NXN Alienbrain, Perforce, Subversion, Miranda, Skype, PIM8 Software
like Mozilla Thunderbird/Sunbird or Microsoft Outlook.
Before Proceeding: A Word About Asset Management
Game developers refer to the media of the art and sound departments as asset files
or assets [Llopis04]. In contrast to the code files, which contain plain text, they
include binary data, which has a typically large byte-size. During the production
of a game, the amount of assets increases exponentially. Managing these large
amounts can become a serious problem, if the team does not use proper Software
Configuration Management (SCM) tools.
Especially, during the following phases of game development, these tools are much
needed. It is necessary to have a tool that organises the rapidly growing pile of
game-related data and helps to manage different versions of code files, too. It is of
major importance that development teams work with asset-management or SCM
tools, which integrate into their work environment and keep track of the changes
made to the files. These tools need to control multiple backups, updates, and the
exchange of binary files through a network. Today, asset management has become
an essential part of software development in general.
2.1.3 Prototyping
The prototyping phase starts the technical game production. The first game spec-
Prototyping Cycles Phase
Production
●
Coordination
●
Tasks and Milestones
●
Priorities
Tools
●
Level Creation
●
Effects
●
Control Animation
Engineering
●
Engine Developers
●
Game Mechanics
●
Scripting
●
System Conception
Game Design
●
Gameplay
●
Levels
●
Characters
●
Story
Sound
●
Sound Effects
Asset Management
Artwork
●
Models/Textures
●
Animations
●
Maps
Quality Assurance
●
Iterative Testing
Figure 2.5: The game iteratively evolves from the basic prototype to an early alpha stage.
Thick arrows indicate a stronger collaboration between the departments.
ifications, made in the design document and seen in the first software prototype,
8 Acronym for Personal Information Management.
2.1 The Game Development Process
17
need to be implemented and improved. According to the milestone plan, set up by
production, the game engine9 is programmed in-house or the programming team
needs to learn the middleware (see section 3.2 for further details on middleware).
Programmers begin building the tools, needed for level design and content creation.
The art and sound department start to produce media. The decision, whether to
use certain middleware (e.g. there is more available for AI and physics), is often
a resource question (depending on time and money). Nevertheless, this choice is
crucial for the quality of the final game. Figure 2.5 outlines the prototyping stage.
Artwork
Before prototyping, artists draw the concept art, which illustrates the look and feel
of the game (see Figure 2.6). The art department transfers the sketches into the
(a) Concept art by Mr. Green of Massive
Black for the game I CEWIND D ALE (Black Isle
Studios).
(b) Concept art by Nicolas Bouvier (aka Sparth)
for the game P RINCE OF P ERSIA : WARRIOR W ITHIN
(Ubisoft)
Figure 2.6: Concept art character portraits for two different computer games.
computer as either a three-dimensional textured model or a two-dimensional sprite
graphic10 . Sometimes, the texture artists take photos of animals or landscapes,
similar to the ones used for the game. These photos serve as a basis for texturing
9 Figure 3.1 in section 3.1 will explain the different parts of an engine.
10 A sprite graphic is a two-dimensional image or animation that is integrated into a larger scenery.
18
2 Basics of Game Development
the models later. Non-natural textures are often hand drawn within the computer.
The model department uses the images from the concept designs to create threedimensional models. Animators have to imagine, how those models will behave and
animate them, so they fit into the setting. Later, the challenge is to integrate the
models correctly into the game engine.
The art department and the concepts it produces are very important for helping
game designers create the mood for the game world. While gameplay is mainly
responsible for a great game experience, concept graphics are not less important
for developing a coherent game experience for the player. A good design document
and excellent concept art are the foundation of any successful game.
Production
The publisher sometimes adds producers to the development team to assure that
prototyping works and milestones are reached on time.
Game production consists of iterative cycles, so the stakeholders (often the publishers) can constantly view how much the development has progressed. For managing these iterative cycles, SCM
tools (like NXN Alienbrain, which
is shown in Figure 2.7) provide a
good way to save prototypes for
each milestone. In addition, the development team uses internal messaging software as a communicaFigure 2.7: Alienbrain Manager Client is an
tion channel. Tools for this task
application that tracks all changes made to the
are chat and Voice-Over-IP clients
files in a project and communicates those with
(like Skype, ICQ, Yahoo Messenger,
a central server for sharing them with internal
MSN Messenger, AOL Instant Mesand external team members.
senger, Jabber, etc.).
Tools
Tools are something that developers either source out (especially by acquiring middleware) or create internally in close connection with the production team. Some of
the tools even make it into the release version of the game or are later shipped with
an ADD - ON. Players use them for modding11 the original game.
11 Modding describes the manipulation or modification of the original game to add new features and
content.
2.1 The Game Development Process
19
Game Design
Game designers not only take responsibility for the gameplay, they work a lot on
the story as well. During prototyping they flesh out ideas for levels. They add NPCs
or other items to the game and give advice on what interface could be best for what
purpose. Depending on the type of game, the team develops, the tasks of the game
designer vary a bit here.
Quality Assurance
Playtesting and bug-tracking are all parts of quality assurance, usually occurring
towards the end of full game production just before the gold master. However, many
people argue that the quality of the final game is much higher, if quality assurance
becomes an essential part of game production during prototyping already. Errors in
gameplay are much easier to fix early in a project. The longer bug-fixing is delayed,
the more complicated it becomes.
It is not common practice everywhere yet, but the iterative testing during prototyping phases can also help to shorten the crunch time at the end of the project
essentially. Thus, providing better quality of life for the developers. Usability testing
provides a model to improve the game and broaden customer acceptance (see
[Memisoglu04]).
The more formalised quality assurance becomes, the better it will integrate as an
essential part of the game development pipeline. Iterative development demands
quality assurance to be a part of regular milestone. Playtesting sessions should be
conducted, among the development team as well as with external teams.
2.1.4 Full Production
Integrating all production tools and the game engine into the workflow of designers, artists, and programmers is an indicator of the blurred transition, where the
development team reaches a game’s full production phase. Team size increases,
and especially the engineering, art production, and level design departments are
stacked up with personnel. Figure 2.8 highlights this by outlining those departments with a broad border.
Some companies even manage to start localisation at this stage. Quality assurance
is an important part of this phase, especially, when a game reaches alpha state12 .
Some time at the end of beta testing, the developers declare the feature-freeze13 .
12 The normal software production features unstable alpha and beta states before reaching a stable
state.
13 This term means that no more features are being integrated into the game code.
20
2 Basics of Game Development
Most of the development resources are then part of quality assurance, and bug
fixing. Figure 2.8 shows the last part of the game development pipeline, which is
reached when finishing the full production stage.
Full Production Cycles Phase
Production
●
Coordination/Scheduling
●
Milestones
●
Priorities
Engineering
●
Engine Refinement
●
Game Mechanics
●
Scripting
●
System Refinement
Game/Level Design
●
Gameplay
●
Levels
●
Characters
●
Story
Localisation
●
Translation
Sound
●
Score Composition
●
Sound Effects
Quality Assurance
●
Iterative Testing
●
Bugtracking
Asset Management
Artwork
●
Models/Textures
●
Animations
●
Maps
Figure 2.8: The full production phase takes a game from alpha to gold master. Thick
box outlines emphasise the departments mainly involved. Most work is probably done
by the level designers and the quality assurance towards the end.
Quality assurance
In large game projects, this has become much more than just playtesting and
bug-fixing. Some of the best practices in the games industry are automated regression tests, where integrated debug tests generate reports on the stability of code
[IGDABusiness03]. Bug database tools most commonly used in the industry can be
found in Table B.5 in Appendix B. There are different ways of classifying software
defects, depending on the project stage, the tester experience and the severity of
the bug. Each quality assurance team also has an own classification of software
defects. Some exemplary defect types tracked by a game company are:
Z Feature Wish
This does not refer to a bug. It is a missing feature that is desirable at this point in
the game. The report of something like this only makes sense in the last development
stage, when the development team has reached feature freeze14 . If the quality assurance
department encounters an issue that is likely to bother the customer, a feature request
is posted.
Z Trivial/Nice-to-Have
Some minor problems or annoyances that happen during testing are put on record until
they either turn out to become bigger problems or the development team has enough
time left to fix those issues.
14 A state, where no more features are added to the game.
2.1 The Game Development Process
21
Z Errors in the Text
Often these are logical errors in the text leading to problems in solving a quest. Spelling
and grammatical mistakes are other forms of text-errors that permanently occur during
development.
Z Aesthetic Errors
Often graphical errors with little or no effect on gameplay fit this category. Graphical
bugs can be very annoying to players, but can often be fixed quickly by the developer.
Figure 2.9 shows some popular graphical bugs.
(a) A graphical bug in the PC game S ACRED de- (b) A bug in the graphics of the game VAMPIRE : T HE
veloped by Ascaron.
M ASQUERADE - B LOODLINES by Troika Games (Activision).
Figure 2.9: Several graphical software defects from different retail versions of computer
games.
Z Minor Error
Logical inconsistencies in missions or character development are referred to as minor
errors. This can also refer to animations not starting on a certain trigger or some essential
graphics missing. Minor programming errors, e.g. if a script works incorrectly or the
winning condition of a mission cannot be met, can become blockers as well.
Z Big Error
Depending on the influence an error has on gameplay, it can become a bigger error. Some
problems with the hitpoints being wrongfully applied to a character can lead to major
gameplay changes that can uncover new bugs of higher or lesser importance.
Z Program Crash
Severe code problems, like memory leaks, can cause the game to crash.
22
2 Basics of Game Development
Z Blocker
These are the most severe software defects that block further development or lead to
repeating crashes. Most of these issues can be fixed during regression testing. If this
kind of defect is discovered later, it can become harmful to the further development
schedule and needs to be fixed immediately.
While human testers most often are avid gamers that have a feeling for fun in
games, they also need to be disciplined. They need to track all the bugs constantly,
and describe clearly what caused them. They should discuss improvements about
gameplay issues as well.
Popular freeware tools, used for bug-tracking, are Bugzilla and Mantis (shown in
Figure 2.10), which also improve the communication between team members. Since
Figure 2.10: Mantis is a popular open-source bug-tracking tool used by the company
impara GmbH for identifying software defects.
those are open-source projects, many middleware projects are attached to them as
well. They extend the functionality, in terms of immediate notification applications
2.1 The Game Development Process
23
for Windows desktops, or simple communication libraries that work well with the
respective Application Programming Interface (API).
Like all game development, quality assurance should be done iteratively at all
milestone points during a game production. Most likely the developer will write a
test plan and check-list to ensure all-important issues get fixed properly. The best
quality assurance is usually done in the console game development area. There is
no possibility to PATCH the software later, and the game needs to apply to the high
quality standard of the console manufacturer.
Game/Level Design
In some projects, developing tools takes a long time until they reach a state, where
level designers can actually use them to create maps belonging to the game project.
Thus, especially in development teams that create their own engine, level design is
often done at the end of production. After the programmers finish the fundamental
software, the designers develop much content, especially the game maps. Level
designers can then work with the game design department to create missions,
levels, and maps.
Finishing Full Production
During full production, a game goes through several completion stages (which are
shown in Figure 2.11). The first being the alpha version, which is the version that is
Full Production
⇓
Alpha Version Playtesting
⇓
Beta Version Playtesting
⇓
Gold Master Release
⇓
Maintenance Service (Patches)
Figure 2.11: The last stages of Production
thoroughly playtested. This evolves into a beta version that is sometimes released
to the public or and larger number of playtesters to uncover bugs in the gameplay,
artificial intelligence, and network capabilities. Then the game reaches its release
state: gold master.
24
2 Basics of Game Development
Unfortunately, many PC games are under severe release-pressure so that the developers sometimes not test intensely enough and games are released with strong
defects. The developer has to keep the game alive by promptly posting patches on
the internet, so that players can fix most of the bugs in the game they bought.
This highlights a difference between regular software, which is usually maintained
by updates through the internet and games, which are fixed this way. In the
next section, more differences between the traditional software industry and game
development are discussed.
2.2 Traditional Software Development vs. Game Development
While most classical software development projects take place in clear hierarchical
structure with specific requirements specifications, developing a game and an
interaction that delivers fun and entertainment is much harder to grasp. Of course,
the game mechanics are built on algorithms as well, but the way that objects in
a game interact is more versatile than in regular shrink-wrap software. Table 2.1
Game Industry
Ý
Ý
Ý
Ý
Ý
Ý
Ý
Ý
Ý
Ý
Ý
Flat hierarchy structure
Interdisciplinary teams
Non-deferrable project schedule
Harder planning
Informal skill improvement
Contract work, similar to the movie industry
Constantly educate yourself
Latest technology is most important
Graphics are important
Younger age of employees
Multimedia integration
Traditional IT Industries
Ý
Ý
Ý
Ý
Ý
Ý
Ý
Ý
Ý
Ý
Ý
Traditional hierarchy structure
Advanced training
Stability is more important
User Interface matters less
Long lasting support for products
Classic contracts
Coders and software engineers
Graphics are less important
University degrees matter
Former education is important
Stricter working hours
Table 2.1: The table compares game and traditional software development by highlighting remarkable features of each industry. The three most important features are printed
in bold.
shows the differences between software and game development. The three most
important peculiarities of each industry are marked bold and will be discussed
first.
The flatter hierarchy in most game development studios is often caused by the
young age of most workers in this industry. This is good for innovation, and a
2.2 Traditional Software Development vs. Game Development
25
flexible development team can adjust to requirement changes quickly. However,this
might lead to problems with recognition of personal achievements, and some individuals might feel that they do not get enough credit for the work they do.
Traditional hierarchy structures in classical software companies allow for a clearer
career orientation, because a certain title clearly indicates the areas of responsibility a person has. Teams are more organised if competencies are clearly assigned
and a hierarchical structure is present. This structure can be exploited, nevertheless, when insider deals are made. Still, the clear hierarchy structure is a sign for
the maturity of the software company.
The interdisciplinary structure of development teams is not easy to manage, because most often many disciplines have their own distinguishing language that
they can understand among each other. If some of these disciplines work together,
they might encounter translation difficulties when trying to explain tasks to each
other.
Skilled managers are needed for transporting the vision, for example, from the
artist to the programmer and vice versa. These are often generalists that know the
languages of all the different disciplines and work like a glue that holds together
the different departments of specialists.
Most regular programmers at a software company have many possibilities for
receiving advanced training. Although they are educated regularly about new
software the company uses, they also have access to soft-skill seminars. Usually,
programmers have the opportunity to get educated about software engineering,
and go to workshops regularly to improve the way they write code. Generally, the
company even pays for all costs of this.
For game development studios, a deal with a publisher is often not very flexible.
The project schedule is non-deferrable, giving a very narrow time-frame for the
milestones and the final release of the gold master. This is often due to market
demands and seasonal sales peaks, with Christmas being the most prominent
example for this.
It unfortunately leads many developers to working overtime and demanding an
incredible workload of all employees towards the end of project. The period is
referred to as crunch time, and this has a very heavy effect on the quality of life of
most developers. In 2005, this has become a major issue being intensely discussed
in the industry, with the IGDA fighting for more rights of developers upfront. These
challenges are typical for an industry on the verge of growing-up.
Traditional software is also aimed at a certain release date, but here the stability of
the final product is much more important. This is especially true for certain indus-
26
2 Basics of Game Development
tries, where a leak in stability would have dreadful consequences (e.g. Aerospace,
Medicine). Since the resale price of this kind of specialised product is also very
high, the customer will be non-forgiving with fatal defects in the software.
The continuous improvement of graphics hardware and the addition of more
sophisticated middleware (especially game engines) demands from developers to
constantly adjust to new programs and improve the way they program. This makes
planning a final game much harder, because one has to predict the industry standard two or more years ahead (depending on the prognosed development time).
Most development studios have started thinking about the future, next-generation
development, and the need for qualified personnel. These are young people that
need experience urgently. Even though most game programming veterans are
self-trained professionals, they need to improve their skills continually to stay
up-to-date.
One needs to admit that in most traditional software the graphical appearance of
applications matters less. In the games business, neat graphics still sell the game,
although one should not forget about a unique idea and solid implementation of
a well-working AI, which many customers expect these days. The integration of
multimedia is essential for game developers, and they need to specialise on this
aspect.
For most game developers, it is important to go to networking conventions such
as IGDA meetings, games conventions and game developer conferences to educate
themselves about the state of the industry. Academics usually do research on
fields that are part of games as well and publicise their work and speak at those
conferences.
The contracts for game developers are similar to those in the movie business
(especially concerning upfront financing of projects). Before people can see the
game on the shelf, its development needs to be financed by a publisher. Because
this bears a high risk, it is also no wonder that external teams do outsourced work.
This includes (most often) prerendered intro movies, as well as having the game
assets made in a design studio. It also gives freelancers the possibility to work on a
project (as needed) and then move on to their next contract-work.
A last word on the advantages of the traditional IT industry: The working hours are
stricter and the academic degree of an applicant has a higher value than in the
games industry, which is very skill-focused. These values also mark the advance of
the traditional software industry.
By keeping a team within certain working-hours, all team-members can attend crucial meetings and faster communication is enforced. A young university graduate
2.3 Game Prototypes in Iterative Development
27
can bring much motivation to an entire team and will be more eager to challenge
old ways of development.
Maintaining a good balance of people with different skill-set is what makes a company successful. The game industry will soon accept this fact as well.
2.3 Game Prototypes in Iterative Development
Iterative software development needs architectures, which build on basic sketches
of their units. Prototypes are first models of a game for testing a certain design idea
or new development techniques.
In iterative development, every phase is accompanied by respective prototypes.
The prototypes evolve incrementally. Additionally, game developers differentiate between different kinds of prototypes. There are usually software prototypes as well
as physical prototypes, both are for testing the gameplay. [Rollings03b] more clearly
outlines the following types as part of the development process.
• Gameplay Prototypes
Most important prototypes for game developers. These will be discussed in the following.
Õ Physical Prototypes
Models made on a non-software basis serve for playtesting gameplay with paper,
cards, dice, and whatever can be used to model the ingredients of a game. Things
are rough sketches concentrating on functionality rather than aesthetics [Barry05].
Õ Software Prototypes
Software prototypes are programmed game environments for testing ideas. They
are kept separate from the regular game code, making them easy to remove if they
stop working.
• User Interface Prototypes
They are the second most important prototypes, because they are necessary for evaluating the interaction of the game with the player.
• Subsystem Prototypes
These are use for testing the interaction of the subsystems and their software interfaces to other systems. They are of minor importance for a gameplay discussion.
• Algorithm Prototypes
Usually, different algorithms are tested for certain situations. This is often done behind a software interface, so that the algorithm prototype does not affect the rest of
the game code.
28
2 Basics of Game Development
The latter two will not be discussed here, because this thesis focusses on gameplay
prototyping. A good source of information for the latter is [Rollings03, chap. 20].
Gameplay prototypes help to refine, test, and structure game ideas, as well as
software.
With them, developers define a rudimentary skeleton that can be referenced when
entering game production. [Rollings03, pp.617–623] also call it a “preproject investigation” and a “risk-reduction mechanism, allowing us to explore and evaluate
simulated risks before we have to tackle them for real (when our money, and our
development, is on the line) ”.
A game can be prototyped physically with almost anything that is capable of modelling the mechanics one wants to implement. This can be a simple set of toys,
cards, dice, role-playing games or board games.
All game designers interviewed in section A.2 state the importance of using board
games as an inspirational source. “Game design tools should speed the process of
making a prototype that you can play”, game designer Bruce Shelley explains in
subsection A.2.3, because playing prototypes helps to specify rules and features of
a game.
One fact needs to be understood and
[Rollings03, p. 618] clarify: Prototypes
“are not, under any circumstances, to
be used as a codebase for the game
development itself”, because “they do
not use the same development criteria
as games”. While the latter need efficient code and use most resources for
speed, prototypes just display the idea
of gameplay.
Thus, Rollings et. al. advise game deFigure 2.12: Prototype of the game “Good
velopers to use a different language
Bugs, Bad Bugs”, produced in Squeak by
students of the game design course at the
or tool for programming the prototype
Otto-von-Guericke University.
than for the final game [Rollings03].
Since most games are programmed in
low-level languages like C or Assembly, a fresh approach would be to use a highlevel language like S MALLTALK or even scripting languages like Lua, Python or
Ruby. An example of using the Smalltalk programming environment Squeak for
prototyping is shown in Figure 2.12.
2.4 Summary
29
All gameplay prototypes develop into more mature stages during game development. User interface prototypes also evolve constantly and are closest to gameplay
prototypes, because the way a user interacts with a game is thoroughly responsible
for the play experience she will feel [Pagulayan03, Nielsen05, Raskin00].
Interaction itself is the core of many games. Thus, interface prototypes evolve out of
gameplay prototypes and the other way round, leaving room for creative and fresh
ways of interacting with a game.
Summarising, the best solution for developing a game is to incrementally prototype
for every development phase. Each phase needs prototypes, especially gameplay
prototypes, because balancing gameplay is one the most important tasks in developing successful games. It is one of the essential selling points and the highest risk
for publishers.
For both financial and software-complexity issues, this should be done very early
in and then continually during game development. One of the major advantages of
a prototype is that it can be changed easily, and game programmers do not have
to adapt the final game, which is usually a complex structure. Keep in mind that
there are different kinds of prototypes, but that the gameplay prototype the key
player.
2.4 Summary
This chapter illustrated the stages of game development and outlined iterative development. The granularity for displaying the stages was rough, but we discussed
all units in brief and the reader should know, there are more detailed descriptions
of the development processes.
Also, Appendix B provides Figure B.2, which shows the complete game development
pipeline. Most important for this thesis is the prototyping part, which was discussed
in more detail in section 2.3. The different prototypes were sketched with a focus
on gameplay.
This discussion leads to the next chapter, where we will talk about the tools common in game development, and the ones used for prototyping.
3 Game Development Tools
We shape our tools and then our tools
shape us. We become what we behold.
(M ARSHALL M C L UHAN )
The basic principles discussed in this chapter are the purpose of tools used in game
development. A game engine is a collection of libraries that separates the game
code from the hardware. The boundary between middleware and game engines is
fuzzy. Thus, a game engine can utilise middleware and - depending on the scope of
the project - also be seen as middleware for a game.
To fully discuss game engines it is necessary to include a discussion of both games
middleware and associated tools. The transition from tools to middleware and on
to complete game engines is not clearly defined.
To clarify this, I will analyse these in terms of the level of programming involved.
Different complexities of interface including scripting, modding, and programming
are explained.
Consequently, game development tools are subdivided into different classes for
clarifying respective areas of application. The final section of this chapter shows
future trends for game development.
In Appendix B, section B.5 shows which developer type uses what tools (according
to CMP’s Game Career Guide [Sheerin04]). While many professional tools used for
creating graphics, audio, and code have become standardised in their use over the
years, an increasing amount of software is middleware.
3.1 More Than a Collection of Middleware: The Game Engine
Before one looks more closely at the parts of a game engine, game programming as
a whole needs to be explained. Generally, three different areas of programming can
be differentiated within game development [Llopis05]:
31
32
3 Game Development Tools
• General Game Programming
Everything directly related to the game: Triggering animations, scripting the AI entities, displaying the score or health bar.
• Game Engine Programming
Low-level programming with the main goal to build a layer of abstraction between
hardware and game code. It provides core functionality that all games commonly need.
• Tools Programming
Primarily developing tools for content creation. Those are often realised as plugins
for the common tools used by designers and artists of the game. This can include
developing custom middleware for a game.
A game is a large application, so this subdivision of programmers working on different levels of granularity is very important. This kind of granularity also applies
to a game engine and blurs the border towards the real game code and other middleware.
A good engine can be partially build on middleware for graphics and sound, for
example. Although, middleware for graphics is popular and has also many opensource projects attached to it, one needs to imagine an engine as software with
an architecture, much like the structure of different prototypes discussed in section 2.3. Figure 3.1 outlines the elements of this software.
Music & Sound
Engine
Main Loop
Timer
2d or 3d
Engine
Controls
User Interface
Network
Client Control
Software
Interface
Event
Handler
Physics
Graphics
Additional
Middleware
Net
Input
Hardware
User
Output
dynamic
game data
Simulation
Audio
Artificial Intelligence
Core Game Engine
static
game data
Figure 3.1: An overview of a game engine based on Masuch [Masuch05]. Simulation
tasks like Physics or AI tend to be handled by middleware these days.
3.1 More Than a Collection of Middleware: The Game Engine
33
First, one can see there are two forms of interface with the user: The output she
receives and the input she gives to the system. The user enters the input events
with a hardware device that is listened to by a software controller system.
Controlling events come into the game engine via this hardware abstraction or via
the network (for example, in a multiplayer game). The events are then sent to the
game engine, which hands them over to the user interface. This also controls visual and auditory feedback from the engine to the player. These parts are smaller
engines themselves: One of them being responsible for all types of audio processing
and the other one being the graphics engine.
Usually the engine itself or some common libraries like DirectX take care of dealing
with the hardware abstraction layer. The engine uses these libraries to access the
underlying operating system efficiently for communicating with the user. A client
controller unit handles all network events in the engine.
All units update and work with the main loop, where a timer and an event-handler
control the game data, which is separated into static and dynamic types. The units
should also have the possibility to integrate and communicate with other software
or extra middleware through a façade layer.
More modules (like AI, collision detection or a physics engine) can be a part of
the engine’s simulation system, or they are called externally. Here, the granularity
comes into play again, as each subsystem is itself complex software and could be a
collection of various middleware components.
The all-in-one approach that some game engines (especially commercial ones) follow
is contrary to the partition into separate middleware components. This is because
they are proprietary products, being used by a large development company that
can afford spending workforce on extending these toolsets. An independent developer has the possibility to choose tools she thinks fit best for the game type. The
trade-off is that she will never have the leading AI, graphics or simulation engine.
One has to distinguish between separated game genres, which have distinct requirements for their specific engine. An example how different genres affect the
graphics engine in a game engine is shown in Figure 3.2.
This not only affects the perspective from which one perceives the game world, but
also the needs for micromanagement functionality, a physics system and artificial
intelligence. Many of these factors have their origin in the first gameplay prototype,
and early prototyping in game design is making the choice for the tool-combination
much easier.
34
3 Game Development Tools
Requirement-Specific Genre Specialisation
of a Graphics Engine
T hree-Dimens ional (3D)
High-E nd 3D Graphic s
R egular 3D Graphic s
T wo-Dimens ional (2D)
High-E nd 2D Graphic s
L ow-E nd 2D Graphic s
Figure 3.2: Different game genres have different requirements for graphics, which can
be seen in this comparison of a high-end shooter on the left to a regular card game
application on the right.
Granularity is the key to complex game creation. In the end, it is the success of the
combination of independent units and their integration that is responsible for the
success of the product as a whole. The design of a game development tool needs to
take this observation into account.
3.2 General Definition of Middleware
Whether a game engine is a library that contains middleware or not, middleware
itself is clearly a part of game programming these days. It has been around for a
long time, and its description has always left a bit of room for interpretation of what
can be described as middleware.
The term middleware describes a software layer that mediates between a set of various application layers. It is most often an abstraction layer between an application
and the underlying operating system.
It was probably first used in 1968 by computer analyst d’Agapeyeff in a conference
about software engineering [Naur68]. Figure 3.3 illustrates his classic description
of middleware and a modern view on middleware.
Modern middleware focusses on application integration and the use of standards
like XML. Middleware game development focusses on building robust, integral, and
expandable software that covers the most important areas of game functionality.
Some essential areas of game development that utilise middleware are the following:
3.2 General Definition of Middleware
35
Game Application
Middleware
Other Applications
(or Hardware)
(a) Middleware
[Naur68]
defined
by
d’Agapeyeff
(b) Middleware shown as an abstraction
layer between other applications (or hardware) and the game application
Figure 3.3: Schematic views of middleware.
• Graphics
Most popular game middleware are graphics engines, these range from low-level libraries like Direct3D to very elaborate object-oriented SDKs like OGRE. Many graphics engines can be used for free, but they are not professionally supported and sometimes less reliable than professional products. Graphics engines will always remain
important components of a game engine.
• Physics
Physics engines have become the second-most important components in games next
to graphics. Where a decade ago the graphics system was what would sell the game,
the graphics today are expected to be of photorealistic quality. The physics engines
add another level of realism to the mix that is highly appreciated, especially among
hardcore gamers.
• Artificial Intelligence
A smart tactical AI is one of the key selling factors and rapidly gaining importance in
game development. Especially the possibility to control AI with scripting behaviours
is a feature that modern games need to offer.
• Networking
Network functionality is often custom-programmed for a respective game. However,
more advanced libraries that already offer a lot of functionality are becoming more
popular.
• Audio
Audio middleware is gaining importance, as features like surround sound are becoming the standard for video games. Popular audio middleware is the FMOD library and
OpenAL - the audio equivalent of OpenGL, which are both open-source.
36
3 Game Development Tools
• Video
For so-called “Cut-Scenes” that refer to pre-rendered video sequences played in a
game after finishing a stage, the industry standard tools are Bink and Smacker, which
allow for very smart high-quality video compression.
• Virtual Tree Generation
SpeedTree is the classic story of a middleware being custom-developed for a special
game requirement1 and then becoming an industry standard.
• Mobile Gaming
Mobile gaming is still in its infancy, but already offers many challenges for developers. Good mobile gaming middleware will become more popular, as mobile game
development grows in scope and complexity.
Middleware
Graphic s
Audio
●
●
●
Artific ial Intelligenc e
●
●
●
AI.implant
DirectIA S DK
S imB ionic
●
●
●
OGR E
Irrlicht
Genes is 3D
OpenGL
Direct3D
Networking
●
●
butterfly.net
Quazal
Game
Video
●
B ink & S macker
(R AD Game T ools )
P hys ic s
●
●
●
●
●
Havok
ODE
Novodex
Meqon
Ageia
Middleware
Vers ion Control
●
●
As s et Management
●
F MOD
Miles (R AD Game T ools )
S ens aura gameCODA
OpenAL
Other
●
●
●
S peedT ree (T ree Generation Middleware)
MAS S IV (MMOG Middleware)
Mobile Gaming Middleware
(a) Different flavours of middleware in game development.
Another Application
(b) Differentiation between middleware and asset management applications.
Figure 3.4: Examples for middleware applications and the differentiation of middleware
and production tools.
Subfigure 3.4(a) shows the most popular middleware applications for each area in
game development. So, with all the specific areas of game development having their
own middleware, a developer has to evaluate a tool for its usefulness for her specific
game project. An interesting account of such an evaluation for using the middleware SpeedTree in the game S PELLFORCE 2 can be found in [Koch05].
It is also important to make a distinction between middleware applications, libraries, and production tools. The latter manage game files, and therefore have
a close connection to the units of a game, but their functionality is not included in
the game.
1 In this case, for generating a realistic nature environment, featuring the fast creation of many
different trees.
3.2 General Definition of Middleware
37
They work on a more separate layer and organise the game code as well as the files
that come from external applications. This process is outlined in Subfigure 3.4(b).
Production tools will later be discussed in detail.
Overall, middleware is more and more used on game projects, because it has some
obvious benefits for developers.
• High-level abstraction
Middleware allows developers to define the level of granularity they work on by abstracting low-level functionality.
• Interfaces allow for mixing custom middleware
With common interfaces defined between middleware applications and game engines,
it becomes easier to integrate and combine custom tools for special game-specific
requirements.
• Middleware speeds up game production
With the growing number of middleware libraries, developers do not have to reinvent
the wheel every time they start a project, and thus, development can be speed up.
For next-generation game projects, a huge amount of complexity can be removed with
middleware.
Nevertheless, not all tools are necessary for all areas. A pure multiplayer game
has to worry less about artificial intelligence, so it is better to consider a good
networking middleware solution and program the AI in-house. For every game, the
requirements specify which middleware fits best for the development tasks.
It is a question of resources and ambition, if a team learns to use one application
over many game projects or starts over with programming own middleware and
game engine libraries every time they want to create a new game2 .
It has certainly been reasonable to program all the necessary tools and libraries
that build the foundation for the game code in-house for the last decades. However,
with growing project complexity, a good approach is to concentrate on making the
game and using good, proven middleware as a foundation for this.
While most commercial game engines (or SDKs) like the Trinigy Vision SDK come
with a set of tools for exchange or better integration of content into the game, the
comprehensiveness of these sets differ.
2 A good example for this might be the following: Even though almost everybody is able to cook,
or at least to fix a meal, many people prefer eating in restaurants. This is because of the service
and the low effort, compared with buying all the ingredients and fixing the meal themselves. Much
the same is true for middleware, which offers a certain service that takes tasks off the developers’
shoulders.
38
3 Game Development Tools
RenderWare Studio and Unreal Engine 3 offer a tools suite for sound, artificial
intelligence, animation, networking, physics, and graphics.
Others prefer to underline their rendering engine, and include interfaces to industry standard applications covering the other areas. The following section will
analyse game development suites and subdivide them into classes.
3.3 Game Development Suites
One commonly refers to game development suites as a complete package, including all tools necessary for producing a commercially successful game. Less complex
tools are, however, more common in the non-professional game development sector.
Having talked about game engines and middleware in general, we will now look at
Game Development Suites
Professional
●
●
●
●
Gamebryo
RenderWare Studio
Unreal Engine 3
Trinigy Vision SDK
Non-Professional
●
●
●
●
●
●
Game Maker
3D Game Studio
Reality Factory
Adventure Game Studio
Visionaire
RPG Maker XP
Multimedia Authoring Environments
●
●
Macromedia Flash
Macromedia Director
Figure 3.5: Professional and hobby game development suites, multimedia authoring
environments.
game tools, which include all of the aforementioned entities. In terms of granularity, these are the coarsest tools. Nevertheless, every tool collection can be broken
down into its subparts, even though this feature is only required by professional
developers. Non-professional users prefer easy-to-learn tools.
This makes simple toolsets common in the non-professional development area.
Here, most people have little or no programming experience, but they want to find
a way to get started with creating games. For them, the process of visually creating
a game with the use of simple scripts or assigning behaviours to objects is the preferred choice.
3.3 Game Development Suites
39
The previous chapter outlined that some of these suites (shown in Figure 3.5) make
prototyping easy, because prototypes need to be altered quickly when new ideas are
tested.
Consequently, the complex suites3 can be organised into three classes:
• Professional Development Suites
This term refers to toolsets used in the industry to create commercial games. Most of
these tools are the industry-standard for certain genre types and provide all kinds of
libraries, plugins, and editing tools for developers, ranging from the programmer to
the artist.
• Non-Professional Game Creation Tools
These are game studio applications that make creating a game easy for lessexperienced users. Often, they feature an easy-to-learn-and-master interface providing wizards and help for creating core game functionality.
• Multimedia Authoring Environments
These tools are used by graphical designers for creating multimedia presentations,
but are often complex enough to be utilised for creating games as well.
Figure B.1 gives an extra outline of asset management, middleware, and game
development suites. The following list takes a representative tool from each class.
Especially interesting are the first two tools, Macromedia Flash 4 and Game Maker,
because they are both used as prototyping tools in game projects, and they provide
a good abstraction for non-professional, layman users.
3.3.1 Macromedia Flash
Macromedia Flash is very popular among web designers. It is broadly used for animations, sound, and video on the web, because of its very small vector file format.
It combines the ease of use with an intuitive interface, a small output file format,
and a scripting language that becomes more powerful with every new version of the
program. The GUI of Flash and a game developed in Flash are shown in Figure 3.6.
The advantages of Flash are its easy-to-learn interface, the simplicity and yet
extendibility of the scripting language “ActionScript”, and the possibility to render
the content into a single executable file.
Its disadvantages include the lack of power to do graphically advanced games that
need a lot of computing strength for complex graphics and AI. Flash games are
3 The word is here used to describe a game development toolset.
4 Often, Macromedia Director is equally used, but not discussed here in detail.
40
3 Game Development Tools
(a) The GUI of Macromedia Flash MX
(b) The Game G IRLS I NC . T EAM UP developed by
Large Animal Games.
Figure 3.6: The Macromedia Flash MX interface and a screenshot of a casual game
developed with it.
always identifiable as Flash games, which is also due to the vector format used
[Makar03].
Many mini games on the internet are created with the help of Flash, and the
“cuteness” of the vector graphics add to their charm for casual gamers. An example
of such a mini game is displayed in Subfigure 3.6(b).
More powerful, yet a little bit more complex than Macromedia Flash is the program
Macromedia Director from the same company. It allows digital, multimedia, content
authoring and has a much higher evolved scripting language. Some commercial
games have been programmed completely in Macromedia Director, it has especially
been used for casual games, where the focus is not on graphics but on gameplay.
3.3.2 Game Maker
Game Maker is an impressive educational game development tool (shown in
Figure 3.7), which was written by Mark Overmars at Utrecht University in the
Netherlands. Due to its ease of use and the fact that it is freeware, it has grown a
huge, non-professional game development community.
Game Maker defines the game world by dividing it into one or more rooms that
can contain objects. The objects are a representation for the entities in each game
created with Game Maker. The rooms can have background graphics attached to
them. Likewise objects can have a graphical sprite representation that changes
when an event occurs. Sounds are also defined separately and can be attached to
behaviours in objects.
3.3 Game Development Suites
(a) Screenshot of Game Maker’s GUI.
41
(b) A game developed in Game Maker.
Figure 3.7: The GUI of Game Maker and a game developed with it.
It also has its own scripting language called GML. It extends Game Maker with
much functionality, especially for using advanced graphics features that should be
hidden from less experienced users. Thus, GML provides a level of scalability for
different users of Game Maker.
Yet more important are the interesting features of its interface. It lets one define
behaviours quite easily and uses interesting syntax in terms of object-orientation.
However, the functionality comes to its limits, when one wants to produce a complex
game with advanced features, such as three-dimensional photorealistic real-time
graphics or complex triggering mechanisms and real-time sound processing.
3.3.3 Vision SDK
The German company Trinigy offers industry proven middleware for developing
games. A part of the game engine and a game currently in development with the
Vision SDK are shown in Figure 3.8.
The game engine provides a set of tools called the Vision SDK. This toolset offers
the granularity for professional game developers by providing tools for different
developer types. One part is definitely the programming, which is done using the
provided libraries and samples that the Vision SDK has to offer.
The artists on the other hand have many tools on their hands to edit a preview
version of their models and shaders, directly in their favourite modelling tool5 .
5 Using an in-game preview function that is offered for the industry standard tools Autodesk 3dsmax
and Alias Maya.
42
3 Game Development Tools
(a) vEditXP is a scene creation tool that easily integrates content created in other modelling packages.
(b) D ESPERADOS 2 is a game currently in development with Trinigy’s Vision SDK by Spellbound
Studios.
Figure 3.8: A tool from the Vision SDK and a screenshot of game that uses the game
engine.
3.3.4 Important Aspects of Development Tools
Noel Llopis, a regular contributor of many programming articles in the Game Programming Gems series and the Game Developer Magazine, concisely sums up what
programming languages are:
“You should always choose the right tool for the job, and a programming
language is just that, a tool. Apart from a few physical limitations, you
can almost get the job done with any language you want. However, if you
choose the most appropriate language, the development will go much
smoother and you will get done faster.” ([Llopis05b, p.183])
Thus, programming and scripting will be discussed in the following, as well as other
ways to modify and create games.
Programming vs. Scripting
Game development has proven to be rather complex in its scope. However, inexperienced developers always search for ways to get acquainted with the process of
turning their idea into a game.
Programming languages tend to be static, harder to learn, and weakly typed. The
latter means that they give the user much power by allowing her to declare an object
type the way she thinks fits best. This can cause compiler errors, but even worse,
such wrong typing can remain hidden and cause a program to work incorrectly.
The dynamical approach of scripting languages6 is to allow more flexibility by giving
6 And high-level programming languages.
3.3 Game Development Suites
43
a variety of programming layers. Most of them are strongly typed due to their architecture. The garbage collection takes care of wrong memory allocations, but might
also cause performance to go down.
However, through their granularity, scripting languages are usable on many levels.
The increase of hardware performance and the advantage of faster learning, when
working on various layers of complexity, is a crucial advantage, which will cause
scripting languages to be used mainly in the future. The better a scripting language
is, the closer it can set its lowest layer to a low-level programming language.
Modding Games
Most people have their first encounter with game development in the form of making
a modification for their favourite game, and for this, not just modelling, texturing,
and a sense of architecture are required.
To tell a story in this medium, interaction needs to be created, and that is most
often done with the help of simple scripting languages like Lua, Tcl/Tk or Python
in a modding tool, which are much easier to learn for novices compared to low-level
programming languages.
This is a very popular way to start creating games for non-professional developers,
because most games already ship with an editing tool, which allows altering its
content. Nevertheless, this is only one way to generate new content and ideas for
an existing game. Thus, it is not possible to generate a completely new game from
scratch, because most of the innermost mechanics and the engine of a game cannot
be altered.
Production Tools
As stated before, the process of managing assets and keeping track of different version numbers is essential for an iterative workflow in game development. An asset
management suite like NXN’s Alienbrain [NXN05] allows its users not only to check
out new versions of files with a commentary, but also to work collaborative on the
same files, and merge the changes later.
For eventual conflicts or to alert team members fast, there is an internal messaging
function available in these systems. All in all, the control of files and the possibility to receive a most recent version of all files in one place (even if they were
created around the globe) makes development more comfortable and for the project
managers easier to monitor.
44
3 Game Development Tools
3.4 Defining Classes for Game Development Tools
No classification of game development toolsets is commonly known or has been
published before, and because of the wide varieties among individual tools, this
seems like a complicated effort. Nevertheless, this thesis will try to classify the
different tools by qualities, to get a sketch of the peculiarities that separate professional from non-professional tools. It also helps to map the multimedia development
suites to the pure game development tools.
First, the attributes with which this classification is made for the different tools are
discussed. Then, the attributes will be rated on their applicability within a toolset
range.
Attributes of the Game Development Suites
One can try to identify qualities of game development packages and use those to
categorise the tools. Before the tools are classified in three groups depending on the
people that use them most: professional, non-professional, or multimedia developers.
The following qualities present a cumulative overview over the most important features, without any claim for completeness. They were chosen with special regard to
education, highlighting qualities that are common for software used in university
courses.
• Effectiveness
This term indicates the success in achieving a specified goal. It concerns only the
final outcome of a production, not involving any resources spent for accomplishing it.
A development tool is effective, if it is capable of delivering professional results.
• Efficiency
In contrast to effectiveness, efficiency describes producing results without redundant
effort, minimizing wastage of resources. Efficient tools have low work overhead for
users by defining clear interfaces to most necessary functions.
• Learning Curve
The relation between work efficiency and user experience is described by the learning
curve. The steeper a learning curve is, the more efficient a user will become in working
with a tool, even after a short time-span. Gentle learning curves are not optimal,
because they indicate that the program will also challenge experienced users. Ideally,
a program should have a steeply falling learning curve, which means that it is fast to
master.
3.4 Defining Classes for Game Development Tools
45
• Satisfactory Results
The results produced by the development tools analysed here are computer games.
Whether a computer game is satisfactory for the developer, is hard to grasp, depending
largely on her ambitions and resources. Thus, evaluating this is very fuzzy and highly
subjective.
• Scalability
Educational tools need to hide complexity from inexperienced users, but should ideally allow more experienced users to modify core modules. Students tend to learn how
to use a tool fast, which means that it is of major importance that a tool scales well
for different demands of users.
• Creativity
Creativity highlights the possibilities of a tool to aid in producing a wide variety of
output. The less limits a tool puts on the developer, the more creative she can be.
Good Prototypes demand for high-levels of creativity to play around with ideas and
create innovative gameplay.
• Low-level Tuning
This refers to scalability in a way. The less restricted and hidden the source code of a
tool is and the better its documentation, the more possibilities there are for tuning lowlevel functionality. This provides means for optimising final gameplay and is necessary
for professional tools that aim at producing shrink-wrap software products.
• Quality of Graphics & Animation
This links to satisfactory results of the final game. The better the game graphics are
and the more fluent the animations work, the greater is the overall visual presentation.
Humans process visual information best, so this is an important quality of games.
• Sound Capabilities
Often neglected is the possibility for processing and altering the sound of a game. The
more support a tool gives in creating, editing, mixing, and altering sounds, the more
remarkable it is.
• Flexibility
Flexible tools can be used for a many different tasks. They are generalised utilities,
often accumulating special tools into a common environment.
• Extensibility
The ability to extend to functionality of a tool becomes important, if requirements
change. This links to flexibility. Extensible tools always provide a high level of flexibility.
46
3 Game Development Tools
Of course, this classification only presents a subjective view on this topic. All of
the classes are rated according to my own experience with the tools, additionally
including the records and tests available in professional journals like Game Developer Magazine.
Table 3.1 presents the ratings for each of the aforementioned attributes. The ratings
range from much agreement (⊕⊕) to no opinion or not enough experience () to not
finding this feature () in the respective tool.
Using this knowledge will serve as a basis, when gathering requirements for an educational tool later, because even though these attributes classify game development
suites, they also help in finding the best features of each tool.
Q UALITIES
C LASSES
Professional
Non-Professional
Multimedia Environments
Effectiveness
⊕⊕
⊕
⊕⊕
Efficiency
⊕⊕
⊕
Learning Curve
⊕
⊕
⊕⊕
⊕
Scalability
⊕
Creativity
⊕
⊕⊕
Low-level tuning
⊕⊕
Graphics & Animation
⊕⊕
⊕
Sound
⊕⊕
⊕
⊕
Flexibility
⊕⊕
⊕
⊕
Extensibility
⊕⊕
Satisfactory
sults
Re-
Table 3.1: Attributes of the different classes of game development suites.
3.5 Progress and Future Game Development Strategies
Game development at a professional level has reached a stage, where it is much too
complex to adjust a recent title without a team of enthusiastic and skilled people
[Sheffield05]. Moreover, with the arrival of next generation consoles and multiprocessor hardware, programming games becomes a huge venture, even for professional companies. Abstraction from hardware is an important trend that is widely
followed in software development and will become more eminent in game development.
3.5 Progress and Future Game Development Strategies
47
While the abstraction from the original hardware makes code more portable among
systems (since only the low-level interpreters need to be adjusted), it also costs
performance. With games always being the most demanding applications on most
computers, this is hardly appreciated by developers.
Nevertheless, when wanting to keep project complexities to a manageable size, one
has to use this abstraction one time or the other. Although there will still be games
that get the most out of hardware (and take either a long time or a big budget to
develop), the tendency in programming is shifting towards better abstraction.
One of the major players here is Microsoft with its introduction of the C# programming language that follows the principles of Java, which already used a virtual
machine and interpreted byte-code. The newer versions are also optimised for gaming SDKs like DirectX7 to speed up programming and keep complexity low.
As in one of the interviews in the subsection A.2.4, David A. Smith states that
programming essentially is a translation task, and the easier the translation is, the
faster the development will be. David A. Smith’s most recent project is the C ROQUET
tool, which also aims at a high abstraction of programming for three-dimensional
and collaborative worlds. The systems runs in a virtual machine and is written completely in Squeak, a Smalltalk dialect.
Microsoft’s XNA (Xbox/DirectX New generation Architecture) is another interesting
attempt to build a platform that combines different APIs for game development and
creates a common framework for the Xbox console as well as the next-generation
Windows. This technology has the potential to make the transportation of game
from the PC to the console extremely easy. This will benefit the Xbox, as most PC
games created with XNA then could have the ability to run on the console as well.
Coming back to game development, the distinction between non-professional and
professional game development will drift apart even more from now on. Creating
small - so-called - puzzle and casual games has become more popular.
This means, the people, which have before tried to change professional games are
searching for ways to easily put their idea into a game with the help of a tool that
is not too complex, and yet, interesting and extensible enough to be used in bigger
projects as well.
To make modding of big games more accessible for non-professional users, attempts
are made to simplify game creation tools wherever possible. The Unreal Engine provides a good set of tools to do things in a visual way, which had to be done in code
before.
7 DirectX is Microsoft’s graphics and game programming library.
48
3 Game Development Tools
(a) UnrealCascade, a visual particle system editor.
(b) Unreal Kismet Visual Scripting Editor
(c) Unreal AnimTree Editor edits a tree of animation nodes.
(d) Unreal Matinee Animation System
(e) UnrealEd Framework integrating the above tools
Figure 3.9: Unreal Engine 3 - Some of the editor components [Epic05].
3.6 Summary
49
This is not only true for the visual scripting editor “Kismet”, but also for the animation tool “Matinee”. Almost all tools of this new engine put high focus on visual
editing.
However, using the Unreal Engine will only bring out Unreal-Scenarios, fit for game
requirements similar to those of the Unreal games, most likely first-person shooter
games. This is what the engine was optimised for. Thus, it diminishes the flexibility
of this tool towards creation of games from other genres.
The trend of the future clearly goes towards visual game creation (see Figure 3.9),
just to make the tasks of programming more accessible for non-programmers that
can later use the gained knowledge to work independently without the help of the
wizards. This also aims at creative people, who have interesting ideas on program
design, but have been kept away from the task, because of its complexity and the
requirement of programming skills.
3.6 Summary
This chapter discussed the common development tools used for creating commercial games. First, the libraries that help in separating the game specific code from
the hardware-abstraction code were introduced, leading to the definition of a game
engine.
After looking a the general setup of a game engine, middleware applications and
their main fields of use in games were highlighted, clearly stating the benefits of
middleware usage.
Game development toolsets were described as being the next level in granularity,
using several middleware libraries and own game engines. Non-professional game
tools and multimedia authoring environments were introduced with some prominent examples of each area. This lead to an explanation of attributes assigned to
game development tools to help classifying them.
Finally, an outlook towards future game development strategies was given. The
knowledge from chapter 2 and 3 builds the foundation to develop a concept for an
educational prototyping tool in the next chapter.
4 Developing a Concept for an Educational
Prototyping Tool
Whoever wants to understand much,
must play much.
(G OTTFRIED B ENN )
In this chapter, the knowledge gained about the development process and the usability of certain tools and middleware in the previous chapter will be supplemented
with an expedient analysis of the academic situation concerning teaching game
development. Therefore, training available for aspiring game developers is classified
and then described with some examples.
Even though the development community is often comparing our local situation
here in Germany with the United States, the problem is globally extendible and not
unique to a certain market or academic landscape. For developing an educational
concept, the necessities of the games industry are addressed by analysing the four
most prominent jobs in the development process.
Next up is a look at tools that are used within professional and academic game
development, which ultimately leads to a concept for an educational tool that fits
in the game development pipeline at an early prototyping stage. Finally, further
details of the architecture are discussed, giving the basis for the implementation
discussed in the next chapter.
4.1 Game design vs. Game development
While still refining a “critical language” for games [Costikyan02], developers use
some terms that need to be defined for someone not deeply familiar with game
development. One of the most important distinctions has to be made between game
design and game development. Game design is the “creative process of developing
a game concept, its core elements and structure” [Masuch04b].
51
52
4 Developing a Concept for an Educational Prototyping Tool
[Rollings03b] additionally propose a “litmus test” for good game design by assuring
the following aspects within a game: originality, coherency, interactivity, interest,
and fun. Concentration on these aspects is an essential part of game design as well.
Thus, game design builds a foundation for all further game development, which is
described in [Masuch04b] as covering “game design, game programming and all
other production related topics”.
A large portion of game development is the practical implementation - the programming part - and the creation of graphics, animation, music, and sound, while
game design is a lot more concerned with the conceptual design and high-level
composition of the game mechanisms and rules. Ideally, if the game design is very
good, it makes development a more effective process [Rollings03b].
4.2 Adequate Education for Jobs in Game Development
Many people currently working in game development companies were never actually trained for their jobs. They have acquired their skills in other areas that are
related to their professions in game development.
However, the professional situation is changing slowly as the industry matures. In
the United States, there are now many schools and universities, offering education
with a focus on computer game development.
They have faced similar challenges in setting up an adequate curriculum or game
specific courses [Parberry05, Koelling96]. At “traditional” universities, this subject
is difficult to approach and the faculty is more biassed against it, while in private
schools there is a lot of movement towards a professional education focused on
games.
There are also schools with a focus on other areas that are using game development to teach their students interdisciplinary team-work and other skills
[Yu02, Claypool05]. The emphasis usually lies on the aspects of game development
that a department has specialised in, though other parts are also taught to give an
insight into the game development process as a whole.
The Table 4.1 lists the different types of training institutions that provide training
that can be used for developing games. Not all of them are solely focused on game
production, but they all provide specialisation towards one area of game development.
First, one has to mention professional institutions that offer vocational training.
The focus of education in these schools is tailored specifically for the needs of
4.2 Adequate Education for Jobs in Game Development
Type of School
Teaching Emphasis
Professional
Private
Training
School (e.g. Games
Academy, DigiPen)
Applications, Industry standard tools
and
programming
languages
University
(e.g.
Otto-von-Guericke
University,
University of North
Texas)
Theory and concepts
behind games as
well as collaboration,
programming,
and
project management
Liberal Arts Facility (e.g. Burg
Giebichenstein,
New Jersey City
University)
Classic art and design. Drawing, painting, computer image
manipulation
Business
(e.g. BITS)
School
Project Management,
Leadership, financial
issues and game design
Writing School (e.g.
Hochschule
der
Medien)
Writing,
narration,
story creation
53
Target Job Profiles
Tools Used
N Game Programmer
N Game Artist/ Animator
N Game/Level
Designer
. Alias Maya
. Virtools
. Nebula SDK
N
N
N
N
Game Designer
Producer
Technical Director
Project Manager
. Autodesk 3ds max
. Squeak
/ iEngine
/ Tweak
/ C ROQUET
. Shark 3d
. Java
N
N
N
N
Concept Artist
2d Artist
3d Artist
Level designer
.
.
.
.
N
N
N
N
Publishing Team
Producer
Management
Consulting
. Microsoft Office
. Microsoft Project
. Entity-RelationshipManagement
N Storywriter
N Dialogue Editor
Paint
Pencils
Canvas
(Adobe Photoshop)
. Microsoft Office
. Final Draft
Table 4.1: Different types of game schools and their focusses
the industry. The curricula are tight and result-driven, often with people from the
industry being the teachers.
On the other hand, this special training is expensive (due to the high quality of
the workspaces and the cost of professional personnel). Additionally, because the
training is so specific, the certificate is only accepted in the target industry1 .
A good example for a professional school with education solely focused on game
development is the Games Academy in Berlin, Germany. Their curriculum includes
courses in game programming, game art/animation and game design. The latter
enforces a decision of the student after two semesters whether she wants to specialise in game art/animation or 3d programming.
1 In this case, the games industry
54
4 Developing a Concept for an Educational Prototyping Tool
The target job profiles are those of a game programmer, designer or artist in the
German industry, with a strong focus on the tools taught at the academy. The
course on game art and animation at the Games Academy can be seen in Subfigure 4.1(a).
A completely different approach to education in game development is what many
universities offer. In contrast to the United States, there is no university degree
“Bachelor (or Master) of Science in Game Development” at German universities.
There are many institutes at universities already focussing on game development
and offering a game-related focus as part of classic computer science for example.
Therefore, the university courses are more centred towards the concepts and mech-
(a) A game art and animation course taught at
the Games Academy Berlin.
(b) A game programming course taught at the
Otto-von-Guericke University Magdeburg.
Figure 4.1: Different education for future game developers at the Otto-von-Guericke
University Magdeburg and the Games Academy Berlin.
anisms behind games and the project-based management of their development.
While other schools are certainly more practical, there is no equivalent of the
theoretical analysis of games at universities.
An example of this is the Otto-von-Guericke-University of Magdeburg, where a
special research group at the department of simulation and graphics teaches game
development courses. These courses supplement the studies of computational
visualists and computer scientists (Subfigure 4.1(b) shows a game programming
course).
They offer a thorough specialisation in game development: A series of lectures
ranging from an introductory course that teaches techniques of and reflection
on games, to specialised courses that deepen students’ knowledge of real-time
techniques and introduce them to game engine programming.
More information on the structure of these courses can be found in [Masuch04b].
4.3 Teaching Focussed on Developer Tasks
55
The target job profiles are: Producer, game design lead or programming lead. These
vocations are not the only possibilities for students, since the course also covers
classic computer science, which opens doors to many other industries.
Another educational facility is the liberal arts college, which distinguishes itself
from the aforementioned by concentrating on just one aspect of game development:
Graphical Art. These colleges teach painting, drawing, graphics, and sometimes
even communication and media design. Most of these schools not necessarily aim
at the education of game artists, but this education allows the alumni to take any
job that has to do with the creation of art2 .
While they often make very good concept artists, their talent will also be appreciated as texture, interface or (depending on their knowledge) animation artists. An
example of a German liberal arts college is the Burg Giebichenstein in Halle, which
is centred around classical art, as well as research in virtual reality.
Other facilities, like business schools and writing schools, do not specifically educate game development, but offer courses that teach skills necessary for some
development groups. Obviously, writing schools train storywriters, and business
schools are geared towards the business side of game production.
Subsequently, business schools offer education concerned with game publishing.
The focus is on leadership, project management, financial planning and game production. An example of a German business school, focussing on game production,
is the BITS in Iserlohn. Having discussed the higher education school types, let’s
proceed to the real game projects and what types of developers have to handle what
type of task.
4.3 Teaching Focussed on Developer Tasks
In chapter 2, the game development process was analysed and the different areas of
development were shown. In [Bethke03], an overview of developer jobs is given with
a rough division between design, programming, art, audio, management, quality
assurance, and business, with the latter two not explicitly being part of the production, and often handled externally (e.g. by the publisher).
If we investigate the creation of a specific education for game developers, we have to
consider the very different job profiles of the industry, each requiring a particular
education. Four special developer types will be described in the following.
2 Seldom an artist focusses on sound creation and even though there are special schools for musical
education, the education for sound engineers is more specialised in private schools allowing them
to work in many industries.
56
4 Developing a Concept for an Educational Prototyping Tool
4.3.1 Game Designer
One of the most adored jobs is that of the game designer. But there are common
misconceptions about what to find behind this terminology. As was pointed out
before in section 4.1 the term is easily mixed up and hard to define. A possible
definition could be: A visionary that knows the tools and has the skills to craft a
game from an idea.
While game designers need to be highly creative, they also need to have a thorough
understanding of mathematics, art, interactive storytelling, and the whole game
production in general. Ideally, a lead game designer also adds team and project
management skills to that.
Not all game designers specialise in the same things, some are more focussed on
(a) K ATAMARI D AMACY has won the award
for “Excellence in Game Design” at the 2005
Game Developers Choice Awards.
(b) Keita Takahashi is the game
designer of K ATAMARI D AMACY.
Figure 4.2: The game with the best game design in 2005 was K ATAMARI D AMACY, making his game designer Keita Takahashi popular over night.
story creation, others prefer level/world building, while some only concentrate on
the game mechanisms. The game design team, however, is at the heart of the game
- without them, all other developers are not doing game development, but merely
software or art creation.
The game designer has to do most work in the pre-production phase and during
game balancing in full production. During all phases of production, she is critically
involved when decision on gameplay issues are made.
4.3 Teaching Focussed on Developer Tasks
57
4.3.2 Producer
The producer is usually externally added to the development team by a publisher.
She manages and coordinates the whole development process. Often, the producer
acts as a gateway between the publisher and the developer.
She works very closely with the development leads, but is not part of the development team. While a project lead has to cope with crises within the team,
the producer watches development from the outside, motivates the project lead
and mediates between her and the publisher. Many areas of coordination, control and communication fall under the responsibility of a producer. She plans
marketing, quality assurance, and localisation as well as budget-, time-, and
resource-management, especially enforcing a good milestone policy. Her input is
much needed in all phases of game development.
4.3.3 Game Programmers
If game designers are at the heart of a game project, then programmers are the
blood that runs through it. With all the specifications and the advice from the
game designers, the programmers ultimately turn a computer game into reality.
Yet, the areas of programming are very diverse and cover almost all areas of classic computer science. The common programming areas were already described in
section 3.1, but they can be refined a bit more into these categories:
• Game Code Programmers
◦ Network Programmers
◦ Artificial Intelligence Programmers
◦ Graphics Programmers
• Game Engine Programmers
◦ Graphics Programmers (often low-level engine programmers)
• Tool Programmers
For example, a graphics programmer is concerned with putting vertex data through
the rendering pipeline onto the screen. Thus, she comprises knowledge of algebra
and geometry as well as image manipulation algorithms. She is a specialist for matrix operations and knows the qualities of normal computation. With the advent of
the next generation of graphics cards, she also needs to have proficient knowledge
of shader programming.
Artificial intelligence programmers, on the other hand, need to put life into game
objects, or develop elaborate collision concepts. They are skilled at developing
58
4 Developing a Concept for an Educational Prototyping Tool
parsers for scripting languages used by level designers. The classic programmers
are the tool programmers that create software applications, which allow to create
and modify game levels. Depending on the development team size there might also
be specialised programmers for audio, physics or networks. Programmers need to
be able to abstract real systems into complex components.
4.3.4 Game Artists and Animators
In contrast to the programmers, are the artists that need to employ visual thinking
and lots of creativity. Using the game designers’ concepts, they need to find a visual
representation for many ideas - giving the game world an individual look and feel.
While classic concept artists do a lot of the aforementioned traditional graphical
artwork, 3d modellers take those concepts and craft a three dimensional computer
model out of them. Some specialise in character modelling and texturing, thus
contributing to the look of that model. Texture artists and other 2d artists need to
have good painting and drawing skills and need to be able to create images with a
professional software application.
Animators need to have a feeling for natural motion and to be able to recreate
that by using keyframe or other forms of animation. Also, a popular trend at the
moment is the use of motion capture. This allows to capture motions with special
cameras and use the spatial data to animate computer models. Motion Capturing
is a task that is often outsourced to external companies, because cleaning the data
requires finesse in the use of special motion capturing software.
4.3.5 Conclusion for Education
Concluding, all those jobs in game development require a diverse range of skills
from a variety of disciplines. A meaningful educational curriculum is a challenge to
develop. While there have been attempts to formalise a curriculum fitting university
courses [IGDAEducation03], this research field is still so young that it has troubles
establishing itself as a formal academic discipline.
There are only a few research and teaching experiences to rely upon for reference
[Yu02, McCallum04, Overmars04a, Masuch02]. It cannot be neglected, however,
that especially for some rather theoretic areas of computer science, the entertainment value of games can invigorate subjects with a breadth of application possibilities.
4.3 Teaching Focussed on Developer Tasks
59
Accompanying this are largely highly motivated students, often producing better
results and working more intensely on the subject [Claypool05]. With the games
industry exponentially extending its market share every year, the need arises for a
specialised education. Entertainment programs are today highly sophisticated systems relying on a complex architecture crafted by software experts (see Figure 3.1
for a detailed overview of the components of a game engine).
The past experiences mentioned above have shown a strong focus on two areas of
application for teaching games:
• Teaching games for training professionals, who will work in the game
industry
The game industry matures and needs educated people to positively direct it into
the future. Games are a global pervasive phenomenon that will become even bigger
once the industry starts developing for niche markets, like games for elderly persons.
The innovation and skill that young professionals from academia can bring into the
industry will change its face forever.
• Using the motivational power of games as areas of application for traditional computer science subjects
Classical computer science subjects have long yearned for interesting areas of application to increase their students’ interest and motivate them to research in these
areas. Games provide the best motivation for learning computer sciences and often
introduce children to computer technology and spark their interest to study this subject.
4.3.6 Advice from Professionals
Given that the game industry is continually changing, better educated personnel
than academia produces these days is needed. Thus, more and better education
needs to be developed and educated at universities and training schools. As aforementioned, the number of publications for teaching game development are only a
few. Therefore, for developing further impressions on what would be necessary for
teaching game development, some industry veterans were interviewed as part of
this thesis. The transcripts of these interviews can be found in Appendix A.
As good advice, Mark Overmars points out in section A.1 that computer science
can profit from letting students design a game on their own. The focus should, of
course, really be on the conceptual design and implementation, rather than the art
creation. This way game design can serve as a means for students to learn objectoriented design and programming. The playful environment that games exhibit will
enhance their interest in more abstract areas of computer science.
60
4 Developing a Concept for an Educational Prototyping Tool
David A. Smith also states in subsection A.2.4 that “code can often get in the
Figure 4.3: The Croquet project aims at developing a flexible framework with that any
user interface concept can easily be prototyped and deployed [SmithDA03].
way of a good idea” and he also works mainly on object-oriented programming
for a collaborative, three-dimensional environment called Croquet [SmithDA03].
A screenshot of Croquet is shown in Figure 4.3. Here, he emphasises that programming “is a translation task”, which is made “far easier” by using objects. This
resembles a software engineering approach that divides complex game systems
into object components used by [Claypool05]. They created a course for computer
science students that stresses the engineering perspective in game development.
Like in [Masuch04b], there is a lot of emphasis on teamwork, coordination and
management, which David A. Smith considers to be “the most important aspect of
building computer games”.
Therefore, despite other specific approaches at academic facilities with particular
training (be it in art or programming), all education of game development should
have a focus on collaboration, object-orientation, and possibly game critique (the
latter being pointed out by Jochen Hamma in subsection A.2.2). In the following
section, we will look at game development tools employed by the different higher
education schools.
4.4 Game Development Tools used to Facilitate Game Education
61
4.4 Game Development Tools used to Facilitate Game Education
Private academies have the advantage of being more flexible in their curriculum,
which can be altered quickly to fit the changing needs of the industry. Universities
are slower in changing established courses and shifting towards different tools than
the ones established. For a list of professional tools refer to Table B.5 in section B.5.
Some of these are also used in education.
Game designers often use board game prototypes to get started with a game. Bruce
Shelley points out in subsection A.2.3 that “design by playing” is a key to good game
design. Later, the students of the Games Academy, for example, count on a game
creation environment called “Virtools” [DassaultSys05].
Liberal arts colleges rely not so much on software, but more on the practical application of their students’ skills using pencil, paint and canvas. If an art class teaches
image processing software, then it is most often Adobes Photoshop or Illustrator3 .
Business schools also do not focus completely on software, but expect their students to gain a sophisticated knowledge of all office and project management software. Sometimes, they also utilise special financial software, which is not quite as
relevant to the games industry.
The major difficulty with professional game development software and programming
languages is the initial skill adaptation training, because the link to the industry
professionals is often not strong enough and the time needed for other theoretic
subjects is lengthy. Still, there are a few students that spent more than a reasonable amount of time in learning the tools as well.
From the past experiences of [Masuch04b] and [Overmars04c], one can conclude
that it is makes sense for introductory courses to emphasise the game development
process as a whole rather than picking out a specific area. If the curriculum allows,
then one can additionally add courses to game development education that focus
on certain computer science aspects.
Software engineering is probably the closest discipline (and eventually spawns a
new subdiscipline called “game engineering” [Claypool05]), but the focus on certain
graphics aspects, such as real-time techniques, is also reasonable.
Since universities and private schools both aim at an education suitable for future
game designers4 , the tools to use for that are harder to define than e.g. programming or art. The knowledge of a game designer is more implicit, many facts of game
3 Both being the industry standard for game art as well, see [Sheerin04]
4 This, of course, means that they focus on educating game programmers or artists that have solid
knowledge in game design and can later after years of experience try to get the job of a game
designer.
62
4 Developing a Concept for an Educational Prototyping Tool
development and the concept of gameplay needs to be understood rather than the
mastery of a certain tool.
Game designers need good means to present a prototype of their idea. While this is
possible with pen and paper, as well as on the computer, there is certainly a lack of
good prototyping tools, Game Maker [Overmars04a] being the exception5 . Computers are preferred for prototyping in mature production when it comes to the design
of the actual interaction (of the player and the game). This brings us to the concept
of a game design prototyping tool for the use in education.
4.5 Towards an Educational Game Prototyping Tool
While there is absolutely no doubt that an university does not have the resources
nor the capability to train fully educated game designers, this approach towards
a game design prototyping tool is not aimed at teaching all that is necessary for
game design. This would be impudent. It should rather provide computer literate
students (that eventually become future game programmers) with an utility for
capturing their game ideas quickly and presenting them to other people.
So, this thesis aims at supporting students interested in game development by
adding a simple and easy-to-use tool to the development pipeline, which also allows
students to deepen their knowledge on specific aspects of programming. Looking
at Figure B.2, one can easily identify the prototyping cycle of a game designer
during the conception phase of game development. It is recommended to produce
a pen-and-paper prototype initially. Game designers have a “strong background in
chess and various board games”, as Bob Bates states in subsection A.2.1.
Only after this first stage, the idea should be put into a computer, where with
the help of a tool, a small two-dimensional prototype should be created. As Mark
Overmars says in section A.1, “gameplay is completely two-dimensional”, even in
most 3d first person shooters. So, by using this small utility, game designers can
focus on creating gameplay, using simple 2d mock-up graphics for their level, figures and main character. Along with the ability to create an inspirational setting (a
story and an interesting looking world), such a tool could help students to be more
creative initially before starting to look at coding and algorithms for their game. In
the following section, the basic requirements for such a tool will be discussed.
5 The Game Maker tool is used for much more than merely prototyping a game. It gives artists and
non-professional developers possibilities to express themselves
4.5 Towards an Educational Game Prototyping Tool
63
4.5.1 Requirements Analysis for a Game Prototyping Tool
The preceding classification of game development suites in section 3.4 can be used
to identify requirements for a game creation utility6 .Of course, not all requirements
should be weighted with the same importance.
Since the application of the tool should be in education, the prerequisites are a bit
different than those for non-professional or professional game development tools.
One of the major goals is definitely that “using” the tool should be equivalent to
“learning” about game development. So, factors like accessibility, scalability, and
effectiveness have a bigger weight than efficiency or fast loading.
In addition to the classification in section 3.4, a number of old and simple games
that were so successful to spawn many clones over the years were analysed to get
further insight into the core elements a basic game needs to feature. These “mini
games” can be seen Figure 4.4. As follows, requirements for a game prototyping tool
will be gathered based on these two prior investigations.
(a) A screenshot of P AC -M AN
by Namco Limited (Midway)
on the ZXSpectrum
(d) 1942 by Capcom was a
vertically scrolling shooter.
(b) T ETRIS by Alexey Pajitnov (Tengen) is the classic puzzle game
(Screenshot of the Commodore 64
version).
(e) The game B REAKOUT by Midway (Midway) and its successor
A RKANOID by Taito (Imagine) were
huge arcade hits.
(c) P ONG was one of the
first video games in history.
(f) S PACE I NVADERS by Taito
(Midway) was ported from
the Arcades to the Amiga
Figure 4.4: The different mini games that were analysed for finding necessary core game
features.
6 One of the thesis goals is the creation of a game prototyping tool as stated in section 1.2
64
4 Developing a Concept for an Educational Prototyping Tool
ä Core Game Elements
For creating a structure for game creation, it is important to identify major
elements of certain games. This was done by looking at “mini games” that
are shown in Figure 4.4. In Appendix section B.4 the features of these games
are outlined in Figure B.4. In particular, the games T ETRIS, P AC -M AN, 1942,
P ONG, B REAK -O UT and S PACE I NVADERS where analysed with special regards
to the objects included in each game.
All games include three basic components (in different representations):
• Protagonist/Player Avatar
Whether the player is represented as a block (T ETRIS, P ONG, B REAKOUT),
an aeroplane (1942), a pizza (P AC -M AN), or a tank (S PACE I NVADERS),
there is always a graphical avatar giving visual feedback on the input
actions. The most common form of controlling the player avatar is the
keyboard or a joystick.
• User Interface
Most game objects have values attached to them, which can be altered
during a game. The most important values are usually shown on the surface of the game screen, which is called the GUI of the game. Different
forms of a game GUI are the shell interface before the start of a game, the
in-game interface, which is present when playing the game, and lastly the
transition screens like the “game over” or the loading screen.
• Antagonists/Opponents
In some games, the time is the only opponent (T ETRIS), while in others the
enemies are avatars controlled by the game AI or by other players.
This lead to the conclusion that all of these games consist of these objects and
even different granularities of object classes are possible7 . Thus, a collection
of these different components should be available at the first start of a prototyping tool to have a ready-to-use library of typical game components that can
then be configured and individualised.
ä Component structure
The primary goal of this thesis is to build a component-based interface system
that can be utilised for the education of game development. With the help of
the system, it should be possible for non-professional users to understand
the foundations of game creation. Thus, the system must be designed to be
easily understandable. This means that a game can be “dragged and dropped”
7 For example, higher-level categories like classifying into in-game objects and interface objects.
The in-game objects can be divided into player, graphical, and control objects (that either control
hardware input or interface output).
4.5 Towards an Educational Game Prototyping Tool
65
together using own or preloaded graphics. An animation should be played on
an event. An event should not need to be programmed in code, but simply be
attached to a graphical object.
While the tool itself should be programmed using a component architecture,
the game should be a “mix” of game components, each differing in functionality
and scope. This also supports the understanding what a game is made up of.
By individually defining the components, students quickly get a hold of what
components are important to create a functional game. It is also useful to
facilitate the process for the teachers.
ä Scalable Complexity
A teaching tool should be less complex than the tools and development suites
used in the games industry. As said before, this is due to the requirement
to learn about important abilities rather than produce a perfect product. The
motivation of having a game ready at the end is not so far above the ground
but still enough for the students to take an interest in the subject matter. Less
complexity in the final product can also be an advantage if a course aims not
so much about programming and algorithms, but rather at the understanding
of game design.
By creating small games, students need to focus on the essence of gameplay
and this helps them to intensely study game mechanics, which on the other
side are most often just applied mathematical reason. Thus, an ideal educational game development tool should allow to put the focus on design aspects
(by using a high-level interface), as well as to program and alter the code in
the same environment.
Ideally, two views on the same core should be defined:
• Professional View
A professional should have the possibility to alter code and review the core mechanics of a game.
• Non-Professional View
Unnecessary complexity should be hidden from a non-professional, layman user,
allowing her to tweak game functions through interfaces. Visual feedback on the
user actions is also important.
Project length, similar to the complexity, is inherently much shorter for school
or university courses than in a full-price development project. Thus, the creation of games should be possible in one semester or even in two months
(which is the usual length for summer school projects). This time span is feasible for a study course that focusses not solely on games, but allows for a
66
4 Developing a Concept for an Educational Prototyping Tool
semester of intense training. If possible, all stages of game development should
be passed to create a small game.
This utility aims at providing good means of prototyping for students and nonprofessional people interested in game design. Therefore, it is very necessary
that the menus are easily accessible and most of the functions can be reached
intuitively. Also the output of the program should focus solely on simple, interactive, 2d game prototypes, not including all functionality necessary to program a non-professional game.
Thus, it can also be featured in a game development course at an early design
stage for gently introducing the students to the mechanics of a game. After
having their prototypes ready, they can then start to work with code.
ä Game Design and Object-Oriented Design
Now, if the focus of an academic course is on game design8 , then programming
aspects should be simplified to a level, where a non-professional user can understand the essentials of object-oriented design. This, of course, implies that
object-oriented design and game design resemble each other in certain aspects. Since both, game and software, should be made up of the components
mentioned before, one should be able to learn about object-orientation through
game creation. Game design can be used as a medium to raise a novices interest in programming.
When creating simple game prototypes, a tool should highlight that all games
are complex systems made up of game objects. They exhibit a certain behaviour by specifying the attributes of these game objects. The behaviour
connected with the user-interaction is the basic essence of any game, which
should be observable and controllable in the tool. This can then be used to
introduce further mechanisms of object-oriented design or even software engineering techniques to the students.
ä Teamwork and Collaboration
Another important requirement for a tool used in education is the collaboration
aspect. Most regular development tools rely on third party vendors for the
integration of communication and version control tools. It would be a great
advantage if this functionality could be directly accessed from the tool, so
that it can be used to brainstorm and sketch preliminary ideas as well in an
integrated environment.
8 Game Design here is understood as the process of creating a game from initial concepts to a
prototypical implementation
4.5 Towards an Educational Game Prototyping Tool
67
The collaborative nature of game development and the education of joint work
is an obligation. Assigning tasks, meeting deadlines, exchanging files, communicating instantly and self-criticism are crucial skills not only needed in the
games industry. It is also of great use if new users need support in using the
tool and can get help this way.
It is of great use in bigger teams, if a fellow programmer can see who changed
the code before or who has last used the system.
Many teamwork tasks can be facilitated by setting up a collaborative environment with version control systems, discussion boards and group chats. A
tool, however, should either integrate nicely with those systems or allow the
collaborative work on the assets used for the prototype.
ä White Box Architecture
A particular problem of many non-professional middleware applications is that
they behave like a black box. While they often match many of the user’s configuration needs, they unfortunately hide the low-level functionalities from the
user so that the system can only be maintained by the original vendor.
This is certainly an important factor in the revenue-oriented professional industry, but it is bad for learning the structure of a system. The open source
approach is better for education, because it allows opening and altering software within special limitations. For teaching algorithms, the system cannot be
black box, but must be transparent for the students.
Students become more skilled in programming over time and want to understand the algorithms of a game rather than simply adding a collision detection by clicking. Middleware that allows students to change a system “on the
fly” and see the results immediately encourages the trial-and-error approach,
which is popular for refining complex systems. Ideally, the architecture of a
tool should also allow writing extensions for it.
ä Creativity
Creativity was discussed in section 3.4 in detail. The better a tool can adapt
to different forms of output, the more creative the user can be in creating a
game. The less technical restrictions apply, the more variety the output will
have.
While most creativity can certainly be put into paper prototypes, when it comes
to prototyping with the computer, it is good to be able to concentrate on design
aspects, rather than fighting with code. An ideal rapid prototyping tool would
support high-level programming and scripting languages, helping to understand game mechanisms.
68
4 Developing a Concept for an Educational Prototyping Tool
4.5.2 A Proposal for an Architecture of a Prototyping Tool
From the requirements analysed in the last section, basic traits of a software
architecture for a prototyping tool are already obvious. Essentially, a tool needs
to have a white box behaviour with its core architecture visible. Therefore, the
game engine and its underlying system should be configurable down to its low-level
architecture.
The problem with many proprietary tools is that they do not offer this level of
customisation. Contrary to this are open source tools and engines widely available
on the internet.
However, these tools often lack extensive documentation and most of the require
thorough graphics and game programming skills that many students in university
courses do not have. A good solution would be to use a high-level programming tool
that includes multimedia capabilities9 .
Besides the white box behaviour, customisable game objects should be the foundaWhite Box
Core System
Game Engine
Game Objects
Non-Professional
View
Collaboration
Programmer
View
Expandability Layer
(Inheritance from Game Objects)
Figure 4.5: A high-level overview of the proposed architecture.
tion of a prototyping tool. These game objects should closely relate to the analysed
basic features of the mini games (see Figure B.4).
Ideally, prototyping should be done by professionals and non-professionals that
work on the same code base. In reality, this is very difficult, because the programmers usually have a more abstract view directly into the game code, while
9 Squeak would be an ideal choice for students, because it also enforces object-oriented programming.
4.6 Conclusion for the Implementation of a Prototyping Tool
69
most designers prefer to work in a visual environment. Thus, a prototyping tool
needs to define multiple views on the same code base, so that both designer and
programmers can work efficiently together.
This brings up another very important aspect: Collaboration. People that work together need to communicate and identify their shares of work to track the changes
done among teams. An ideal collaborative environment needs the power to track
and control users changes on the code base.
Last but not least, the architecture of an ideal prototyping tool should be flexible
enough to be extended and customised, which allows other programmers to add
their own functionality to it. In an object-oriented system, this will not be major
problems, because principles of inheritance apply and can be used to extend given
classes with other functionalities, if a good interface is provided. An architectural
sketch including all of the aforementioned is shown in Figure 4.5.
4.6 Conclusion for the Implementation of a Prototyping Tool
With the discussion of the preceding chapters about object-oriented design and the
resemblance of this to game design, the choice of the development platform was
made regarding the object-oriented languages available. Since “object orientation is
the natural way of designing things” (Mark Overmars in section A.1), this leads to
looking at educational programming environments used for teaching kids objectoriented programming [Guzdial02].
While other environments would have certainly been preferred by a game programmer, Squeak seems to be the less abstract and most high-level. This makes it ideal
for high-level tasks like prototyping a game. Further details about this environment
will be given in the next chapter.
From the preceding sections, we can mark the following essential features as the
requirements for the prototyping tool, which will be implemented in the next chapter:
Ü White Box For Game Engine and Objects
The underlying architecture needs to be transparent, so that students can freely configure and extend the functionality.
70
4 Developing a Concept for an Educational Prototyping Tool
Ü Scalable Complexity
A good tool should be just as complex as the respective user needs it to be, therefore
different views on the same code need to be provided.
Ü Teamwork and Collaboration
Many people work together in prototyping a game, so that a good tool can track and
assign code to users.
Ü Creativity
Only few technical limitations should be set, so that creative freedom is given to the
user.
Ü Expandability
Implied by the white box architecture, a prototyping tool should be easily extensible
for altering it quickly to meet changing needs.
4.6.1 Summary
The look at the general education situation for developers with examples from the
international academic landscape brought us towards an analysis of the different
facilities and their respective target groups. Using the information about targeted
job profiles for game developers, a closer look at the most important jobs was taken.
With the specific profiles in mind, academic courses, and the tools and mechanisms
they teach were further investigated. This lead to the knowledge that game design
is an essential skill for all development groups, especially for programmers and
respectively computer scientists.
For the use within such an environment, a prototyping tool was sketched that
can support the conceptual game design phase during game development (see
Figure B.2). Lastly, the requirements for such a utility were gathered and serve as
guidance for the prototypical implementation that is described in the next chapter.
5 Implementation of a Game Prototyping
Tool
Technology is a word that describes
something that doesn’t work yet.
(D OUGLAS A DAMS )
In this chapter, we will take a closer look at game development with Smalltalk
and Squeak; especially at the benefits of those languages and development environments. It will introduce Squeak with a general outline of the history and the
recent development, especially the improvements the impara GmbH1 is carrying
out. Then, the focus is shifted on the iEngine2 and its games.
Next, we will discuss details about setting up the prototyping tool, called LeGaCy.
The name of the tool is an acronym for “Lennart’s Game-Prototype Creation Utility”3 . After a brief look at the architecture, the features are sketched out in detail.
Subsequently, an example will highlight some of the characteristics of prototyping
with Squeak. The focus is on understanding what prototypes are capable of, and
why some features are not yet implemented. The conclusion then leads to the next
chapter, where the the current work will be evaluated and discussed.
5.1 Game Development in Smalltalk
Many programming languages for developing games exist. Most developers prefer
C, C++, or Assembly for reasons of speed, and especially mobile phones use Java
for their code of choice. These languages are rather low-level languages that take
intensive effort to learn and even more skill to use them efficiently.
Not all people in game development, especially not all game designers are familiar
with programming at all. Thus, especially for level designers, high-level scripting
1 The impara GmbH is a German company involved in the development of Squeak.
2 The game engine developed at the impara GmbH is called the iEngine in the latter.
3 Thus, it combines the developer’s first name with the intended purpose of use.
71
72
5 Implementation of a Game Prototyping Tool
languages are the perfect choice. Even though they are less powerful, not necessarily object-oriented, and sometimes have to be extended by supplementary
software (e.g. Dynamic Link Libraries (DLL) written in a low-level language). A
possibility for people, who are not proficient in programming, but want to learn,
would be naturally a language used in the education of programming. This brings
us to Squeak, an open-source Smalltalk system (which is explained in detail in
subsection 5.2.1)
Squeak has been developed with the
explicit goal in mind to teach children
the basics of object-oriented programming. It includes an own scripting system4 , and a whole set of multimedia
tools that makes it attractive for playful exploration.
This playful learning and exploration
of systems is what impara defines as
one of the key visions of the company.
The approach to combine entertainment and education led to the development of a game engine for use within
Squeak: the iEngine.
Figure 5.1: Etoys is a high-level interface
for scripting within Squeak.
It is an experimental construction kit, which can serve as a meta tool for understanding and exploring objects, which are designed in code and as graphical representations. The game engine provides a white box architecture, where the hierarchies of the game objects and their behaviour can be explored and altered within
the Squeak environment. This makes it ideal for use in the education of games. It
will serve as a foundation for LeGaCy, because it provides a rich set of functionalities common in games.
Impara’s project Buccaneers, Inc. is so far the only larger game that builds on top
of Squeak and the iEngine. However, it is not the only professional game title developed in Smalltalk. The Adventure Company has released a game called A URA : F ATE
OF THE A GES in 2004, which was developed with Smalltalk MT5 and is shown in
Figure 5.2.
4 Etoys is a scripting interface within Squeak (see Figure 5.1), which will not be discussed in detail
here. For further information refer to [Guzdial01].
5 The Smalltalk environment Smalltalk MT includes a hardware-optimised compiler for windows
and abstraction layers of DirectX. It allows programmers to use Smalltalk with all the features
known from Windows programming. The environment provides a graphical editor for Windows
GUIs. Figure 5.2 shows Smalltalk MT as well as a screenshot of the game A URA.
5.2 The Development Environment
73
The game is an explorative adventure game from the first person view, which resembles the popular adventure game M YST. The graphics are prerendered, there is
not much animation happening and for a huge part of the game, the player has to
solve click puzzles.
In conclusion, Smalltalk has not been vastly used in game development. Although
many professional companies flinch from using it due to the risk of losing speed6 ,
for applications like prototyping and teaching game concepts, speed does not matter. This makes it attractive as a new and fresh testbed for game development in
education. It is more important to get an insight into object-oriented design, which
is certainly learned best by programming in Smalltalk.
5.2 The Development Environment
The benefits of trying out Smalltalk as a programming language for educational
game development are obvious. As said before, its open-source, virtual-machine,
high-level architecture, and strict object-oriented design make it the primary choice.
However, it needs to be supported by a development environment that makes working with it comfortable. Enter Squeak, the open-source, multimedia, Smalltalkdevelopment-environment that is supported by a very active, global community.
Its makers characterise Smalltalk, and consequently Squeak, as the truest language
and environment to object-orientation available. With all this said about Squeak, we
will look at the benefits and details of this special programming environment.
5.2.1 Squeak
Squeak is a portable, open-source, object-oriented, multimedia development environment7 that stemmed from Smalltalk, which Adele Goldberg, Alan Kay, and their
research group developed in the seventies at the Xerox Palo Alto Research Centre.
Squeak is implemented in Smalltalk itself [Kay93].
It was in 1995 that Ingalls et. al. [Ingalls97] created Squeak at Apple Computers,
with its first release entering computing in 1996. Since then it has been further
improved and expanded. It is used primarily in education to teach the principles of
object-oriented programming and design to children. The alliance of a programming
language with a graphical interface brings along a good number of tools for its own
modification.
6 A word-of-mouth recommendation for low-level languages has always negatively stigmatised highlevel languages as being tremendously slow. However, the benefits of understandable and structured code have to be weighted against the gain of speed.
7 It also uses a dialect of Smalltalk, so it is written in its own language.
74
5 Implementation of a Game Prototyping Tool
(a) Smalltalk MT is a Smalltalk environment and optimised compiler for the Microsoft Windows
OS
(b) Aura is a “Myst”-like game developed by “The Adventure Company” in Smalltalk MT
Figure 5.2: Smalltalk MT and the Aura game that was created with it.
5.2 The Development Environment
75
More precisely, Squeak offers many benefits “out of the box” that may be available
for other programming languages as well, but not in a more complete set than in
Squeak. Some of the reasons for using Squeak as an educational framework for
game development are its following benefits:
• High-Level Object-Orientation
No other programming language consequently enforces object-oriented programming
like Squeak. All expressions basically follow the same pattern of
messageReceiver message,
with all methods being triggered by messages.
• Multimedia Integration
Squeak already supports lots media out of the box, providing interfaces for loading
and altering media files.
• Community Support
Squeak has a very active community, especially in Magdeburg, where impara (one
of the key players in developing Squeak) and the research group computer games
of the Otto-von-Guericke University focus on developments with Squeak. Thus, in a
collaborative effort these people strive for spreading Squeak technology and are keen
on helping developers.
• Open-Source White-Box Architecture
Naturally, Squeak allow altering all its functionality, because of its transparent architecture, where all objects the system is made up of can be accessed and changed.
• Scalability
The most important reason for choosing Squeak in education is its scalability. It naturally has built-in scripting interfaces (like Etoys seen in Figure 5.1) and provides
different views on the code base. Also, the philosophy behind its new interface framework Tweak is to provide many abstraction layers, adjusting it to an even wider variety
of user skills.
The whole user interface idea of Squeak and the use of windows were some of essential ideas behind Smalltalk8 . The ideas were further extended by other companies
and lead to the modern window interfaces that are common to most computer users
today.
Also the idea of Squeak as being a “meta-medium” is becoming more popular on
other systems. Squeak was one of the first systems that brought along support for
video, graphics, sound, and more, supporting all kinds of modern data formats.
8 Alan Kay, who invented the term object-oriented programming always wanted the computer to be
more than it was for most people. His idea of the “Dynabook” was one of the forerunners of today’s
computer notebooks.
76
5 Implementation of a Game Prototyping Tool
One of the central ideas behind Squeak are also giving different perspectives on the
(a) The old MVC interface in Squeak
(b) Some graphical morphs in Squeak’s Morphic
environment
Figure 5.3: The two GUI environments used in Squeak before the invention of Tweak.
same data. This idea bases on a common design pattern called MVC9 [Gamma95].
The first graphic interface in Squeak was a simple MVC interface, which can be
seen in Subfigure 5.3(a). It was soon replaced with a different framework called
Morphic (shown in Subfigure 5.3(b)) that was easier to use. It is necessary to give a
quick overview over those two GUI frameworks to better understand the benefits of
the new framework Tweak.
ä Model-View-Controller
This is an architectural pattern, which separates a program into a model (representing the data), a presentation (of the data) and a controller (handling the
logic and managing the data). Usually the view and the controller interact with
the model, which means other controllers and views can use the same model
as well. A controller can also control the output of several views.
This idea is popular especially for producing graphical user interfaces, because
it keeps the system flexible. It also makes extending the program more manageable, because code changes only have an effect on one location, e.g. in only
the category, where the new interface is build on top the basic classes. So,
once the core is established, all other changes only affect the local bits of code
that utilise the model.
MVC was originally developed by Trygve Reenskaug, who also worked at the
Palo Alto Research Centre with Alan Kay, for interfaces in Smalltalk in 1979.
Inspired by this approach were the Swing framework in Sun’s Java and the
Microsoft Foundation Classes. A screenshot of the MVC can be seen in Subfigure 5.3(a).
9 This is short for Model-View-Controller. The model represents the data, the view visualises the data
and the controller evaluates input from external devices.
5.2 The Development Environment
77
ä Morphic
Morphic is the recent GUI framework in Squeak and the successor of MVC.
Thus, it was developed as part of the programming language Self, but soon
became a part of Squeak [Maloney00]. The intention of its programmers was
to simplify building user interfaces. It has one base class called Morph, which
all other graphics classes in Morphic derive from. These Morphs can be animated with a built-in stepping mechanism. An overview of the representations
of Morphs within Squeak can be seen in Subfigure 5.3(b). A more detailed descriptions of these mechanism and Morphic itself can be found in [Maloney00]
and [Guzdial01].
[Gadegast05, pp.18–19] discusses the current difficulties that new users of
Morphic are facing. Removing current obstructions from Morphic to create
a new and clean interface package was the original motivation to build a
new framework, called Tweak. It will substitute the older frameworks used
in Squeak in the future.
5.2.2 Tweak
Andreas Raab developed Tweak in 2001 and it is now being co-developed by his
company impara to replace the older user interface frameworks in Squeak. The
Tweak Core Architecture Release (TCAR)10 includes the following features:
• Tweak Compiler
A separate compiler to support important aspects of Tweak, like the support for
“fields”.
• Asynchronous Event Architecture
If a script is started, it runs until it is finished. Running processes cannot be halted
externally, but events can trigger scripts. This is a crucial feature, making Tweak more
flexible than its predecessors MVC and Morphic.
• Players and Costumes
This is a concept much too complex to be explained here in detail. The graphical
objects exist in dual representation by a Player11 and by a Costume12 , which is a
Player as well. A Player is an abstract object type that can direct Costumes, while
Costumes notify Players of events. For internal details about these aspects, consult
[Gadegast05, pp. 21–22].
10 All of the information is based on the release notes of the Tweak-1.2 release.
11 A player distantly resembles a model object in the MVC architecture
12 A Costume is the vague equivalent of a MVC view object
78
5 Implementation of a Game Prototyping Tool
• Fields
Fields define variables that feature a certain event behaviour. Whenever the value of a
variable is changed, an event is generated, to which can be listened by other objects.
• Widgets
Several widgets are already available for use in programming a graphical interface for
Tweak. These core libraries are not complete, but growing rapidly in functionality and
providing a good basic toolset that one can work with.
• Authoring Environment
The Tweak Project Builder is intended to become the authoring environment of Tweak,
while at the moment it provides a collection of the tools available within Tweak.
The main features of Tweak are the asynchronous event architecture (probably being the key feature) and the concept of separating players and costumes, which
both make it a very flexible system. Changes of code have only a local effect (similar
to the MVC pattern). Fields in Tweak can be regular or virtual types, the regular
types just contain data values, while the virtual types are implemented as methods
that allow setting and getting a value.
Tweak implements more and more Squeak tools and functionalities. Yet, some tools
Figure 5.4: The outline of the mixed Squeak-Tweak work environment that was used
for programming LeGaCy.
lack functionality at the moment. One of them is the system browser, which is
5.2 The Development Environment
79
easier to handle outside Tweak. It can be used to configure the classes of Tweak
(as Squeak is open-source, with all code available at run-time, allowing adjusting
almost anything inside it). A mix of Squeak and Tweak tools was also used for programming LeGaCy as is shown in Figure 5.4.
In conclusion, the philosophy of the new framework Tweak is very helpful for students that want to learn about object-orientation and find out how encapsulated
code works collaboratively. Many examples are already included with Tweak and
its architecture is so sound that it will soon be mature enough to replace the older
user interface frameworks of Squeak.
5.2.3 The iEngine
In addition to developing the Tweak framework,
impara also has the objective to make Squeak a
game programming environment. Development of the
iEngine, which can be classified as a game engine13 ,
was co-developed by Michael Rüger (who is the lead
software architect at impara) almost a decade ago. It
was put to new use as part of a collaborative project
between the University of Magdeburg (the computer
science department), the University of Applied Sciences Magdeburg-Stendal (the design and engineering
departments) and the company impara.
Figure 5.5: Setting up
The large project was called “Virtual Physics” and was
the project Pirates.
aimed at the development of innovative user interfaces
around a multiplayer game with a pirates theme [Masuch04]. Figure 5.5 shows the
setup of the pirate environment for a public presentation.
Following this project was a game called Steamer Battle, which was a technology
showcase of the multiplayer and AI capabilities of the iEngine. As a proof-of-concept
for the game engine, showing all that is possible in Squeak game programming,
impara started developing the game Buccaneers, Inc., which can be seen in Figure 5.6.
Developing a game in Smalltalk was a challenge for the professionals, but the
process of developing a few prototypes before that helped in refining common
game functions and make additions to the iEngine. In the end, the final game was
running without much delay on a high-end computer14 , proving that through many
13 The iEngine is a middleware library providing functionality of rendering, collision-detection, networking, basic artificial intelligence, and much more core game functionality. Therefore it is a game
engine.
14 An additional browser plugin allows it to be started within a web-browser, where it runs with
80
5 Implementation of a Game Prototyping Tool
(a) Ships fighting against each other. The damage is shown in the ships. The hand is used to
navigate the ships.
(b) Ports are service stations where ships can be
upgraded and repaired.
Figure 5.6: Buccaneers, Inc. is a game demo developed by impara to show what is
possible in terms of game development in Squeak with the iEngine.
low-level optimisations a game can be made with Squeak.
Many of the employees later said that they particularly enjoyed the easy collaboration within Squeak through the inner code version control mechanisms that
Squeak supplies (M ONTICELLO being an example). So, besides providing all the
benefits of the Squeak programming environment, the iEngine adds the following
essential core functionalities commonly needed in most games:
• AI
While AI is programmed for each game individually, a common problem like
path-finding needs to belong to an engine’s functionality. The A* algorithm is
such a pathfinding algorithm that is part of the AI library within the iEngine.
An AI emotion system was developed as part of a master’s thesis [Schuster04].
• Physics
Basic physical functionality is available as part of the game engine, from which
most is custom fit for the game Buccaneers, Inc.
• Network
Network support includes opening connections to other computers and providing wrappers to common network calls. Thus, the iEngine comes with basic
libraries for common network functions, also supporting multiplayer settings.
• Collision Detection
When two objects collide, an event is generated either to alter values belonging
to game objects or trigger certain highscore counters.
almost 30 frames per second.
5.3 LeGaCy - A Tool for Rapid Game Prototyping
81
• Graphical Asset Animation
Game objects are usually represented by graphics on a display. These objects
can be three-dimensional models or two-dimensional sprite graphics. The engine supports loading and animating two-dimensional graphics from the most
common image file formats.
• Rendering
The iEngine includes a 2 12 d graphics engine, which basically means that the
inner calculations within the game world are done with three dimensions,
while the rendered display is only in 2d.
Every Game class has GameScreen class, which has a method
createRenderer, where the renderer can be chosen. The choice of the
rendering output allows the engine to create different views on the game
world.
This rendering mechanism, which earlier used the Morphic interface, was
ported to Tweak in [Gadegast05]. Therefore, the iEngine profits from Tweak
already.
• Sound
Just like graphics, sounds are imported as media assets into the game to
triggered by an event.
5.3 LeGaCy - A Tool for Rapid Game Prototyping
In subsection 4.5.2, an architecture for an educational game prototyping tool was
proposed, consequently highlighting the most important requirements for such a
tool. Through discussing the abilities of Squeak in this chapter, it is obvious that
many requirements for a special use in education are already fulfilled by it. However,
remembering the conclusions of section 4.6 leads to pointing out the necessary
features that are part of LeGaCy.
• Scalability
The definition of different views on the same codebase allows programmers to
utilise the LeGaCy library as well as non-professional users to work with its
graphical user interface to create a game prototype. The graphical level-view
of LeGaCy allows students to be more creative and easily make the transition
from conceptual to programmable prototyping within Squeak. This concept
will be discussed in detail in the next subsection.
82
5 Implementation of a Game Prototyping Tool
• Collaboration
Working on the same code is made possible by utilising Squeak’s version control tool Monticello, which is integrated in LeGaCy. Also the programmer control of the system browser allows programmers working on the same Squeak
image to track changes of others. The prototypes are saved in the XML file
format, which can be exported to other applications with ease. The format can
also be read and altered by a programmer outside of Squeak.
• Game Objects
The different objects of the game world are divided into different categories,
each representing their functionality. New objects can be added through the
programming environment. For teaching game design and object-oriented design, this approach is especially important. The open nature of Squeak also
allows students to research how the game objects are implemented and use
these as templates for defining their own game objects.
• Core Game Engine Functions
All iEngine functions can be accessed and implemented as being part of the
game object concept15 . Therefore it helps new programmers to get to know
basic iEngine functionality.
Subsequently, the approaches towards LeGaCy from a non-professional user perspective and from a programmer perspective will be elaborated, which will lead to an
example showing detailed prototype-building from a non-professional perspective.
5.3.1 User Interfaces in LeGaCy
Non-professional users base their first impressions of software upon whether they
find the user interface pleasant to use or not. So, thinking about essentially providing different interfaces for different users makes sense from a developer’s perspective. This is a principle that Game Maker also uses for hiding complexity16 .
LeGaCy was designed to be used primarily by non-professional users, but with the
possibility to let the user switch to more advanced options once she is confident
enough with the environment. Figure 5.7 shows the two significantly different ways
of working with LeGaCy. While Subfigure 5.7(b) shows the regular programming
tools of Squeak (Class Browser and Monticello), non-professional users are presented an in-level view of the game world in Subfigure 5.7(a).
This latter view in LeGaCy represents a game-focussed view known from many game
15 This prevents programmers from constantly reinventing the wheel by specifically taking advantage
of game engine methods provided by the iEngine.
16 Complex functions are only available through the tools scripting language GML. Simple functions
are directly available from the GUI.
5.3 LeGaCy - A Tool for Rapid Game Prototyping
(a) Screenshot of the inGame Level Editing View
of LeGaCy
83
(b) Screenshot of the programming view in
LeGaCy, allowing for access of the system
browser and the versioning tool Monticello.
Figure 5.7: LeGaCy’s different views on the code base: A programmer view and a leveldesign view.
editors used for generating mods (e.g. UnrealEd shown in Figure 3.9). Here, the user
can browse graphical game objects and place them inside a level.
A preconfigured set of tiles represents the view on the level. A level itself is a grid
of tiles stretching to set dimensions. The grid assigns game objects to the columns
and rows. This way, the tool allows creating multiple instances. Every instance becomes a part of the grid.
More importantly, an in-game view supports the “suspension of disbelief” to which
many players commit, when playing games [Rollings03]. Thus, it makes the transition from being a player to being a developer easier for non-professional users.
The programmer view of LeGaCy represents a look inside the code of the tool and
its classes. Once users of LeGaCy start becoming more interested in changing the
tool and its functionality, they can alter all classes of the tool in real-time. Missing
functionality can be added or possible occurring defects can be repaired immediately.
This architecture is the main advantage of Squeak, and consequently of LeGaCy,
smoothing the transition from scripting towards programming. While many objects
can be explored in the in-game view within LeGaCy, the core functionality can be
changed with the same ease as it would only be possible by regular scripting languages.
The crucial difference to programming environments with a compile-run cycle is
that Squeak runs in a virtual machine already, and therefore no compilation is re-
84
5 Implementation of a Game Prototyping Tool
quired. The effect of the changes that are made, can be seen instantly, which is a
benefit for non-professional users wanting to learn about programming by using a
cause-and-effect cycle to get to know functions.
The transition from scripting and programming in the environment is smooth. Thus,
it makes the tool attractive for users with a variety of different skills. Students of
game development courses at an university are the typical example for such users.
In conclusion, LeGaCy is optimised for this target group by taking into account that
only scalability can provide satisfactory interfaces for different user-types.
5.3.2 The Features of LeGaCy
LeGaCy’s main objective is to provide easy-to-use game functions for nonprofessional users. Thus, next we will highlight some basic steps in using LeGaCy.
Before a regular game project starts, the assets17 need to be loaded. This process is
shown in Figure 5.8. Assets are distinguished into different types by the names of
the files from the start. An identifier is used to assign asset files to objects. LeGaCy
differentiates between the following game object types:
• Background
Background objects are non-active, solid game objects serving only to put different
graphics tiles into a game level. The identifier of background assets is bg-.
• Prop
Props are functional game items that either have influence to game characters or simply serve to populate the game world. A prop object can contain parameters, triggers
and collision information. The identifier of prop-assets is prop-.
• Player
The avatar of the player represents her in the game world. It is usually the only
character that is controlled in the game world. A player object can contain several
parameters, collision information, triggers, and usually listens to a control interface.
The identifier of player assets is player-.
• Enemy
Enemy characters are computer-controlled antagonists in a game. These characters
commonly have the objective to hinder or eradicate the player. Enemy objects contain
the same as player objects except they have no control interface towards the hardware
but towards an AI. The identifier of enemy assets is enem-.
By identifying game assets as belonging to one of these object types, they are stored
in a list, where they can be accessed in the in-level view (the playground) of LeGaCy.
17 These are all media files that will be used in a game prototype.
5.3 LeGaCy - A Tool for Rapid Game Prototyping
85
(a) A menu in LeGaCy offers access to most functions.
(b) Selecting the Assets option to update the asset collection before the start. This
step is necessary to make sure the newest assets are loaded into the iEngine.
(c) The program updates its internal assets library. The assets within a specified
folder “ASSETS” are now ready to be used.
Figure 5.8: The mechanism of updating the assets within LeGaCy.
First, one needs to select the desired type of asset from a drop-down list. The left
item list will then update the view to display the graphical objects belonging to this
category.
86
5 Implementation of a Game Prototyping Tool
(a) The non-professional view is called the “Playground” and can be opened from the main
menu.
(b) This “playground” presents a default view of
a game level that can be used as a template for
new levels.
(c) In a drop-down list on the left, the different object types can be accessed and painted inside
the level.
Figure 5.9: Accessing the game objects in LeGaCy.
5.3 LeGaCy - A Tool for Rapid Game Prototyping
87
Selecting one of these objects updates the brush18 to the graphical representation
of the respective object. Now, the object can be painted onto a tile in the game
world. The game object is placed at the position of the tile within the game world
grid. Through the grid architecture of the game world, the exact place of the object
within the grid can be stored into an XML file.
Figure 5.9 gives an overview of the process of selecting a game object category.
Ideally, all objects of a category should have the same dimension, so that they fit
exactly on one place in the game world tiles. However, the iEngine also allows different dimensions of game objects to be painted inside the game world.
Besides the functionality provided by the playground in LeGaCy, it is also necessary
to take a look at the library that is the essence of LeGaCy. A major part of the code
is, of course, the interface, but the essential functions for games are implemented
in the game objects that exist as classes inside LeGaCy.
The UML diagram in Figure 5.10 shows the interaction of the classes in LeGaCy.
Note that the objects for the different LeGaCy game objects all inherit from a super
object called GraphicalGameObject. This is provided by the engine as the template
object for graphical objects in the game. Nevertheless, GraphicalGameObject also
has a super object called GameObject, which provides even more basic functionality. A look into these objects will help to find out about the core features that the
iEngine provides.
The default collection of game objects in LeGaCy is merely a suggestion, because
prototyping for other game genres might result in needing different game objects.
The inheritance structure of the object-oriented code allows for implementing those
additionally.
18 A yellow square represent the brush in the game world.
88
5 Implementation of a Game Prototyping Tool
Figure 5.10: UML view of the LeGaCy components.
5.4 A Game Prototyping Example
89
5.4 A Game Prototyping Example
In this section, we will demonstrate the single steps that a user goes through in
developing a gameplay prototype. Therefore, a game idea is sketched out subsequently. Next, a demonstration shows the steps from the idea to the first prototype
within LeGaCy.
5.4.1 The Game Idea
Video games seldom appeal to women. While there is already some research being
made in this direction [GranerRay04], and some games do have a certain fascination to women (like T HE S IMS), this problem is as old as video games themselves.
Presuming that one comes into the situation of being a game designer, who is
searching for ways to make games appeal to a female audience, the game idea
developed here will be a tribute to one of the first games that came to explore this
market: P AC -M AN.
P AC -M AN is a game, where the main character has the form of a pizza and is chased
by several enemies (all displayed as ghosts) while eating little white dots19 As a
homage to one of the most original ideas in gameplay, the game prototype will be a
little P AC -M AN game.
A pizza will serve as the main character of the game. But since
graphics are more evolved today than they were in the times of
P AC -M AN not just a yellow circle will suffice. A pizza, a delivery
boy, a mafia guy, and a chef (all shown in Figure 5.11)were created by a fellow designer to have some meaningful initial characters for a game.
For the setting, props would be represented in the form of pizza
toppings and the background is a green texture representing
some kind of salad. With this initial setting in mind, a game designer can start LeGaCy and begin creating a game.
Figure
5.11:
The characters
for the game
prototype.
19 When most of the people knew little about gaming and companies were trying to develop new market strategies, game designer Toru Iwatani found himself facing the same problem [Lammers90].
His company Namco assigned him the task of developing a game that everybody would like to play.
His researches included listening to conversations of women, especially in small diners. Then it
came to him: Food would be a topic that both genders are discussing much. Since he liked pizza
much, the idea for P AC -M AN was born.
90
5 Implementation of a Game Prototyping Tool
(a) First, the “Playground”
view is started within in
LeGaCy.
(b) A background object is selected and the brush changes
to represent the selected object from the game item list.
(c) Through placing these
solid objects into the level, a
basic maze is created, which
will later become a labyrinth
for P AC -M AN.
(d) After placing numerous background tiles on
the game map, the properties are selected in the
game items list.
(e) The properties are drawn into the game world
the same way as the background objects. The
brush places the props inside the level.
(f) Next, the antagonist type characters (called
enemy objects) are selected from the game item
list and put inside the grid of the level.
(g) Finally, the player avatar is placed inside the
game level.
Figure 5.12: Making a game prototype level in LeGaCy.
5.5 Summary
91
5.4.2 Demonstration
Figure 5.12 shows a step-by-step procedure of rapidly developing a game prototype
with LeGaCy. After the two-dimensional game graphics are drawn and renamed following the convention explained in the last subsection, they are loaded into their
appropriate categories in LeGaCy (shown in Figure 5.8). Then, one can easily click
together a level with those objects.
Each game object comes with a default behaviour that can be adjusted by simply
inspecting it. A progress done in Squeak by middle-clicking on an object. A flap that
triggers the game state between editing and playing lets one playtest if all settings
work correctly. After the game has been set up, the level information can be saved
in an XML file as stated before.
The file format was chosen because it is easily editable and a parser for these documents exists inside Squeak already. In conclusion, the process from getting an
idea to sketching it out on paper or with the help of LeGaCy takes almost the same
amount of time. Thus, LeGaCy really is designed to allow non-professional users to
prototype initial game ideas in a fast fashion.
5.5 Summary
In this chapter, the benefits of developing games in an educational environment
with Smalltalk, especially with Squeak were highlighted. In particular, the advantages of the design principles behind the frameworks of Tweak and the iEngine were
pointed out. Following this was an intense overview of the implemented features of
LeGaCy, which fulfils the basic needs for rapidly prototyping a game within Squeak
and with the help of the iEngine. Specifically the two different views on the same
codebase were mentioned. Last, an example of a rapidly developed prototype with
LeGaCy was given.
6 Summary and Conclusion
We’ve just finished that, but we can
make it better!
(S HIGERU M IYAMOTO )
This chapter summarises the results of the research carried out in this thesis. It
discusses and reviews the tools, approaches, and ideas behind this thesis. This
includes a detailed review of using Squeak for game development, and some ideas
and prospects of possible applications for LeGaCy in the future. The next section
provides personal remarks of the author, before the last section concludes the work
of this thesis.
6.1 Results of This Research
A thorough analysis of the game development process, which was elucidated in
chapter 2 as a tier-based and iterative process, was the point of origin for all further
argumentation in this thesis. There are many stages from the idea to the release,
and on each stage, multiple, interdisciplinary layers collaborate and exchange ideas
between one another.
During this process, prototypes can evolve parallel to game production, serving as
a testbed for new ideas or techniques, which might be completely eradicated at the
end of development phase. Also prototypes can serve as a core that is refined and
specialised further during all phases of development, ultimately leading to a finished game. Iteration cycles and milestones provide solid means for management
to control the results of developers and constantly improves the quality of games in
production.
While section 2.3 showed us that there are various prototypes that make up game
architectures, the most important prototype for computer games remains the gameplay prototype, because it deals with the most essential part of games, the gameplay
experience. It is important to keep in mind that good prototypes are not necessarily
connected to lean software.
93
94
6 Summary and Conclusion
Optimisation is not the key element for prototyping and thus, the separation of a
prototyping program and a game program is crucial. The computer is only one of
the tools suitable for creating gameplay prototypes.
• Educational Game Development Needs Accessible and Scalable Tools
Many tools discussed in chapter 3 were too complex to learn within a typical time-frame for academic courses (which usually run for a semester).
Some tools are also too expensive or work completely in a black box. For the
use in education, optimal tools are accessible, ideally open-source, and wellsupported software with a low learning curve allowing teachers and students
to employ them optimally for the development task they are up to.
The concept of supplying different views upon the same codebase allows students to adjust the way they interact with a development tool only by the skill
they acquire. During the time of use, ideally they become proficient enough to
start programming by utilising the framework of the tool.
• Computer Science Education can Profit from Game Development
As stated in chapter 4, game development teaches a wide variety of skills that
are especially needed there, but also in many other areas. These include areas
of traditional computer science as well as liberal arts. The benefit is not only
the motivation that students have, when approaching computer science topics,
but also the proximity to fields of application and the in-depth collaboration
between different disciplines.
• Squeak is Ideal for Teaching Concepts of Object-Orientation as Part of
Game Design
Squeak is primarily a tool for explorative learning and thus, it does an extraordinary job at exposing students to the principles of object-orientation. This abstraction does come at a price of lower speed, but is ideal to understand deeper
mechanisms that most object-oriented architectures expose. Thus, it is a good
introductory tool for people searching for a starting place for programming as
well as game development. Together with the Tweak and iEngine libraries, it is
also useful for helping novices understand computer game architectures.
• Game Design and Object-Oriented Design Supplement Each Other
Object-oriented design helps structuring any kind of architecture and gives it a
formal shape [Alphonce02]. This has not been true of most game architectures
of the past, where all importance was put towards being most efficient with the
code, even if that would mean loss of readability and reusability within a team.
Now, as teams grow and games become more complex, game architectures
need to be more formalised as well and therefore can employ many techniques
natural to object-orientation.
6.2 Discussion
95
All of the above deliberations led to the development of a prototyping tool, which
suits the special requirements of education. The most important of the latter is
the ease-of-use combined with scalable complexity that allows users to operate
on different levels of knowledge. Having a dynamic white box architecture, so that
most configurations can be made during its run-time, was an essential factor for
developing this tool in Squeak. Defining different views to a game world was a key
element that makes the tool suitable for students with varying skills.
6.2 Discussion
Game development is a relatively new field of academic research allowing the exploration of new concepts for gameplay [Crawford03, SmithL02, McNaughton04]
or graphical styles of games [Freudenberg04, Watt03]. Despite other areas of computer science, where techniques, tools, and educational focus have been well established over the years, game research remains a challenging academic field
[Kafai95, Squire03].
Especially, the transportation of techniques that make players want to master a
game - which means learning its rules - into education is highly interesting. Creating a gameplay experience, therefore, has much to do with placing rewards at right
point of time or level of skill. This keeps a player interested in a game. Using this
concept of motivation in education will be huge benefit for teaching any subject.
Coming back to the thoughts in chapter 4, computer science profits most from the
motivational power of games: Video games are the main reason for many students
to become interested in learning programming. Thus, a tool allowing playful as well
as more serious education can help novices to understand more abstract concepts
surrounding this subject.
One of the key concepts is object-orientation. Understanding this concept can help
all kinds of designers, because it represents the most natural way to design things
(as stated by Mark Overmars in section A.1). Game design and object-oriented design share the same core approach. More formal development steps of iterative
design work efficiently in game production. Providing a clear overview of iterative
development cycles can serve as a future reference for project managers.
Besides the theoretic concepts this thesis discussed, it also focussed on special
software development with - at least for game developers - uncommon tools, testing
new ways of developing games in an academic context. A specific review of how the
work with these tools turned out is given in the following subsections.
96
6 Summary and Conclusion
6.2.1 Critical Review
While the initial expectations towards a game development tool were quite high,
I came to realise that stressing the aspect of prototyping can take away much
complexity of the tool. This way, it fits better towards a specific need in education.
What I came to wonder about, was how many similarities existed between objectoriented design and game design. If games are merely systems of rules and these
rules are their components, then they are complex objects. The further the granularity is refined, the more interesting these systems become. The thought that many
systems can be refined in this way is definitely the reason, why object-oriented
design has become so popular (not only in programming).
On a completely different note; one critical thought after the development of LeGaCy
is that using one general tool for prototyping computer games might not be enough.
Although the concept of having different views on data is certainly well-fit for introducing students to basic game programming, thus allowing them become more
proficient at programming, different genres provide different challenges for game
design. Not all of them can be covered by one tool. It is more likely genre-specific
tools have to be developed to better suit particular needs.
This way, the granularity of prototyping tools needs to be less rough than in the
approach that I pursued. However, this is the first research in this area and thus
leaves many possibilities for extending it towards more refined tools or maybe
integrating it better with other languages and packages than Squeak.
To my mind, Squeak will primarily remain a tool for learning and is still too slow
to be used for the creation of high-end games1 . Thus, it remains questionable,
whether it is an ideal tool for game development. Nevertheless, its use in education
is beneficial, and will help to understand object-orientation much better than any
other programming environment.
6.2.2 Advantages and Disadvantages of Game Development with Squeak
Developing games with a high-level language, especially with one that is completely
unknown to most students is an approach that many of them have prejudices
against. It has proven to be challenging to convince them at the beginning. Since
education at an university focusses on concepts rather than training specific tools
or languages, most of the students are convinced by the educational power behind
Squeak at the end of a course.
1 Although many talented people are working on improving performance and three-dimensional
issues with the Croquet project, this is still in its infancy.
6.3 Future Work Perspectives
97
On the one hand, educational facilities have the responsibility to orient their education on industry needs and to help future developers by teaching techniques and
tools of the industry. Naturally, most students expect the work of a course on game
development to deliver a good prototype that can extend their portfolio.
Industry professionals know that in the games industry, the only thing besides
talent that separates the wheat from the chaff is a long track-record of completed
games. Understanding the concepts behind game development is another crucial
requirement.
On the other hand, academic institutions have the freedom to research in areas
where development is not possible in the industry, so that they can expose themselves to ideas that are not profitable there.
Traditional university education also aims at the mediation of conceptual thinking.
The understanding of mechanisms is usually more important than proficiency and
specialisation in a certain area. This again emphasises the use of a learning tool
[Beck89].
However, my opinion on this is that students should have the chance to get close
to both. While Squeak is good for novices, it should not remain the tool of choice if
students want to explore advanced areas of game development. Especially, if some
of the industry tools are available freely (like DirectX), I recommend using those as
well for more advanced classes.
6.3 Future Work Perspectives
At this stage, the functionality of LeGaCy is clear-cut and plain, only allowing the
construction of games that operate in a two-dimensional top-view environment.
This is due to the time constraints that this thesis was written in. With the limits
at hand, it was not possible to create a tool, offering full game functionality off the
top of one’s head.
In the future, the application can be further extended, by simply adding new elements to the creation menus that will allow further specification of the behaviours
of objects. The customisation of the user interface can be extended to allow for a
scripting language to be used a part of the environment.
It would also be more convenient to add user dialogues for the application to
incorporate the different mechanisms for different player types much better. This
way, one could part from the given naming scheme to load in object type images.
98
6 Summary and Conclusion
Areas of application
Although LeGaCy is custom-built for use in teaching game development at a
university-level course, it can certainly be used in other areas of education as well.
A possible use could be the prototyping for other learning concepts that involve
playful mechanisms.
The possibility of sketching out such an environment has often been raised, and
many institutions deal with the creation of learning games that are often not much
more than a prototype. These companies almost never have professional game
designers at hand but pedagogically trained personnel that wants to bring across
an idea in a playful way, which will accelerate learning. LeGaCy can be useful for
those kind of users, too.
6.4 Personal Remarks
I personally found the use of Squeak as a programming language a fresh, instructive, and interesting approach towards game development. The availability of many
toolsets and all libraries of the programming environment is something that is
unique, especially in open-source programs. However, all this comfort comes at the
price of speed and hardware power that Tweak and especially the iEngine consume
(more precisely, the calculations outside of the virtual machine).
Programming on such a high level makes up for some slowness discomfort. One
could argue that this slowness can efficiently be pushed towards better performance by optimising the code and transferring performance-critical calculations
into low-level code of the virtual machine. This, however, was not necessary for me,
because the focus of a prototyping tool needs not to be on optimisation.
There was much help from the impara GmbH though, but I was in doubt whether
the capabilities of the iEngine were useful for developing “real” games. This became
less important, when I realised that a real game and a prototype have to differ
essentially. The Buccaneers, Inc. game prototype was close to performing well, but
still had many issues with sound loading and speed of the graphics display.
Having some prejudices about Squeak at first, they were partly scattered when I
started using it regularly. One of the reasons is the code control, which was made
easy with the internal changeset system and a Monticello2 repository. I could easily
revert to stable versions, and comment on the actual code, I was uploading.
The good examples of implemented tools within Squeak were helpful but not very
2 Monticello offers version control functionality.
6.5 Conclusion
99
useful, since a lot of the code had to base on the iEngine, which still - after more
than a year - is horribly documented. I have to thank the programmers at impara,
because without their help, it would have been impossible to reuse the code. The
new user interface Tweak is better documented, and it features some good examples in the source code as well that help to get a grip of it. The concepts behind
Tweak are incredible and will make it a powerful addition to Squeak.
6.5 Conclusion
Still, this work was supposed to be on game design, not on using Squeak and the
concepts behind it. By using Squeak, there is no way of avoiding concentrating
on object-orientation, which actually became quite useful in my research. It helps
me see many similarities between the two, while learning the concepts of Squeak
was difficult for me at first. I came to accept the language and the environment as
useful for learning to program strictly object-oriented.
The results, however, were not much eye-candy, as one would expect them to be
with a lower-level language (even though those could not have been achieved in
the given time-frame, too). This trade-off bothered me at first, but since this work
concentrates on the educational possibilities of gameplay prototypes in Squeak, I
came to accept it as a good learning tool.
The challenges of LeGaCy lie in its future. With more development time at hand,
a skilled person might continue the work to craft it into something more reliable
and maybe even faster. I would not doubt the possibility of this tool also being implemented in another language and with a different focus. The problem is certainly
the genre and what genre a developer focusses on. There are so many different
directions that game development can take that I doubt there can be one universal
tool for prototyping but rather a more diverse range of tools, all in the sense of
granularity and middleware, allowing different topics and specifications.
Glossary
API
An Application Programming Interface is a set of definitions of the
ways in which one piece of computer software communicates with
another. It is a method of achieving abstraction, usually (but not necessarily) between lower-level and higher-level software.[Wikipedia]
A DD - ON
Add-ons are optional computer game modules that generally enhance the original game or supplement it by adding maps and graphical material.
C#
In this context, C# (pronounced C Sharp) is a programming language
developed by Microsoft as part of the .NET platform, which is both
reflective and object-oriented. Its syntax is directly based on Java
and C++, while many of the ideas derive from the original Smalltalk.
C ROQUET
The Croquet project seeks to offer an open source, networked, 3d
environment for collaborative work. While its primary target is in the
educational area, it is conceived from the start as a series of shared
worlds which can be created in other public and private domains
where advanced collaborative software is needed. [Wikipedia]
DLL
A Dynamic Link Library are special programming routines that ,once
loaded into the memory of a computer, can be used by multiple applications at the same time.
D EVELOPER
A computer game developer is the person or usually the company
that develops a computer game. A developer studio is organised in
many divisions, spanning all areas of game development, including game/level design, programming, graphics, music/sound, storytelling and quality assurance.
E3
The Electronic Entertainment Expo is the world’s largest annual
trade show and the third largest gaming convention for the computer
101
102
Glossary
and video games industry. The expo is only open to game industry
professionals and journalists who are over 18. It is usually held in
May every year. [Wikipedia]
GCDC
The Games Convention DEVELOPERs Conference is an annual gathering of international video game developers in Europe. The structure is less formal yet somewhat similar to the GDC.
GDC
The Game Developers Conference is an annual gathering of video
game developers. The conference is comprised of an expo and a variety of tutorials, lectures and round-tables by industry professionals
on game-related topics covering programming, design, audio, production, business and legal, and art.
GML
Game Maker Language is a programming language developed for
use with a computer game creation application called Game Maker.
It was created by Mark Overmars to help supplement the drag’n’drop
system normally used within his program
GUI
A Graphical User Interface is the kind of interface of a computer that
is visually represented before the user’s eyes and serves as a primary
interaction point for most computer applications.
G AME E NGINE A game engine is the core element of any computer game. The use of
a game engine makes creating content for a video game much easier. A lot of the core technology of a game, including scripting, level
design, networking, collision detection, artificial intelligence, sound
and graphics rendering is done by the game engine. Most often it
serves as a high level layer to the low level technology mentioned
before. Figure B.3 shows a schematic overview of a game engine.
IDE
An Integrated Development Environment comprises a lot of components needed for the development of software, including the text
editor, compiler, linker, debugger or sometimes an interpreter. The
text editor often offers many functions to format the code for better
readability and automatisation of recurring tasks.
IEEE
The Institute of Electrical and Electronics Engineers is an international non-profit, professional organization for the advancement of
technology related to electricity. It is the largest technical professional organization in the world (in number of members), with more
than 360,000 members in 150 countries (as of 2004). [Wikipedia]
Glossary
103
IGDA
The International Game Developers Association is a non-profit organization designed to promote, and strengthen the video game industry, and have computer games recognised as an art form. As part
of promoting the industry, the IGDA presents the Game Developers Choice Awards annually at the Game Developers Conference.
[Wikipedia]
LEGACY
LeGaCy stands for Lennart’s Game-Prototype Creation utility, which
is the name the author of this thesis gave his software. It should be
taken with a grain of salt as it also underlines the fact that the tool
needed to leave out some desired features, which can be developed
by others in the future.
M IDDLEWARE The term Middleware describes an independent communications
layer between applications, which hides their complexity. When a
software is broken up into separate components that can be used
for other software as well, these components serve as middleware.
M ONTICELLO
Monticello is a distributed, concurrent, versioning system for Squeak
code. Unlike other versioning systems, in which a package is associated with one repository, Monticello supports different versions on
many repositories.
NDA
A Non-Disclosure Agreement is a confidential and binding legal
agreement, which has to be signed by involved parties to prevent
them from sharing technology or knowledge about technology. It is
part of many game software licenses.
P ATCH
A patch is way to fix software bugs after a game has been released.
They are often made available on the internet and in pc magazines.
Unfortunately, patches have become a common way to make (especially) pc games playable after the retail version sometimes crashes
from the start. Some games even have to be re-released after most of
the bugs are fixed. Recent examples for this are S ÖLDNER, T HE F ALL,
and S ACRED.
P ITCH
A pitch (especially in game development more correctly defined as
an elevator pitch) is the presentation of a game prototype usually
done at a large sales fair (like the E3) often done in a very short
time-span to get a publisher interested in producing the game, which
means funding further development, marketing and distributing the
product. Thus, it is an essential part of game development.
104
Glossary
P UBLISHER
A publisher in game development refers to the company that usually
does the marketing, distribution and sales for the developer.
SCM
Software Configuration Management is a set of activities designed
to control change by identifying the work products that are likely to
change. In other words, SCM is a methodology to control and manage
a software development project. [Wikipedia]
SDK
A Software Development Kit is a set of tools, APIs and documentation
to assist with the development of software in a specific computer
language or for a particular operating environment.
S MALLTALK
Smalltalk is an object-oriented, dynamically typed, reflective, programming language created at Xerox Palo Alto Research Centre by
Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg, and others during the 1970s, influenced by Sketchpad and Simula-97. The language was released as Smalltalk-80 and has been widely used since.
Smalltalk is in continuing, active development. [Wikipedia]
S QUEAK
Squeak is a portable, open-source, object-oriented multimedia development environment and programming language that derived from
Smalltalk. It was originally developed in the 1970s by Dan Ingalls,
Ted Kaehler, John Maloney, Scott Wallace and Alan Kay at Xerox
Palo Alto Research Centre. The usage of Squeak is discussed in chapter 5.
UNIX
Uniplexed Information and Computing System is a portable, multitasking and multi-user computer operating system originally developed by a group of AT&T Bell Labs employees including Ken Thompson, Dennis Ritchie and Douglas McIlroy. [Wikipedia]
XML
The Extensible Markup Language is a general-purpose markup language for creating special-purpose markup languages recommended
by the World Wide Web Consortium (W3C). It is a simplified subset of
the Standard Generalised Markup Language (SGML), which can describe many different types of data. Its primary purpose is to simplify
sharing data across different systems [Wikipedia]
XNA
Microsoft’s XNA (Xbox/DirectX New generation Architecture) is the
attempt to build a platform that combines different APIs for game
development to create a common framework for the Xbox console as
well as for the next-generation Windows operating system.
References
[8BitMuseum05] 8Bit-Museum. The Dot Eaters/The Number Crunchers - Die
Geschichte der Videospiele & Heimcomputer, 2005.
http://www.
8bit-museum.de, last accessed July, 2005.
[Alphonce02] Carl Alphonce and Phil Ventura. Object orientation in cs1-cs2 by
design. SIGCSE Bull., 34(3):70–74, 2002.
[Barry05] Isaac Barry. Introduction to Game Development, chapter 2.2 Game Design, pages 99 – 161. Charles River Media, 2005.
[Bates01] Bob Bates. Story: Writing Skills for Game Developers. In Game Design
Proceedings of the Game Developers Conference 2001, San Jose, California, USA, 2001. Game Developers Conference.
[Bates02] Bob Bates. Game Design: The Art and Business of Creating Games. Premier Press, 2002.
[Beck89] Kent Beck and Ward Cunningham. A laboratory for teaching object oriented thinking. In OOPSLA ’89: Conference proceedings on Object-oriented
programming systems, languages and applications, pages 1–6, New York,
NY, USA, 1989. ACM Press.
[Bethke03] Eric Bethke. Game Development and Production. Wordware Publishing,
2003.
[Boettcher05] Ralf Armin Böttcher. Flow in Computerspielen. Master’s thesis, Ottovon-Guericke-University Magdeburg, Magdeburg, 2005. Diplomarbeit at
the Institute for Simulation and Graphics.
[Claypool05] Kajal Claypool and Mark Claypool. Teaching Software Engineering
Through Game Design. In Proceedings of the Innovation and Technology in
Computer Science Education (ITiCSE) Conference, Lisbon, Portugal, June
2005.
[Costikyan02] Greg Costikyan. I Have No Words & I Must Design: Toward a Critical Vocabulary for Games. In Frans Mäyrä, editor, Proceedings of Computer Games and Digital Cultures Conference, page 9–33, Tampere, Finland, 2002. Tampere University Press. http://www.digra.org/dl/db/
05164.51146, last accessed September, 2005.
105
106
References
[Crawford03] Chris Crawford. Chris Crawford on Game Design. New Riders Publishing, Indianapolis, Indiana, USA, first edition, June 2003.
[Csikszentmihalyi91] Mihaly Csikszentmihalyi. Flow. Perennial, 1991.
[DassaultSys05] Dassault Systèmes.
Virtools Website, 2005.
virtools.com, last accessed October, 2005.
http://www.
[DeBono04] Edward de Bono. How To Have a Beautiful Mind. Vermilion, 2004.
[DeBono85] Edward de Bono. Six Thinking Hats. Little, Brown, and Co., 1985.
[ElectronicArts05] Electronic Arts.
EA Academy - How EA Makes Games,
2005. http://www.jobs.ea.com/how_ea_makes_games.html, last accessed July, 2005.
[Epic05] Epic Games. Unreal Engine Technology website, 2005. http://www.
unrealtechnology.com/ last accessed July, 2005.
[Freudenberg04] Bert Freudenberg, Maic Masuch, and Thomas Strothotte. RealTime Halftoning: Fast and Simple Stylized Shading. In Andrew Kirmse,
editor, Game Programming Gems 4, pages 440–443. Charles River Media,
2004.
[Fullerton04] Tracy Fullerton, Christopher Swain, and Steven Hoffman. Game
Design Workshop - Designing, prototyping and playtesting games. CMP
Books, first edition, March 2004.
[Gadegast05] Patty Gadegast. Objektorientierte Programmierung von Entertainmentumgebungen in Squeak, 2005. Study report (Studienarbeit) at the
Institute for Simulation and Graphics.
[Gamma95] Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison–
Wesley, 1995.
[GranerRay04] Sheri Graner Ray. Gender Inclusive Game Design: Expanding the
Market. Charles River Media, Massachusetts, USA, 2004.
[Guzdial01] Mark Guzdial. Squeak: Object-Oriented Design with Multimedia Applications. Prentice Hall, first edition, 2001.
[Guzdial02] Mark Guzdial and Kim Rose. Squeak: Open Personal Computing and
Multimedia. Prentice Hall, first edition, 2001.
[Hodgson03] David Hodgson. Half-Life 2: Prima’s Official Strategy Guide. Prima
Games, 2004.
[IGDABusiness03] IGDA Business Committee. Quality Assurance/Testing Best
Practices, April 2003. Best Practice Reports, last accessed July 2005.
References
107
[IGDAEducation03] IGDA Education Committee. Curriculum framework, February
2003. IGDA Curriculum Framework - The Study of Games and Game
Development, Version 2.3 beta, February 25, 2003, last accessed July
2005.
[IdSoftware05] id Software.
Doom Product Website, 2005.
http://www.
idsoftware.com/games/doom/, last accessed July, 2005.
[Ingalls97] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay.
Back to the future: the story of squeak, a practical smalltalk written in
itself. In OOPSLA ’97: Proceedings of the 12th ACM SIGPLAN conference on
Object-oriented programming, systems, languages, and applications, pages
318–326, New York, NY, USA, 1997. ACM Press.
[Kafai95] Yasmin B. Kafai. Minds In Play: Computer Game Design as a Context for
Children’s Learning. Lawrence Erlbaum Associates, Hillsdale, NJ, 1995.
[Kay93]
Alan C. Kay. The early history of smalltalk. SIGPLAN Not., 28(3):69–95,
1993.
[Koch05] Nadin Koch. Baumgenerierung in Computerspielen, 2005. Study report
(Studienarbeit) at the Institute for Simulation and Graphics.
[Koelling96] Michael Kölling and John Rosenberg. An object-oriented program development environment for the first programming course. In SIGCSE ’96:
Proceedings of the twenty-seventh SIGCSE technical symposium on Computer science education, pages 83–87, New York, NY, USA, 1996. ACM
Press.
[Kushner03] David Kushner. Masters of Doom: How Two Guys Created an Empire
and Transformed Pop Culture. Random House, 2003.
[Lammers90] Susan Lammers, editor. Programmers at Work: Interviews With 19
Programmers Who Shaped the Computer Industry. Microsoft Press,U.S.,
reissue edition, August 1990.
[Lischka02] Konrad Lischka. Spielplatz Computer - Kultur, Geschichte und Ästhetik
des Computerspiels. Verlag Heinz Heise GmbH & Co KG, Hannover, Germany, 2002.
[Llopis04] Noel Llopis. Optimizing the content pipeline. Game Developer, 11(4):36–
44, April 2004. http://www.gamesfromwithin.com/articles/0408/
000027.html, last accessed May, 2005.
[Llopis05] Noel Llopis. Introduction to Game Development, chapter 3.1 Teams and
Processes, pages 163 – 183. Charles River Media, 2005.
[Llopis05b] Noel Llopis. Introduction to Game Development, chapter 3.2 C++, Java,
and Scripting Languages, pages 183 – 202. Charles River Media, 2005.
108
References
[Makar03] Jobe Makar. Macromedia Flash MX Game Design Demystified. Peachpit
Press, first edition, 2003.
[Maloney00] John Maloney. An Introduction to Morphic: The Squeak User Interface
Framework. Squeak: Open Personal Computing and Multimedia, pages 39–
68, 2000.
[Masuch02] Maic Masuch and Bert Freudenberg. Teaching 3D Computer Game
Programming. In Ralf Dörner, Christian Geiger, Paul Grimm, and Michael
Haller, editors, Workshop Proceedings Production Process of 3D Computer Graphics Applications - Structures, Roles, and Tools, Aachen, 2002.
Shaker.
[Masuch04] Maic Masuch. Unkonventionelle Interfaces für Computerspiele. In
Workshop Methoden und Werkzeuge zukünftiger Computerspiele der GIJahrestagung 2004, pages 165–169, Ulm, 2004. Gesellschaft für Informatik, P. Dadam and M. Reichert.
[Masuch04b] Maic Masuch and Lennart Nacke. Power and Peril of Teaching Game
Programming. In Norman E. Gough and Quasim Mehdi, editors, International Conference on Computer Games: Artificial Intelligence, Design and
Education, pages 347–351, Reading, UK, November 2004. University of
Wolverhampton UK.
[Masuch05] Maic Masuch and Michael Rüger. Challenges in Collaborative Game
Design: Developing Learning Environments for Creating Games. In
Third International Conference on Creating, Connecting and Collaborating
through Computing, pages 67–74, Kyoto, Japan, January 2005. Yahiko
Kambayashi and Katsumi Tanaka and Kim Rose.
[McCallum04] Simon McCallum, Jayson Mackie, and Lennart Nacke. Creating a
Computer Game Design Course. In Proceedings of the New Zealand Game
Developers Conference. NZGDC, 2004.
[McNaughton04] M. McNaughton, M. Cutumisu, D. Szafron, J. Schaeffer, J. Redford, and D. Parker. ScriptEase: Generative Design Patterns for Computer
Role-Playing Games. In Proceedings of the 19th IEEE International Conference on Automated Software Engineering (ASE’04), pages 88–99. Institute
of Electrical and Electronics Engineers, 2004.
[Memisoglu04] Maral Memisoglu. Usability for Video Games (Die Anwendung von
Usability-Methoden bei der Entwicklung von Videospielen). Game Face,
8:42–43, October/November 2004.
[Mencher03] Marc Mencher. Get in the Game! Careers in the Game Industry. New
Riders Publishing, 2003.
[Mertens02] Mathias Mertens and Tobias Meißner. Wir waren Space Invaders Geschichten vom Computerspielen. Eichborn, Frankfurt a. M., Germany,
2002.
References
109
[NXN05] NXN. Official Alienbrain website, 2005. http://www.nxn-software.
com/whde.php, last accessed July, 2005.
[Nacke04] Lennart Nacke. Co-Development, Delivery and Structural Analysis of a
Computer Game Course, 2004. Study report (Studienarbeit) at the Institute for Simulation and Graphics.
[Naur68] Peter Naur and Brian Randell. Software engineering: Report of a conference sponsored by the NATO Science Committee, 1968.
[Nielsen05] Jakob Nielsen. useit.com: Jakob Nielsen’s Website, 2005. http://www.
useit.com/ last accessed July, 2005.
[Overmars04a] Mark H. Overmars. Teaching Computer Science through Game Design. In IEEE Computer, volume 37, pages 81–83. Institute of Electrical
and Electronics Engineers, April 2004.
[Overmars04b] Mark H. Overmars. Learning object-oriented design by creating
games. In IEEE, volume 23, pages 11–13. Institute of Electrical and Electronics Engineers, 2004.
[Overmars04c] Mark Overmars. Game design in education. Technical Report UUCS-2004-056, Institute of Information and Computing Sciences, Utrecht
University, 2004.
[Pagulayan03] Randy J. Pagulayan, Kevin Keeker, Dennis Wixon, Ramon L.
Romero, and Thomas Fuller. User-centered design in games. pages 883–
906, 2003.
[Parberry05] Ian Parberry, Timothy Roden, and Max B. Kazemzadeh. Experience
with an industry-driven capstone course on game programming: extended
abstract. In SIGCSE ’05: Proceedings of the 36th SIGCSE technical symposium on Computer science education, pages 91–95, New York, NY, USA,
2005. ACM Press.
[Pleva04] Greg Pleva. Game programming and the myth of child’s play. J. Comput.
Small Coll., 20(2):125–136, 2004.
[Raskin00] Jef Raskin. The Humane Interface. New Directions for Designing Interactive Systems. Addison Wesley, 2000.
[Rollings03] Andrew Rollings and Ernest Adams. Andrew Rollings and Ernest
Adams on Game Design. New Riders, Indianapolis, Indiana, USA, first
edition, May 2003.
[Rollings03b] Andrew Rollings and Dave Morris. Game Architecture and Design - A
New Edition. New Riders, Indianapolis, Indiana, USA, 2003.
[Salen03] Katie Salen and Eric Zimmerman. Rules of Play: Game Design Fundamentals. MIT Press, 2003.
110
References
[Schnetzler04] Nadja Schnetzler. Die Ideenmaschine. Wiley-VCH, 2004.
[Schuster04] Grit Schuster. Autonomes Verhalten für digitale Charaktere in interaktiven 3D-Welten. Master’s thesis, Otto-von-Guericke-Universität
Magdeburg, Magdeburg, 2004. Diplomarbeit at the Institute for Simulation and Graphics.
[Sheerin04] Peter Sheerin. Must-know technologies. Game Career Guide, pages
63–64, Fall 2004.
[Sheffield05] Brandon Sheffield. Unreality: Epic’s Mark Rein on the Future of Game
Middleware. Gamasutra, July 2005. http://www.gamasutra.com/
features/20050719/sheffield_01.shtml, last accessed July, 2005.
[Smed03] Jouni Smed and Harri Hakonen. Towards a Definition of a Computer
Game. Technical Report TUCS-553, Turku Centre for Computer Science,
Department of Information Technology, University of Turku, 2003.
[SmithDA03] David A. Smith, Alan Kay, Andreas Raab, and David P. Reed. Croquet - a collaboration system architecture. In First Conference on Creating, Connecting and Collaborating Through Computing, 2003. C5 2003.
Proceedings., pages 2–9. IEEE, 2003.
[SmithL02] Lesley Smith and Samuel Mann. Playing the Game: A Model for Gameness in Interactive Game Based Learning. In Proceedings of the 15th Annual NACCQ, Hamilton, New Zealand, July 2002. NACCQ.
[Squeak05] Squeak. An idea processor for children of all ages, 2005. http://www.
squeak.org/, last accessed July, 2005.
[Squire03] Kurt Squire. Video games in education. International Journal of Intelligent Simulations and Gaming, 1(2), 2003.
[Watt03] Alan Watt and Fabio Policarpo. 3D Games: Animation and Advanced RealTime Rendering: 2. Addison-Wesley, first edition, 2003.
[Yu02]
Connie Yu. Developing a Game Programming Course For Computer Science Majors In a Liberal Arts College. In Proceedings of the First International Conference on Information Technology & Applications, Bathurst,
Australia, November 2002. ICITA.
List of Figures
1.1 One of the first video games in history: PONG. . . . . . . . . . . . . . .
1.2 A screenshot of the games panel in Valve’s Steam. . . . . . . . . . . . .
1.3 The students of a game design course at the Otto-von-Guericke University of Magdeburg. They gather together for analysing video games,
which will later help them producing a game in a team project. . . . .
1
2
4
2.1 An outline of iterative development as sketched by [Fullerton04]. . . .
2.2 The concept phase is the start of every game project . . . . . . . . . . .
2.3 The pre-production phase, where the game design document and the
production plan merge to reach the actual prototype creation. . . . . .
2.4 Physical gameplay prototypes created with not much more than pen
and paper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5 The game iteratively evolves from the basic prototype to an early alpha stage. Thick arrows indicate a stronger collaboration between the
departments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6 Concept art character portraits for two different computer games. . . .
2.7 Alienbrain Manager Client is an application that tracks all changes
made to the files in a project and communicates those with a central
server for sharing them with internal and external team members. . .
2.8 The full production phase takes a game from alpha to gold master.
Thick box outlines emphasise the departments mainly involved. Most
work is probably done by the level designers and the quality assurance
towards the end. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.9 Several graphical software defects from different retail versions of computer games. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.10 Mantis is a popular open-source bug-tracking tool used by the company impara GmbH for identifying software defects. . . . . . . . . . . .
2.11 The last stages of Production . . . . . . . . . . . . . . . . . . . . . . . . .
2.12 Prototype of the game “Good Bugs, Bad Bugs”, produced in Squeak by
students of the game design course at the Otto-von-Guericke University.
3.1 An overview of a game engine based on Masuch [Masuch05]. Simulation tasks like Physics or AI tend to be handled by middleware these
days. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
11
13
14
16
17
18
20
21
22
23
28
32
111
112
List of Figures
3.2 Different game genres have different requirements for graphics, which
can be seen in this comparison of a high-end shooter on the left to a
regular card game application on the right. . . . . . . . . . . . . . . . .
3.3 Schematic views of middleware. . . . . . . . . . . . . . . . . . . . . . . .
3.4 Examples for middleware applications and the differentiation of middleware and production tools. . . . . . . . . . . . . . . . . . . . . . . . .
3.5 Professional and hobby game development suites, multimedia authoring environments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6 The Macromedia Flash MX interface and a screenshot of a casual game
developed with it. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7 The GUI of Game Maker and a game developed with it. . . . . . . . . .
3.8 A tool from the Vision SDK and a screenshot of game that uses the
game engine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.9 Unreal Engine 3 - Some of the editor components [Epic05]. . . . . . . .
4.1 Different education for future game developers at the Otto-vonGuericke University Magdeburg and the Games Academy Berlin. . . .
4.2 The game with the best game design in 2005 was K ATAMARI D AMACY,
making his game designer Keita Takahashi popular over night. . . . .
4.3 The Croquet project aims at developing a flexible framework with that
any user interface concept can easily be prototyped and deployed
[SmithDA03]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4 The different mini games that were analysed for finding necessary core
game features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5 A high-level overview of the proposed architecture. . . . . . . . . . . . .
5.1
5.2
5.3
5.4
Etoys is a high-level interface for scripting within Squeak. . . . . . . .
Smalltalk MT and the Aura game that was created with it. . . . . . . .
The two GUI environments used in Squeak before the invention of Tweak.
The outline of the mixed Squeak-Tweak work environment that was
used for programming LeGaCy. . . . . . . . . . . . . . . . . . . . . . . .
5.5 Setting up the project Pirates. . . . . . . . . . . . . . . . . . . . . . . . .
5.6 Buccaneers, Inc. is a game demo developed by impara to show what is
possible in terms of game development in Squeak with the iEngine. . .
5.7 LeGaCy’s different views on the code base: A programmer view and a
level-design view. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.8 The mechanism of updating the assets within LeGaCy. . . . . . . . . .
5.9 Accessing the game objects in LeGaCy. . . . . . . . . . . . . . . . . . . .
5.10 UML view of the LeGaCy components. . . . . . . . . . . . . . . . . . . .
5.11 The characters for the game prototype. . . . . . . . . . . . . . . . . . . .
5.12 Making a game prototype level in LeGaCy. . . . . . . . . . . . . . . . . .
34
35
36
38
40
41
42
48
54
56
60
63
68
72
74
76
78
79
80
83
85
86
88
89
90
B.1 Middleware, game development suites and asset management tools. . 133
B.2 The iterative game development process using the concepts suggested by [Mencher03, ElectronicArts05, Fullerton04, Bethke03] and
[Masuch05] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
List of Figures
113
B.3 A conceptual overview of a game engine based on Masuch [Masuch05] 135
B.4 The ingredients of casual mini games that were analysed for creating
the prototyping tool LeGaCy. . . . . . . . . . . . . . . . . . . . . . . . . . 136
Appendix A
Interviews
A.1 Interview with Mark Overmars
Mark Overmars is a Professor at the Department of Information and Computing
Sciences at Utrecht University in the Netherlands. He teaches courses on game
design and has created a hobby game development tool named “Game Maker” that
has become very popular over the years. The interview is slightly abridged and was
conducted personally during the GCDC 2005 in Leipzig.
My Question:
In how far do you think that tools like the Game Maker can help
students in finding out the essentials of game creation? What
aspects are most important to a tool that teaches students game
development?
Mark Overmars: Oops, that’s a difficult one. (laughs). First, I think it is important
to make a distinction between different aspects of gaming. You
have the design, you have the technology development and you
have the art creation. A big problem is, of course, that tools
are meant to create complete games, which involves all of these
aspects.
However, at the same moment, usually not the same people are
good at these. That is a problem. I think it is difficult - in general
- to use a tool for teaching people something about game design
without forcing them to know something about art, design and
about the implementation.
My Question:
So would you say that a tool like Game Maker focusses more on
teaching students the game design part and how everything in
115
116
Appendix A Interviews
game development connects?
Mark Overmars: What I tried to do in Game Maker is to write a tool, in which the
emphasis can lie on a design aspect. To achieve that I did two
things: One is to build an easy interface to do the programming,
drag-and-drop objects and still have all the choices. The second
issue is that I never went into making 3d games. That has more
to do with the art part. If you deal with 2d games then normally
you can use standard sprites. There are many of them available.
[...]
If you want to do a three-dimensional game, this is impossible.
Even though there is standard stuff, you still have to design
yourself. Modelling of the world gets much more complicated
and so on. This means that you have to focus on solely artistic
parts.
My Question:
If students are going to learn about game design, is it necessary
that they learn about 3d modelling? For me, it always looked
like you left out 3d modelling in Game Maker intentionally, so
students could focus on the basics of game design.
Mark Overmars: In the course I teach at Utrecht University that is what I do.
Actually, in the original year I did not. Therefore, the course
developed over the years. In the beginning, halfway through they
had to do a small game using Game Maker in 2d and then, at
the end, they were making a 3d game using VirTools, which I
found okay. You have to have a development tool that makes it
easy to do these things.
Now, the effect was that they were always unhappy with the
results of the 3d game and it was also lousy what came out
of the 3d game. Definitely, they completely forgot about game
design once they were doing the 3d game. They were mainly
modelling the worlds and making it interesting but then forgot
about what to do.
My Question:
So, modelling is more complex, right?
Mark Overmars: It is just more work. It is more complex, but you easily focus on
the wrong things. Nevertheless, there is another question: Do
A.1 Interview with Mark Overmars
117
you want to teach people to become game designers? Because
you might assume that by asking and I much doubt that you
want to teach people to become game designers.
Because I think the number of game designers that this world
needs is extremely small and than I think you only become
a game designer by much experience in many different areas.
Therefore, what I do in the course: I concentrate on game design.
However, I only teach that course because I feel it is important
to our students, which are computer science students and who
should become technology people to, at least, understand a part
of the whole story.
I would not like to see a curriculum that focusses just on design.
It is the same, which people say in the industry. They say you
cannot train to become a game designer. You first become one
of the other people and then some of these people become game
designers in the process.
My Question:
We have many computational visualistics students, which are
more into 3d graphics. They are the programmers that know a
lot about graphics and then they want to make the transition
to games. How can one softly push these people softly towards
making games?
Mark Overmars: I think then it is very important to let them
their art. (laughs)
My Question:
NOT
concentrate on
Because...
Mark Overmars: Because then they start concentrating just on the art. They are
computer science students and they should start concentrating
on programming. If they put much time into doing great graphics
and great motion planning, then they forget there is a game for
which it is necessary to program. Game Maker was never written
for that, of course. Game Maker was written for kids like high
school kids that like games.
My Question:
It was never written for educational use?
118
Appendix A Interviews
Mark Overmars: It was never written with - at least not university level - education in mind at all. I can explain the history, because it is a bit
funny. I had my children growing up and I have always been
interested in user interface design. By the way - Game Maker is
user interface - that is the main part of Game Maker. It is not
the game engine or anything.
I wrote some user interface packages in the old days for certain
graphics machines. The first software I wrote was a drawing
program for people that cannot read. This makes you rethink
your user interface because you cannot write things down. [...]
Then I wrote a visual version of logo.
Again, with some sort of a drag-and-drop-interface that also
later came into Game Maker. Then I realised that making a program that draws something was not exciting enough for kids any
more. Therefore, my intent was a program that could animate
and then that turned into Game Maker - very soon.
Before the first version was released this was already about
games. So it was really meant for kids from 10 and older. It
was the idea to teach them how to do programming and then
use creating games as the mechanism to understand ideas like
object-oriented design. That is also why in Game Maker, there is
much emphasis on the object-oriented design part.
It is very object-oriented, which in the end makes it a perfect tool
to make the game design, I think. Nevertheless, that is maybe
a bit more of a coincidence, rather than that I planned it. Now,
education has been on my mind, but that is because I wanted
to teach them something. The other main idea that I stuck to is
simplicity. My goal is always keeping it simple.
My Question:
But what about the ideas like the Game Maker Language (GML)?
Did you implement these from the start?
Mark Overmars: There was a scripting language in the first version. Yes. But
it was limited in its possibilities. I did that because, as I said,
the goal was to teach people how to program, so I hoped that
at some stage they would want to write in a programming language. Again, the goal was more towards the programming than
towards the game design originally. Now soon this changed and
A.1 Interview with Mark Overmars
119
the focus was on game design.
My Question:
Do you think those two fit together and complement each other?
One idea that I have been researching in my thesis is that objectoriented software engineering and game design somehow complement each other, because you have to think in components. If
you subdivide a game into certain ingredients that interact with
one another, you get an object-oriented model as well.
Mark Overmars: I am not sure. This is an interesting question. What I do think
is that for a game designer it is natural to think in an objectoriented way. For most designers it is natural to think in an
object-oriented way. Object-oriented design, even though in most
programming-language courses that are taught to computer science students this is considered something complicated.
It is, however, the easiest way of thinking about things. Especially if you can imagine these objects as being real objects and
that, of course, is what you can do in a game. Although you
have control over objects in a game, I am not sure whether this
relation is there.
However, the object-oriented design in Game Maker makes it
easy for people, which do not know much about programming,
to create what they want to create because they think in that
way, anyway. Still, I would not recommend the designers to do
the programming or the programmers to do the design.
My Question:
Is it better to teach a course on game design at a technical university to computer science students? What is the best starting
point for people that want to take it to the next level in creating
games?
Mark Overmars: The way we do it in Utrecht now is as follows: In the Utrecht
area we have five different curricula that cope with game design. Within computer science we have a curriculum that is
technology-oriented and in liberal arts there is a curriculum
that talks a lot about cultural aspects, storylines, etc.
In the art school, there are two curricula. One focusses on design, also graphical design, and the other one is about art: The
120
Appendix A Interviews
kind of art with a capital “A”. These people make performances
with game elements. And then there is another “Fachochschule”type with an education in media technology, where people build
things.
We are putting all of these together in something called UPGEAR
now. It stands for “Utrecht Platform 4 Games Education and
Research”1 . (smiles). I made that word up, so I am really proud
of that one. The first mission is to ask high school kids: What
are you interested in? You say you want to do something with
games. What do you want exactly? What of these five areas,
are you interested in? Therefore, they realise that these areas
are different. There is no such thing like “I study games”. Then,
based on that you decide which curriculum and place you go.
I think, in each of these there should a little room for all the
others, because people in the end have to communicate with one
another. [...]
My Question:
If you work in a game creation environment, the artists usually
have to at least know how to export assets into game engine...
Mark Overmars: [...] Of course, it would be great to have people that are able to
do everything. However, there are just too few of these people
around. For me, the game design course in the computer science
curriculum is the only design course. It is there to make the
computer scientists feel humble, because they have a role in the
whole process. They are not the thing that matters. In the end,
it is the game design that matters.
If you go back to your first question, “do tools like Game Maker
help there?” Yes, I think, because they help you focus on a particular aspect, which makes it easier to learn about that. People
that did do art education and have always been creating art tend
to create much nicer games than the computer scientists do,
because they think from a design perspective.
My Question:
So your tool helps both worlds: it helps the computer scientists
and the designers?
1 For more information visit http://www.upgear.nl
A.1 Interview with Mark Overmars
121
Mark Overmars: Well, it helps the computer scientist to get an insight. Makes
them not worry too much about programming. Sometimes by
limiting them in what they can do. For the designer you give
them a tool, so they can do some things they never could, if they
had to program them or use a more complex tool like Flash or
Director. I think, these help, but in the end it is not the tools, it
is the education that matters and the teacher that teaches the
topics.
And to be honest, if I look at what I see in the different curricula
in the different countries at the moment, often the teachers do
not understand much about game design when they are teaching these courses. Finding good people to teach is, I guess, the
major problem in setting up these curricula. [...]
My Question:
That brings you back to your statement: Keep it simple!
Mark Overmars: Well, yeah, it is this KISS principle which says “Keep it simple,
stupid”. This is a standard principle in interface design. The
programming language in Game Maker supports that much. Everything that I consider being too complex for the average user,
I only put in as functions in the programming language and not
in the user interface. Because of that, I added 3d graphics to
the latest version, but it is only in the programming language.
Therefore, anybody else will not even see it and it does not
become harder to use the tool. [...]
I had these workshop kids, probably between twelve and fifteen
and in this workshop; we let them make a little maze game
with Game Maker. After they all had made this maze game,
I said, “you probably do not realise it, but games like D OOM
are just maze games. They only put a fancy interface and first
person view around it.” What I showed them was a D OOM-like
game that I made in Game Maker. I also showed them the level
design, which was just a maze. The same game, they had made
before. Only these objects, rather than being 2d, are drawn in
three dimensions. The rest of the gameplay is completely twodimensional, which even the makers of Doom realised. [...] 3d
has often not that much to do with gameplay, although it can
enhance the immersion effect.
122
Appendix A Interviews
A.2 Five Questions for Four Game Industry Veterans
In the following, you will find a list of four interviews with veterans from the game
industry. I especially wanted to get the game designers’ views on game development
and contrast it with that of a programmer. Therefore, all of them had to answer
the same questions and express their feelings and thoughts towards game development, education and object-oriented design.
I found these interviews more informative than most of the papers I have read
about game education. The e-mail interviews happened shortly after a meeting with them on the GCDC 2005 in Leipzig, except for the interview with David
A. Smith. I interviewed him by e-mail with the help of the folks at the impara GmbH.
A.2.1 Interview with Bob Bates
Bob Bates currently is the chairperson of the IGDA. Since he started game design
at Infocom (1986), he contributed to making more than 25 AAA titles (for example
Unreal 2). He speaks at industry conferences [Bates01] and writes books on game
development [Bates02].
My Question: Do you think the use of a game creation suite (like a development
kit - as for example 3d Game Studio or Renderware Studio) can
help students understand game development in a university-level
course?
Bob Bates:
Definitely yes. The best way for someone to learn about game design and game development is to DO it. Whether you use 3D Game
Studio, Renderware or an available engine that ships with a game
to do mods (Unreal, for example), the actual experience of getting
in there and *making* something (and then making it work <g>), is
invaluable.
My Question: If a course aims at teaching computer science students the basics of
game design (which, of course, they cannot learn during a semester)
what areas of game design should it focus on?
Bob Bates:
If it’s pure game design (as opposed to programming, for example), I
would focus on anything that teaches the student what I call “player
A.2 Five Questions for Four Game Industry Veterans
123
empathy.” Which is to say that the student should train him/herself in the art of putting themselves “in the player’s shoes.” This, I
believe, is the single most important attribute a game designer must
have to be successful.
No matter what genre you’re working in, if you cannot mentally put
yourself in the player’s place – think what he must be thinking,
anticipate what he will want to try, steer him in the right direction, etc – then you will not be a good game designer. Personally, I
have found designing small adventure games and puzzles to be good
training for this, but I’m sure the same effect could be achieved by
doing small versions of games in different genres.
My Question: One idea that I have been researching in my thesis is that objectoriented software engineering and game design somehow complement each other, because you have to think in units. If you subdivide a game into certain ingredients that interact with one another,
you get an object-oriented model as well. A game is not more than
many connected objects on an abstract level. Do you think that
game design and object-oriented programming can learn from each
other?
Bob Bates:
I don’t know enough about object-oriented programming to really
respond to this. (I stopped programming my own games right at the
time that object-oriented programming came into vogue).
My impression, however, is that game design and development is
“messier” than you are anticipating. In my experience, a game is
like a big web, and when you touch it in one place, it vibrates in
another. (This should not be true of the game engine, btw, which
indeed should be modularized). But I can’t tell you the number of
times that someone has suggested a “small change that shouldn’t
affect anything” only to find that there are hidden dependencies
that were built in that makes the “small change” into a big one.
One can certainly say that in theory this should not be so. But in
practice, I have generally found it to be true in most game types,
and especially in adventure and action-adventure games.
My Question: What can and cannot be learned from using game design tools?
Should computer science students learn to think outside the box,
and create pen-and-paper-based games as well? What contents
would be most necessary for a semester course?
124
Bob Bates:
Appendix A Interviews
The more different ways you come at game design, the better. I
have a strong background in chess and various board games. Card
games (both traditional, like Poker, and new like Magic the Gathering [OK, *relatively* new <g>]), and every other kind of game imaginable can all be drawn upon when making computer games. I would
also add that a broad, liberal arts education is also a very good idea.
The wider the student casts his net, the better off he will be.
Will Wright draws inspiration from reading about architecture and
robotic design, others read science fiction novels, take nature
walks, or go scuba diving. Whenever game designers gather, I am
always astounded at their sheer breadth of interests, the range of
things that inspire them, and how *all* of them are curious individuals and lifelong learners.
My Question: Name three peculiarities that - to your mind - college cannot teach
you about game development! Explain briefly why!
Bob Bates:
1. Corporate politics and how and why games get built or cancelled. The market realities in our business are brutal, and the
economic models are changing all the time. The only way to
learn about this is to get slapped in the face with it.
2. Corollary to the first: Game development is not a stable job.
Companies come and go, projects rise and fall. The burnout
rate is high. Anyone looking for security should look somewhere else. It’s hard for a college student to understand the
choices that developers are often forced to make: “Do I take the
uninteresting job with the company that looks stable, or do I
take the interesting job with the startup?” Often, the “stable”
company may be on the verge of folding, but then again the
startup will run out of money quickly. It’s a very tough life, and
you have to get used to living on a roller coaster.
To put it another way, I have worked on around 30 games
*that have been published* (in addition to others) and I have
*never* had a project go from beginning to end without at least
one major crisis during which we thought the whole thing, or
possibly the whole company, would go up in smoke. I don’t
think you can teach how to react to life-wrenching trauma like
this – you can only experience it and figure out how to deal
with the particulars of each case, over and over again.
A.2 Five Questions for Four Game Industry Veterans
125
3. Collaboration. You can study theory until the cows come home,
but the fact is that games are made by groups of people who
constantly have to make compromises with each other. To the
extent that schools put groups of people together to work on
projects, the student will be exposed to this, however, it is
never something that can be learned from a book. The give and
take of getting something built is, again, something that must
be lived through to be understood.
A.2.2 Interview with Jochen Hamma
Jochen Hamma was the co-founder and managing director of “attic Entertainment
Software GmbH” (1989), where he lead projects and quality assurance for more
than 15 AAA titles. Today, he is a successful freelance producer, game and interface
designer of both, mobile and PC titles.
My Question:
Do you think the use of a game creation suite (like a development
kit - as for example 3d Game Studio or Renderware Studio) can
help students understand game development in a universitylevel course?
Jochen Hamma: Definitely. I do recommend using Virtools for students new to
the subject. Teams with good coding and art skills might be willing and able to use Renderware, Vision or Nebula instead. Local
middleware solutions are preferred by students, as they can get
hints and feedback from the creators of such packages more
easily.
My Question:
If a course aims at teaching computer science students the basics of game design (which, of course, they cannot learn during
a semester) what areas of game design should it focus on?
Jochen Hamma: Briefly introducing game critique - that to say helping them understanding and analysing other (and their own) games (why
do they work, why don’t they work). Based on these skills a
game design course should be introducing the most interesting game design skills and techniques during the game design
process (high concept, game design document writing, designing
features...).
126
Appendix A Interviews
Probably one of the most important things to learn is bringing
critique skills and design skills together in very short time spans
- by discussing the ideas with team members and other project
teams (at least once a week), building on the results of the discussions and constantly iterating to better designs like that.
An issue mostly forgotten in game design courses is interaction
design. As you access board games directly and you mostly have
to use keyboard or mouse devices to access games - interface
design is critical. Good game design hidden behind bad interfaces will never be able shine. Bad game design implemented in
some easy to use and fun interface can at least offer a couple of
minutes with some fun value for the player.
My Question:
One idea that I have been researching in my thesis is that objectoriented software engineering and game design somehow complement each other, because you have to think in units. If you
subdivide a game into certain ingredients that interact with one
another, you get an object-oriented model as well. A game is not
more than many connected objects on an abstract level. Do you
think that game design and object-oriented programming can
learn from each other?
Jochen Hamma: Probably yes. However, the components you would get, if you
create an image of the units of a game to be built by programmers and game designers on one single paper, will be more
matrix-oriented. The main areas of good game design according to the “flow” concept (goals/feedback/rewards, appropriate
difficulty level, discovery, social needs/bragging rights, flow protection, control/power) will have to be reflected in every single
feature programmed [Csikszentmihalyi91]2 . On the other hand,
if you want to create goals/feedback/rewards, you need every
single component of the code programmed (visuals, sound, AI,
...). Both - game design and implementation - may use an object
oriented design, but their components will be completely different.
My Question:
What can and cannot be learned from using game design tools?
Should computer science students learn to think outside the
box, and create pen-and-paper-based games as well? What contents would be most necessary for a semester course?
2 A research on the flow concept was also done by [Boettcher05]
A.2 Five Questions for Four Game Industry Veterans
127
Jochen Hamma: When it comes to game rules, then board games are very interesting as a good source. However, the most interesting part
of gameplay does not result from rules (my opinion) it more
emerges from Salen/Zimmermans - PLAY - component of games,
what others (maybe Crawford) would probably name “interactivity”. Designing a board game as a prerequisite to designing computer games is not bad. That approach is widely used at universities and schools already (Uni Stuttgart, ETH Zürich, Games
Academy Berlin).
My Question:
Jochen Hamma:
Name three peculiarities that - to your mind - college cannot
teach you about game development! Explain briefly why!
1. You can learn a lot about project management, programming, interface and game design as well as graphics at
Universities. However, students don’t get paid for their
work. Expectation level for university projects is mainly
driven by intrinsic student motivation. Expectation level in
the industry is driven by extrinsic factors like publisher’s
or lead stuff expectations and competitive standards. That
makes the biggest difference.
Extrinsic expectations will have to be met - intrinsic expectations can be adjusted and modified on the fly - it
just depends how well the project is on its way. Therefore,
students should have a chance to work with real projects in
the industry for at least 6 months - even better for one year.
2. Professional Game Development teams do have clear hierarchical structures. If the lead designer decides which way
to go, other designers will have to follow his guidance. In
most of the student teams I know, a structure with clearly
defined responsibilities is completely missing. Building
structures which work is something which can hardly be
taught at Universities.
3. Rating the skill level. It is important to rate one’s skill level
compared to people from the industry. Without a clear rating of one’s skill level, an understanding of the worldwide
competitive level and with knowledge of the skill level of
128
Appendix A Interviews
some of the best people in the industry it is hard to understand what has to be learned (skills and knowledge) to make
it to the desired position in the games industry. Students
with contact to some of the best people have better chance
to rate their skill level.
A.2.3 Interview with Bruce Shelley
Bruce Shelley is developing “Age of Empires 3” with Ensemble Studios, which he
has been working for since 1995 as a game designer for the “Age” series. His past
career includes working for Microprose in 1987 and helping Sid Meier with the
game design for “Civilization”.
My Question:
Do you think the use of a game creation suite (like a development
kit - as for example 3d Game Studio or Renderware Studio) can
help students understand game development in a university-level
course?
Bruce Shelley: I think so. The technology is not key. Understanding what makes
games entertaining is critical. Technology is just the canvas we
paint on, so to speak. The real rocket science is creating entertainment. When I made board games we put together prototypes long
before we had written rules. It was essential that we get playing
and that is still true today. Prototype early and design by playing.
Technology that gets you to playing is good.
My Question:
If a course aims at teaching computer science students the basics of game design (which, of course, they cannot learn during a
semester) what areas of game design should it focus on?
Bruce Shelley: I would focus on creating interesting decisions for the player to
make. The best games pose interesting decisions. I would compare
games that are successful with those that are not and try to figure
out why that is. Being able to analyze good and bad gameplay is
essential. Bad gameplay usually means the decisions the player is
making are not interesting.
My Question:
One idea that I have been researching in my thesis is that objectoriented software engineering and game design somehow complement each other, because you have to think in units. If you sub-
A.2 Five Questions for Four Game Industry Veterans
129
divide a game into certain ingredients that interact with one another, you get an object-oriented model as well. A game is not more
than many connected objects on an abstract level. Do you think
that game design and object-oriented programming can learn from
each other?
Bruce Shelley: Sorry but I don’t really understand this question. I am not a programmer and don’t understand what object oriented software engineering is.
My Question:
What can and cannot be learned from using game design tools?
Should computer science students learn to think outside the box,
and create pen-and-paper-based games as well? What contents
would be most necessary for a semester course?
Bruce Shelley: Game designers should play all types of game, especially board
games. They aren’t that different. What makes them work applies
to video games as well. Game design tools should speed the process of making a prototype that you can play. Then you continually
play, make adjustments, redesign, play, readjust, etc. This is design by playing. Games are not engineering problems. Rely on your
instinct as a gamer to tell you when it is fun to play and when it is
not. We had a playable prototype for Age 3 within 6-8 months and
have played it nearly every day since.
My Question:
Name three peculiarities that - to your mind - college cannot teach
you about game development! Explain briefly why!
Bruce Shelley: As I say above, you either have the instincts of a game player or
you don’t. If you do, you should be able to tell by playing when
a game is working or not. To be good at this you need to be able
to offer solutions when things are not working right. I don’t think
those instincts can be taught. They come from playing lots of
games, having an analytical mind, and being open minded.
Designers have to have vision and I don’t know if that can be
taught. You look at a game and see how it could be different. But
it also has to have wide appeal to be successful, so you have to be
broad minded and think about what will be fun for lots of people,
not just you. I don’t know that anything else can’t be taught.
130
Appendix A Interviews
A.2.4 Interview with David A. Smith
David A. Smith is currently one of the lead architects of the Croquet Project, where
he focusses on creating 3d object based architectures. His past career includes
working on a virtual camera system. James Cameron used it for his movie “The
Abyss”. David A. Smith also created “The Colony”, the first 3d interactive game on
a Macintosh computer in 1987. Also, he co-founded Red Storm Entertainment with
Tom Clancy and Timeline Computer Entertainment with Michael Crichton.
My Question:
Do you think the use of a game creation suite (like a development
kit - as for example 3d Game Studio or Renderware Studio) can
help students understand game development in a university-level
course?
David A. Smith: Possibly. Game design is very much multidisciplinary today. That
is, unlike when I wrote my first game where I did everything,
today you need entire teams of people to develop. More often
than not, the actual game designer is not even a programmer.
The areas of expertise required today are numerous. Here are a
few of the main ones:
• Game designer. Basically a story-teller. A person that figures out what worlds to build, and what happens in those
worlds.
• Graphics programmer - at one time the most important,
rapidly becoming the least important member of the team. It
is important to have flashy effects, but that is not important
if the game design and story are bad.
• AI programmer - very important if the game wants to
achieve some level of realism with the game characters.
• Game architecture designer - game engines are far more
complex, especially given demands for multi-user. This requires a well designed game OS that is open and flexible
enough for the developers to easily extend.
• World designers - this is a production lead designer. Different from the artists, though they probably report to the world
designer. Focus on standard look to the world and making
the game designers ideas come to life.
A.2 Five Questions for Four Game Industry Veterans
131
• World artists, animators - these are the guys that make the
world designers ideas real.
What this means is that game development frameworks only
present part of the solution, and perhaps the least important
part. They create a world where the rendering will happen, but
the important part of the process is in the actual game design
and the artwork.
My Question:
If a course aims at teaching computer science students the basics
of game design (which, of course, they cannot learn during a
semester) what areas of game design should it focus on?
David A. Smith: This is a lot like asking “If I want to learn to make movies, what
aspects of movie making should I focus on?” You can do a survey
course, where you talk about being a director, actor, cinematographer, (even criticism) etc, but the only real way to learn to
make movies is to make movies. If you focus on just one area it
is like the blind men and the elephant attempting to figure out
what elephants are by touching one part of their bodies. In a real
sense, the most important aspects of building computer games
is working as a team with a diverse group of talented people.
My Question:
One idea that I have been researching in my thesis is that objectoriented software engineering and game design somehow complement each other, because you have to think in units. If you
subdivide a game into certain ingredients that interact with one
another, you get an object-oriented model as well. A game is not
more than many connected objects on an abstract level. Do you
think that game design and object-oriented programming can
learn from each other?
David A. Smith: Depends on the game of course. The kinds of games I like to do
- recreations of possible worlds, pretty much require an object
oriented approach - the later bound the language, the better.
Programming is essentially a translation task, especially simulation, where we take some concrete idea and attempt to describe
it in a way that a computer can understand. Objects make this
translation task far easier.
132
My Question:
Appendix A Interviews
What can and cannot be learned from using game design tools?
Should computer science students learn to think outside the box,
and create pen-and-paper-based games as well? What contents
would be most necessary for a semester course?
David A. Smith: This touches on the core idea of game design - games must be
fun. The tools we use to express these games have N O effect on
how good a game is. Only the designers abilities to understand
what people like doing, what will surprise and excite them, what
will keep them coming back for more matters in game design. A
game with poor graphics and great gaming will A LWAYS beat a
game with great graphics and poor game design. Focus on this
aspect - real game design - no matter what the medium. Code
can often just get in the way of a good idea.
My Question:
David A. Smith:
Name three peculiarities that - to your mind - college cannot
teach you about game development! Explain briefly why!
1. Telling a story.
2. Understanding what might be fun.
3. Seeing the world through other people’s eyes.
Appendix B
Figures and Tables
B.1 Middleware and Tools
Middleware
Physics
Video
●
●
Bink & Smacker
(RAD Game Tools)
●
●
●
Artificial Intelligence
●
●
●
AI.implant
DirectIA SDK
SimBionic
Other
●
●
Asset Management
●
●
Alienbrain Studio
Perforce
SpeedTree (Tree Generation Middleware)
MASSIV (MMOG Middleware)
Mobile Gaming Middleware
Multimedia Authoring Environments
●
●
●
●
●
butterfly.net
Quazal
Gamebryo
RenderWare Studio
Unreal Engine 3
Trinigy Vision SDK
●
●
●
●
Professional
Networking
Havok
ODE
Novodex
Meqon
●
●
●
●
Game Maker
3D Game Studio
Reality Factory
RPG Maker XP
●
●
●
●
OGRE
Irrlicht
Genesis 3D
OpenGL
Direct3D
●
●
●
Hobby
●
FMOD
Miles (RAD Game Tools)
Sensaura gameCODA
OpenAL
●
Game Development Suites
Graphics
Audio
Macromedia Flash
Macromedia Director
Figure B.1: Middleware, game development suites and asset management tools.
133
134
Appendix B Figures and Tables
B.2 The Game Development Pipeline
Concept Phase
Money Acquisition
Gathering Ideas
Theme
Funding
Pre-Production Phase
Playtesting / QA
Gameplay Prototyping
Publisher
Physical Prototype
Financial Plan
Presentation
Software Prototype
Production Planning
Design Document
●
Story
●
Gameplay/Mechanics
●
Characters
●
Levels
●
●
●
●
●
Task Breakdown
Priorities
Milestones
Scheduling
Resource Management
Prototyping Cycles Phase
Production
●
Coordination
●
Tasks and Milestones
●
Priorities
Tools
●
Level Creation
●
Effects
●
Control Animation
Engineering
●
Engine Developers
●
Game Mechanics
●
Scripting
●
System Conception
Game Design
●
Gameplay
●
Levels
●
Characters
●
Story
Sound
●
Sound Effects
Asset Management
Artwork
●
Models/Textures
●
Animations
●
Maps
Quality Assurance
●
Iterative Testing
Full Production Cycles Phase
Production
●
Coordination/Scheduling
●
Milestones
●
Priorities
Engineering
●
Engine Refinement
●
Game Mechanics
●
Scripting
●
System Refinement
Game/Level Design
●
Gameplay
●
Levels
●
Characters
●
Story
Localisation
●
Translation
Sound
●
Score Composition
●
Sound Effects
Quality Assurance
●
Iterative Testing
●
Bugtracking
Asset Management
Artwork
●
Models/Textures
●
Animations
●
Maps
Figure B.2: The iterative game development process using the concepts suggested by
[Mencher03, ElectronicArts05, Fullerton04, Bethke03] and [Masuch05]
B.3 Game Engine Overview
135
B.3 Game Engine Overview
Music & Sound
Engine
Main Loop
Timer
2d or 3d
Engine
Controls
User Interface
Network
Client Control
Software
Interface
Event
Handler
Physics
Graphics
Additional
Middleware
Net
Input
Hardware
User
Output
dynamic
game data
Simulation
Audio
Artificial Intelligence
Core Game Engine
static
game data
Figure B.3: A conceptual overview of a game engine based on Masuch [Masuch05]
136
Appendix B Figures and Tables
B.4 Mini Games
Figure B.4: The ingredients of casual mini games that were analysed for creating the
prototyping tool LeGaCy.
B.5 Common Development Tools
137
B.5 Common Development Tools
Area of Game Development
Audio
Game Engine
Software/Asset Management
3D Animation
Artwork
Programming
Project Management
Prototyping and Multimedia Authoring
Quality Assurance
Standard Tools
. Steinberg Nuendo
. Sony Soundforge
. The Miles Sound System (RAD Game Tools)
.
.
.
.
.
.
.
.
RenderWare Platform
Gamebryo (from NDL)
Unreal Engine
Valve Source Engine
Doom/Quake Engines
Trinigy Vision Game Engine
GarageGames Torque Game Engine
OGRE
. Avid Alienbrain Studio
. Perforce
. Subversion
.
.
.
.
Autodesk 3ds max
Alias Maya
Avid SOFTIMAGE|XSI
NewTek Lightwave 3d
. Adobe Photoshop
. Adobe Illustrator
. Visual Studio 2005
. MetroWerks CodeWarrior
. Eclipse
.
.
.
.
.
ProWorkflow (from ProActive Software)
Microsoft Office Project
Groove Virtual Office
PhpCollab
Open Workbench
. Macromedia Flash Professional
. Macromedia Director MX
. Dassault Systèmes’ Virtools Dev
.
.
.
.
.
.
.
.
.
Flyspray
phpBugTracker
Mantis BT
Bugzilla
TechExcel DevTrack
TechExcel DevTest
Mercury TestDirector
Seapine TestTrack Pro
JIRA (from Atlassian Software)
Table B.1: An shortened list of some of the more important tools used in the game
development process.
Index
Symbols
Funding, 12
API, 23
C#, 47
Croquet, 47, 53
developer, ii, 2, 102
DLL, 72
E3, 103
game engine, 6
GCDC, v
GDC, 14, 102
GML, 41
GUI, 39
IGDA, ii
LeGaCy, 7
middleware, 6
Monticello, 80
NPC, 19
patch, 23
Pitch, 10
publisher, 2
SCM, 16
Smalltalk, 28
Squeak, iii
XML, 34
XNA, 47
GML, 102
G
H
Game Design, 18
game engine, 137
Game Maker, 40, 115–121
GML, 118
Gamebryo, 137
Glossary Terms
add-on, 18
Half-Life 2, 2
3ds max, 137
Numbers
1942, 64
A
AI, 26, 33
Alienbrain, 43, 137
Architecture
of LeGaCy, 68
Artwork, 17
Asset Management, 16
Aura, 72
Aura: Fate of the Ages, 72
B
Break-Out, 64
Breakout, 64
D
Design document, 15
Doom, 2, 121
F
I
Idea, 12, 13, 15, 26, 42, 47, 49
Interview
with Bob Bates, 122
with Bruce Shelley, 128
139
140
with David A. Smith, 130
with Jochen Hamma, 125
with Mark Overmars, 115
Index
UPGEAR, 120
V
Vision SDK, 137
L
Level Design, 23
M
Macromedia
Flash MX, 39
Miles, 137
Myst, 73
P
Pac-Man, 64, 89
PONG, 1
Pong, 1, 64
Production, 15, 18
Prototype, 14
Prototypes
Definition, 27
Q
QA (Quality Assurance), 20
Quality Assurance, 19
R
RenderWare, 38, 137
S
Söldner, 103
Sacred, 103
SCM, 137
Scripting
Lua, 28
Python, 28
Ruby, 28
Space Invaders, 64
SpeedTree, v, 36
Spellforce 2, 36
T
Tennis for Two, 1
Tetris, 64
The Fall, 103
The Sims, 89
Tools, 18
Trinigy
Vision SDK, 37, 41
U
Unreal Engine, 38, 48, 49, 137
Declaration
I declare, that the present work has been created independently by myself. No other
than the references and aids listed herein have been used.
Magdeburg, November 04, 2005
Lennart Nacke
Copyright 2005 by Lennart Nacke. All rights reserved.
No part of this thesis may be reproduced in any way, stored in a retrieval system of any type, or transmitted
by any means or media - electronic, mechanical, or other - including, but not limited to, filesharing, photocopy,
recording, or scanning, without explicit prior written permission from the author.
The author shall have neither liability nor responsibility to any person or entity with respect to any loss or
damages arising from the information contained in this thesis or visiting the internet links contained in it.
i Lennart Nacke
B Mittelstr. 51
39114 Magdeburg
Germany
T (+49) 391 531 66 91
k thesis@pxfx.de
http://thesis.pxfx.de
Final Version