Introduction To Game Design Prototyping Development Jeremy Gibson PDF
Introduction To Game Design Prototyping Development Jeremy Gibson PDF
Development
“Prototyping and play-testing are often the most misunderstood and/or underutilized steps
in the game design and development process. Iterative cycles of testing and refining are
key to the early stages of making a good game. Novices will often believe that they need to
know everything about a language or build every asset of the game before they can really get
started. Gibson’s new book prepares readers to go ahead and dive in to the actual design and
prototyping process right away; providing the basics of process and technology with excellent
“starter kits” for different types of games to jumpstart their entry into the practice.”
—Stephen Jacobs
Associate Director, RIT Center for Media, Art, Games, Interaction and Creativity (MAGIC)
and Professor, School of Interactive Games and Media
“Jeremy Gibson’s Introduction to Game Design, Prototyping, and Development deftly combines
the necessary philosophical and practical concepts for anyone looking to become a Game
Designer. This book will take you on a journey from high-level design theories, through game
development concepts and programming foundations in order to make your own playable
video games. Jeremy uses his years of experience as a professor to teach the reader how to
think with vital game design mindsets so that you can create a game with all the right tools
at hand. A must-read for someone who wants to dive right into making their first game and a
great refresher for industry veterans.”
—Michelle Pun
Senior Game Designer, Zynga
This page intentionally left blank
Introduction to Game
Design, Prototyping,
and Development
The Addison-Wesley
Game Design and Development Series
Make sure to connect with us!
informit .com/socialconnect
Introduction to Game
Design, Prototyping,
and Development
From Concept to Playable
Game—with Unity® and C#
Jeremy Gibson
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857
Contents
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiv
21 Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .315
Types of Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Set Up a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
while Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
do...while Loops . . . . . . . . . . . . . . . . . . . . . . . . . . 319
for Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
foreach Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
Jump Statements within Loops . . . . . . . . . . . . . . . . . . . . 322
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
xvi CONTENTS
24 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Getting Started with Debugging . . . . . . . . . . . . . . . . . . . 364
Stepping Through Code with the Debugger. . . . . . . . . . . . 369
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
25 Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Understanding Classes . . . . . . . . . . . . . . . . . . . . . . . . . 380
Class Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
CONTENTS xvii
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857
FOREWORD
I have a theory about game designers and teachers. I think that, beneath the possible differ-
ences of our outer appearances, we’re secretly the same; that many of the skills possessed by
a good game designer are the same skills held by a great teacher. Have you ever had a teacher
who held a class spellbound with puzzles and stories? Who showed you simple demonstrations
of skills that were easy for you to understand and copy, but were difficult for you to master?
Who gradually, cleverly, helped you put together pieces of information in your mind, maybe
without your even realizing it, until one day your teacher was able to step aside and watch you
do something amazing, something that you never would have thought was possible.
We video game designers spend a lot of our time finding ways to teach people the skills they
need to play our games, while keeping them entertained at the same time. We sometimes
don’t want people to be aware that we’re teaching them, though—the best tutorial levels that
video games open with are usually the ones that simply seem like the beginning of a thrilling
adventure. I was lucky to work at the award-winning game studio Naughty Dog for eight amaz-
ing years, where I was the Lead or Co-Lead Game Designer on all three PlayStation 3 games in
the Uncharted series. Everyone at the studio was very happy with the sequence that opened
our game Uncharted 2: Among Thieves. It effectively taught each player all the basic moves they
would need to play the game, while keeping them on the edge of their seat because of the
gripping predicament our hero Nathan Drake found himself in, dangling over the edge of a cliff
in a ruined train carriage.
Video game designers do this kind of thing over and over again as they create digital adven-
tures for us to play. Working on a sequence of player experiences like those found in the
Uncharted games, I have to stay very focused on what the player has recently learned. I have
to present my audience with interesting situations that use their new skills and that are easy
enough that they won’t get frustrated, but challenging enough that their interest will be held.
To do this with complete strangers, through the channels of communication that a game
provides—the graphics of the environments and the characters and objects within them, the
sounds that the game makes, and the interactivity of the game’s controls—is tremendously
challenging. At the same time, it is one of the most rewarding things I know how to do.
Now that I’ve become a professor, teaching game design in a university setting, I’ve discovered
firsthand just how many of the skills I developed as a game designer are useful in my teaching.
I’m also discovering that teaching is just as rewarding as game design. So it came to me as no
xxii FOREWORD
surprise when I discovered that Jeremy Gibson, the author of this book, is equally talented as a
game designer and a teacher, as you’re about to find out.
I first met Jeremy around ten years ago, at the annual Game Developers Conference in Northern
California, and we immediately hit it off. He already had a successful career as a game devel-
oper, and his enthusiasm for game design struck a chord with me. As you’ll see when you begin
to read this book, he loves to talk about game design as a craft, a design practice and an emerg-
ing art. Jeremy and I stayed in touch over the years, as he went back to graduate school at Carn-
egie Mellon University’s excellent Entertainment Technology Center to study under visionaries
like Doctor Randy Pausch and Jesse Schell. Eventually, I came to know Jeremy as a professor and
a colleague in the Interactive Media & Games Division of the School of Cinematic Arts at the
University of Southern California—part of USC Games, the program in which I now teach.
In fact, I got to know Jeremy better than ever during his time at USC—and I did it by becoming
his student. In order to acquire the skills that I needed to develop experimental research games
as part of USC’s Game Innovation Lab, I took one of Jeremy’s classes, and his teaching trans-
formed me from a Unity n00b with some basic programming experience into an experienced
C# programmer with a strong set of skills in Unity, one of the world’s most powerful, usable,
adaptable game engines. Every single one of Jeremy’s classes was not only packed with infor-
mation about Unity and C#, but was also peppered with inspirational words of wisdom about
game design and practical pieces of advice related to game development—everything from
his thoughts about good “lerping,” to great tips for time management and task prioritization,
to the ways that game designers can use spreadsheets to make their games better. I graduated
from Jeremy’s class wishing that I could take it again, knowing that there was a huge amount
more that I could learn from him.
So I was very happy when I heard that Jeremy was writing a book—and I became even happier
when I read the volume that you now hold in your hands. The good news for both you and me
is that Jeremy has loaded this book with everything that I wanted more of. I learned a lot in the
game industry about best practices in game design, production, and development, and I’m
happy to tell you that in this book, Jeremy does a wonderful job of summarizing those ways of
making games that I’ve found work best. Within these pages, you’ll find step-by-step tutorials
and code examples that will make you a better game designer and developer in innumerable
ways. While the exercises in this book might get complex—game design is among the most
difficult things I know how to do—Jeremy won’t ask you to do anything complicated without
guiding you through it in clear, easy-to-follow language.
You’ll also find history and theory in this book. Jeremy has been thinking deeply about game
design for a long time and is very well-read on the subject. In the first part of this volume,
you’ll find an extraordinarily wide and deep survey of the state-of-the-art in game design
theory, along with Jeremy’s unique and strongly developed synthesis of the very best ideas
FOREWORD xxiii
he’s encountered on his game design travels. Jeremy supports his discussion with interesting
historical anecdotes and fascinating glimpses of the long traditions of play in human culture,
all of which help to frame his conversation in valuable and progressive ways. He continually
pushes you to question your assumptions about games, and to think beyond the console, the
controller, the screen and the speakers, in ways that might just spur a whole new generation of
game innovators.
Jeremy Gibson has moved on from USC, and now teaches at the University of Michigan Ann
Arbor, and I’m very happy for the generations of U-M students that he’ll lead to new under-
standings of the craft of game design in the coming years. This spring, when Jeremy walked
into the restaurant at the annual GDC alumni dinner hosted by the USC Games program, the
room full of our current and former students came alive with whoops and cheers and moments
later broke out into applause. That tells you a lot about what Jeremy Gibson is like as a teacher.
You’re lucky that, thanks to this book, he can now be your teacher too.
The world of game design and development is changing at a rapid rate. You can be part of this
wonderful world—a world unlike any other I know, and which I love with all my heart. You can
use the skills you learn through reading this book to develop new prototypes for new kinds of
games, and in doing so you might eventually create whole new genres of games, in expressive
new styles, which appeal to new markets. Some of tomorrow’s stars of game design are cur-
rently learning to design and program, in homes and schools all around the world. If you make
good use of this book, by following the advice and doing the exercises you find in here, it might
just help your chances of creating a modern game design classic.
Richard Lemarchand
Associate Professor, USC Games
PREFACE
Welcome to Introduction to Game Design, Prototyping, and Development. This book is based on
my work over many years as both a professional game designer and a professor of game design
at several universities, including the Interactive Media and Games Division at the University of
Southern California and the Department of Electrical Engineering and Computer Science at the
University of Michigan Ann Arbor.
This preface introduces you to the purpose, scope, and approach of this book.
Unlike many other books that speak volumes of theory about games, Tracy’s book maintains a
laser focus on information that helps budding designers improve their craft. I taught from this
book for many years (even before I started working at USC), and I believe that if you actually
attempt all the exercises listed in the book, you can’t help but have a pretty good paper game
at the end.
Fullerton, Tracy, Christopher Swain, and Steven Hoffman, Game Design Workshop: A Play-
centric Approach to Creating Innovative Games, 2nd ed. (Boca Raton, FL: Elsevier Morgan
Kaufmann, 2008)
Jesse Schell, The Art of Game Design: A Book of Lenses (Boca Raton, FL: CRC Press, 2008)
PREFACE xxvii
Bernard Suits, The Grasshopper: Games, Life and Utopia (Peterborough, Ontario: Broadview
Press, 2005)
Keith Burgun, Game Design Theory: A New Philosophy for Understanding Games (Boca
Raton, FL: A K Peters/CRC Press, 2013)
Scott Rogers, Level up!: The Guide to Great Video Game Design (Chichester, UK: Wiley, 2010)
xxviii PREFACE
Similarly, some programming languages are a little more approachable than C#. In the past,
I have taught my students both ActionScript and JavaScript. However, C# is the one language
I have used that continually impresses me with its flexibility and feature set. Learning C# means
learning not only programming but also good programming practices. Languages such as
JavaScript allow a lot of sloppy behaviors that I have found actually lead to slower develop-
ment. C# keeps you honest (via things like strongly typed variables), and that honesty will not
only make you a better programmer but will also result in your being able to code more quickly
(for example, strong variable typing enables very robust code hinting and auto-completion,
which makes coding faster and more accurate).
■ If you’re interested in game design but have never programmed, this book is perfect
for you. Part I introduces you to several practical theories of game design and presents you
with the practices that can help you develop and refine your design ideas. Part II teaches
you how to program from nothing to understanding object-oriented class hierarchies.
Since I became a college professor, the majority of my classes have focused on teaching
nonprogrammers how to program games. I have distilled all of my experience doing so
into Part II of this book. Part III takes you through the process of developing eight different
game prototypes across several different game genres. Each demonstrates fast methods to
get from concept to working digital prototype. Lastly, the appendices will explain specific
PREFACE xxix
game development and programming concepts in-depth and guide you to resources to
learn more once you’ve finished the book. This in-depth content was moved largely to
Appendix B, “Useful Concepts,” so that you could continue to use that section of the book as
a reference in the years to come.
■ If you’re a programmer who is interested in game design, Parts I and III of this book
will be of most interest to you. Part I introduces you to several practical theories for game
design and presents you with the practices that can help you develop and refine your
design ideas. You can skim Part II, which introduces C# and how it is used in Unity. If you are
familiar with other programming languages, C# looks like C++ but has the advanced fea-
tures of Java. Part III takes you through the process of developing eight different game pro-
totypes across several different game genres. Game development in Unity is very different
from what you may be used to from other game engines. Many elements of development
are taken care of outside of the code. Each prototype will demonstrate the style of develop-
ment that works best in Unity to get from concept to working digital prototype quickly. You
will also want to look carefully at Appendix B, which is full of detailed information about
various development concepts and is arranged as a reference that you can return to later.
Conventions
This book maintains several writing conventions to help make the text more easily
understandable.
Any place that specific button names, menu commands, or other multi-word nouns are intro-
duced in the text, they will be listed in italics. This includes terms like the Main Camera Game
Object. An example menu command is Edit > Project Settings > Physics, which would instruct
you to select the Edit menu from the menu bar, choose the Project Settings sub-menu, and then
select Physics.
Book Elements
The book includes several different types of asides that feature useful or important information
that does not fit in the flow of the regular body text.
note
Callouts in this format are for information that is useful but not critical. Information
in notes will often be an interesting aside to the main text that provides a little bit
more info about the topic.
xxx PREFACE
t ip
This element provides additional information that is related to the book content
and can help you as you explore the concepts in the book.
warning
BE CAREFUL Warnings cover information about things that you need to be
aware of to avoid mistakes or other pitfalls.
SIDEBAR
The sidebar is for discussions of longer topics that are important to the text but should
be considered separately from it.
Code
Several conventions apply to the code samples in this book. When specific elements from the
code listing are placed in regular paragraph text, they appear in a monospaced font. The vari-
able variableOnNewLine from the following code listing is an example of this.
1 Code listings are often annotated; in this case, additional information about the line
marked with // 1 would appear in this first annotation.
2 Some code listings will be expansions on code that you’ve already written or that already
exists in the C# script file for another reason. In this case, the old lines will be at normal
weight, and the new lines will be at bold weight.
PREFACE xxxi
Most of the code listings in the first two parts of the book will include line numbers (as seen in
the preceding listing). You do not need to type the line numbers when entering the code into
MonoDevelop (it will automatically number all lines). In the final part of the book, there are no
line numbers due to the size of the code listings.
Book Website
The website for this book includes all of the files referenced in the chapters, lecturer notes, and
finished versions of each tutorial prototype. It is available at http://book.prototools.net.
ACKNOWLEDGMENTS
A tremendous number of people deserve to be thanked here. First and foremost, I want to
thank my wife, Melanie, whose help and feedback on my chapters throughout the entire pro-
cess improved the book tremendously. I also want to thank my family for their many years of
support, with special thanks to my father for teaching me how to program as a child.
As a new author, there were several people at Pearson who provided support to me and
shepherded me through this process. Chief among them were Chris Zahn, Laura Lewin, Olivia
Basegio, Elaine Wiley, and Keith Cline who each demonstrated laudable patience in working
with me. I also had the support of some fantastic technical reviewers: Marc Destefano, Charles
Duba, and Margaret Moser. Their keen eyes and minds found many places in the original text
that could be clarified or improved.
I would also like to thank all the educators who have taught me and worked as my colleagues.
Special thanks go to Dr. Randy Pausch and Jesse Schell. Though I had worked as a professor and
game designer before meeting them, they each had a profound effect on my understanding of
design and education. I also owe tremendous thanks to Tracy Fullerton, Mark Bolas, and Scott
Fisher, who were friends and mentors to me in the years I taught at the University of Southern
California’s Interactive Media and Games Division. There were also many other brilliant faculty
and friends at USC who helped me to flesh out the ideas in this book, including Adam Liszkie-
wicz, William Huber, Richard Lemarchand, Scott Rogers, Vincent Diamante, Sam Roberts, and
Logan Ver Hoef.
Many of my friends in the industry have also helped me by giving me suggestions for the book
and feedback on the ideas presented therein. These included Michael Sellers, Nicholas For-
tugno, Jenova Chen, Zac Pavlov, Joseph Stevens, and many others.
Thanks as well to all the fantastic students whom I have taught over the past decade. It is you
who inspired me to want to write this book and who convinced me that there was something
important and different about the way that I was teaching game development. Every day that I
teach, I find myself inspired and invigorated by your creativity, intelligence, and passion.
Finally, I would like to thank you. Thank you for purchasing this book and for your interest in
developing games. I hope that this book helps you get started, and I would love to see what
you make with the knowledge you gain here.
ABOUT THE AUTHOR
Jeremy Gibson is a lecturer teaching computer game design for the Electrical Engineering
and Computer Science department at the University of Michigan Ann Arbor and is the founder
of ExNinja Interactive, LLC. From 2009 to 2013, he was an Assistant Professor teaching game
design and protyping for the Interactive Media and Games Division of the University of South-
ern California’s School of Cinematic Arts, which was the number one game design school in
North America throughout his tenure there. Jeremy serves the IndieCade independent game
festival as the Chair for Education and Advancement, where he is responsible for the IndieX-
change and GameU conference tracks, and he has spoken at the Game Developers Conference
every year since 2009.
Jeremy earned a Master of Entertainment Technology degree from Carnegie Mellon University’s
Entertainment Technology Center in 2007 and a Bachelor of Science degree in Radio, Televi-
sion, and Film from the University of Texas at Austin in 1999. Jeremy has worked as a program-
mer and prototyper for companies such as Human Code and frog design, has taught classes
for Great Northern Way Campus (in Vancouver, BC), Texas State University, the Art Institute of
Pittsburgh, Austin Community College, and the University of Texas at Austin, and has worked
for Walt Disney Imagineering, Maxis, and Electronic Arts/Pogo.com, among others. While in
graduate school, his team created the game Skyrates, which won the Silver Gleemax Award at
the 2008 Independent Games Festival. Jeremy also apparently has the distinction of being the
first person to ever teach game design in Costa Rica.
This page intentionally left blank
CH AP TE R 16
INTRODUCING
OUR DEVELOPMENT
ENVIRONMENT: UNITY
Downloading Unity
First things first, let's start downloading Unity. The Unity installer is over 1 GB in size, so depend-
ing on your Internet speed, this could take anywhere from a few minutes to a couple of hours.
After you've gotten this process started, we can move on to talking about Unity.
As of this writing, the latest major version of Unity is Unity 4. Because Unity is under constant
development, the current minor version should be something like 4.x.y, with the x and y being
sub-version numbers. Regardless of version, Unity is always available for free from Unity's
official website:
http://unity3d.com/unity/download
This should take you to a page that provides the latest download link for your system (see Fig-
ure 16.1). Unity is available for both PC and OS X, and it is nearly identical on both platforms.
tip
Unity is free, but you will still need to acquire a license, and this requires that you
have an available Internet connection the first time that you run the application.
INTRODUCING OUR DEVELOPMENT ENVIRONMENT 237
■ Unity is free: With the free version of Unity, you can create and sell games that run on OS
X, PC, the Web, Linux, iOS, Android, BlackBerry, Windows Phone, Windows Store, and more.
While the Pro version of Unity includes a few additional useful features, for a game designer
just learning to prototype, the free version is really all that you need. The Pro version nor-
mally costs $1,500 (or $75/month), but if you're a student, a one-year license for Unity Pro is
about ten times less!
tip
STUDENT PRICING If you are a student, you can purchase a 1-year educational
license for Unity Pro at a tremendous discount (about $150 instead of $1,500). This
license does prevent you from being able to sell your game directly to players, but
it lets you use the full power of Unity Pro to develop your game and make excel-
lent portfolio pieces. After you're done developing, if you know you've got a hit on
your hands, you can purchase the commercial version of Pro before attempting to
sell your game. Unity has also recently added Pro student licenses that do allow
you to sell your games, but those have a higher cost.
To find the latest student pricing for Unity, I recommend searching the Web for
"unity educational student pricing." That will make sure that you're looking at the
latest.
■ Write once, deploy anywhere: The free version of Unity can build applications for OS X,
PC, the Web, Linux, iOS, Android, BlackBerry, Windows Phone, Windows Store, and more, all
from the same code and files. This kind of flexibility is at the core of Unity; in fact, it's what
the product and company are named for. There are also paid extensions to Unity Pro that
238 CHAPTER 16 INTRODUCING OUR DEVELOPMENT ENVIRONMENT: UNITY
professionals can use to create games for the PlayStation 3, Xbox 360, and several other
game consoles.
■ Great support: In addition to excellent documentation, Unity has an incredibly active
and supportive development community. Hundreds of thousands of developers are using
Unity, and many of them contribute to the discussions on Unity forums across the web.
■ It's awesome!: My students and I have joked that Unity has a "make awesome" button.
Although this is not strictly true, there are several phenomenal features built in to Unity
that will make your games both play and look better by simply checking an option box.
Unity engineers have already handled a lot of the difficult game programming tasks for
you. Collision detection, physics simulation, pathfinding, particle systems, draw call batch-
ing, shaders, the game loop, and many other tough coding issues are all included. All you
need to do is make a game that takes advantage of them!
C#
C# was developed in 2000 as Microsoft's response to Java. They took a lot of the modern cod-
ing features of Java and put them into a syntax that was much more familiar to and comfort-
able for traditional C++ developers. This means that C# has all the capabilities of a modern
language. For you experienced programmers, these features include function virtualization
and delegates, dynamic binding, operator overloading, lambda expressions, and the powerful
Language INtegrated Query (LINQ) query library among many others. For those of you new
to programming, all you really need to know is that working in C# from the beginning will
make you a better programmer and prototyper in the long run. In my prototyping class at the
INTRODUCING OUR DEVELOPMENT ENVIRONMENT 239
University of Southern California, I taught using both UnityScript and C# in different semesters,
and I found that students who were taught C# consistently produced better game prototypes,
exhibited stronger coding practices, and felt more confident about their programming abilities
than their peers who had been taught UnityScript in prior semesters of the class.
If you've had some experience programming, you might assume that C# code in Unity
would execute faster than code written in JavaScript or Boo. This assumption would
come from the understanding that C# code is usually compiled while JavaScript and
Boo are interpreted (meaning that compiled code is turned into a computer's machine
language by a compiler as part of the coding process, while interpreted code is trans-
lated on-the-fly as the player is playing the game, making interpreted code generally
slower). However, in Unity, every time you save a file of C#, UnityScript, or Boo code,
Unity imports it, converts any of the three languages to the same Common Intermediate
Language (CIL), and then compiles that CIL into machine language. So, regardless of the
language you use, your Unity game prototypes will execute at the same speed.
Rest assured, this book is here for you, and if you read it in its entirety, you will emerge with
not only a working understanding of C# but also several simple game prototypes that you can
use as foundations on which to build your own projects. The approach that I take in this book
comes from many semesters of experience teaching "nonprogrammers" how to find the hidden
coder within themselves and, more broadly, how to convert their game ideas into working pro-
totypes. As you'll see throughout this book, that approach is composed of three steps:
1. Concept introduction: Before asking you to code anything for each project, I'll tell you
what we're doing and why. This general concept of what you're working toward in each
tutorial will give you a framework on which to hang the various coding elements that are
introduced in the chapter.
240 CHAPTER 16 INTRODUCING OUR DEVELOPMENT ENVIRONMENT: UNITY
2. Guided tutorial: You'll be guided step by step through a tutorial that will demonstrate
these concepts in the form of a playable game. Unlike some other approaches, we will be
compiling and testing the game throughout the process so that you can identify and repair
bugs (problems in the code) as you go, rather than trying to fix all of them at the end. Addi-
tionally, I'll even guide you to create some bugs so that you can see the errors they cause
and become familiar with them; this will make it easier when you encounter your own bugs
later.
3. Lather, rinse, repeat: In many tutorials, you'll be asked to repeat something. For instance,
in a top-down shooter game like Galaga, the tutorial would guide you through the process
of making one single enemy type, and then it would ask you to create three others on your
own. Don't skip this part! This repetition will really drive the concept home, and it will help
your understanding solidify later.
p ro tip
90% OF BUGS ARE JUST TYPOS I've spent so much time helping students fix
bugs that now I can very quickly spot a typo in code. The most common include
the following:
■ Misspellings: If you type even one letter wrong, the computer won't have
any idea what you're talking about.
Earlier, I mentioned that most of my students feel confused and daunted by C# at about the
midway point of the semester, and it's at exactly that time that I assign them the Classic Games
Project. They are asked to faithfully recreate the mechanics and game feel of a classic game
over the course of four weeks. Some great examples have included Super Mario Bros., Metroid,
Castlevania, Pokemon, and even the original Legend of Zelda. By being forced to work things out
on their own, to schedule their own time, and to dig deeply into the inner workings of these
seemingly simple games, the students come to realize that they understand much more C#
than they thought, and that is the time that everything really falls into place. The key compo-
nent here is that the thought process changes from "I'm following this tutorial" to "I want to
RUNNING UNITY FOR THE FIRST TIME 241
do this...now how do I make it happen?" At the end of this book, you will be prepared to tackle
your own game projects (or your own Classic Game Project, if you want). The tutorials in this
book can be a fantastic starting point on which to build your own games.
Installing Unity
Depending on your personal system settings, the Unity installer should have placed itself in a
Downloads folder somewhere on your hard drive. I'm sure you've done this kind of thing several
times before, so find the file, run the installer with all default options, and let's get to work. This
is a big install, so it could take a while. In the final bit of the installation, it may look like it has
frozen; but don't worry, just give it some time to complete.
You can choose to activate the 30-day trial any time, although you can only activate it once, and
once the trial is over, you will be reverted to the free version. If you choose the free version now,
you can always go back and upgrade to the Pro trial by selecting Unity > Manage License from
the menu bar on OS X (on PC, choose Help > Manage License).
Once you click OK, you are prompted to create a Unity account. They'll send you an email to
confirm this (so you need to give them a valid email address). Then, you may be asked to take
part in a survey, which you can choose to skip if you want (through a link at the bottom of the
survey).
After this, Unity will automatically open the AngryBots demo project. This is a large project, so it
may take several seconds to load. It may appear that Unity has frozen or is unresponsive, but if
you wait a bit, everything will show up.
242 CHAPTER 16 INTRODUCING OUR DEVELOPMENT ENVIRONMENT: UNITY
Unless you tell it not to (by holding the Option key at launch), Unity will open an existing
project every time you launch it. The default project for this is AngryBots (see Figure 16.3), a
game created internally by the Unity team to show off the capabilities of the engine. If for some
reason the default scene doesn't open automatically, you will need to double-click the Angry-
Bots Scene Asset to open it; it should be the first one listed in the Project window pane in the
bottom half of the screen. You'll see Project and several other window panes on screen that I'll
explain later, but for now, just click the large Play button at the top of the Unity window (the tri-
angle pointing to the right in the top, center of the Unity window) and enjoy playing this game
for a while. You can read about the controls for this game in the nearby tip.
RUNNING UNITY FOR THE FIRST TIME 243
Figure 16.3 The Unity window when it opens for the first time
t ip
ANGRYBOTS CONTROLS
You must stand very close to any circular door for a couple of seconds for it to
open.
There are several computers that you need to stand in front of in order to unlock
them (turn the color of electric wires coming out of them from red to green).
■ Shaders: AngryBots is rife with shaders (see Figure 16.4), code written specifically for the
graphics card with the sole purpose of making the game look amazing. Special ones to
check out include the following:
A. The depth-of-field image effect that makes some parts of the scene in-focus while
others are out-of-focus (see letter A in Figure 16.4). This will only appear in Unity Pro.
244 CHAPTER 16 INTRODUCING OUR DEVELOPMENT ENVIRONMENT: UNITY
B. The reflections on the floors (especially of the laser sight) (see letter B in Figure 16.4).
This will only appear in Unity Pro.
C. The animated water droplets on the floor when outside (see letter C in Figure 16.4). This
appears regardless of whether you are using Unity Pro or free.
As explained earlier, if you chose to activate the free license rather than the 30-day Unity Pro
trial, you will not see the most advanced shaders. This is one of the few differences between the
free and Pro versions of Unity.
■ Character rigging and animation: Unity makes use of animation blending to enable the
player character to walk in one direction while looking and shooting in another.
■ AI pathing: Enemies will move around objects in a room to find and attack the player.
Feel free to explore the whole space and see what elements of AngryBots you might want to
use in your own project. Go ahead, I'll wait.
...
...
RUNNING UNITY FOR THE FIRST TIME 245
So, what did you think? Did you blow up the base, or did you escape the exploding station? Did
you find the white museum? The controls of this game are a little unusual, but regardless, it's a
good showcase for how beautiful Unity can look.
You should see the Build Settings window shown in Figure 16.6.
From here, be sure to click Web Player on the left and then check Offline Deployment in the Web
Player options area. Click Build and Run, and Unity will ask you where to save the files. Type
AngryBots Web Build for the filename and click Save.
Unity will process this for a while and build a web version of the game for you. Once it's built,
your web browser will automatically be opened and sent to the page you just made as shown
in Figure 16.7. Depending on your browser, you may be prompted to give the Unity plug-in
permission to run.
246 CHAPTER 16 INTRODUCING OUR DEVELOPMENT ENVIRONMENT: UNITY
And there you go. You've compiled AngryBots for the web. Unity makes things like this very easy
so that you can focus on the interesting work: game design and development.
Figure 16.8 Position of the Layout pop-up menu and selection of the 2 by 3 layout
248 CHAPTER 16 INTRODUCING OUR DEVELOPMENT ENVIRONMENT: UNITY
Choose 2 by 3 from this pop-up menu. This will be the starting point for making our layout.
Before doing anything else, let's make the Project pane look a little cleaner. Click on the options
pop-up for the Project pane (shown in the black circle in Figure 16.9) and choose One Column
Layout.
Figure 16.9 Choosing the One Column Layout for the Project pane
Unity enables you to both move window panes around and adjust the borders between them.
As shown in Figure 16.10, you can move a pane by dragging its tab (the arrow cursor) or adjust a
border between panes by dragging the border between them (the left-right resize cursor).
Figure 16.10 Two types of cursors for moving and resizing Unity's window panes
When you drag a pane by its tab, a small ghosted version will appear (see Figure 16.11). Some
locations will cause the pane to snap into place. When this happens, the ghosted version of the
tab will appear in the new location.
SETTING UP THE UNITY WINDOW LAYOUT 249
Snapped Ghosted
Pane Pane
Figure 16.11 Ghosted and snapped panes when moving them around the Unity window
Play around with moving the window panes until your window looks like Figure 16.12.
Figure 16.12 Proper layout for the Unity window...but it's still missing something
250 CHAPTER 16 INTRODUCING OUR DEVELOPMENT ENVIRONMENT: UNITY
Now the last thing we need to add is the Console pane. From the menu bar, choose Window >
Console. Then drag the Console pane below the Hierarchy pane. You'll also need to move the
Project pane after you've done this to create the final layout shown in Figure 16.13.
Figure 16.13 Final layout of the Unity window, including the Console pane
Now you just need to save this layout in the Layout pop-up menu so that you don't have to
go through all that again. Click the Layout pop-up menu and choose Save Layout, as shown in
Figure 16.14.
Dramatic elements (FDD framework), 24-26 Dynamic elements (FDD framework), 24, 26-27
characters, 26 Emergence, 26-27
premises, 25-26 Emergent Narrative, 27
stories, 26 playtesting, 27
dramatic narrative structures Dynamic Layer (Layered Tetrad), 33-34,
dynamic dramatics, 75 37, 61, 77
emergent narrative, 76-77 aesthetics, 70
interactive narrative, 75-76 defining, 34
five-act dramatic narrative structure environmental aesthetics, 70, 73-74
climax (Act III), five-act dramatic narrative procedural aesthetics, 70-73
structures, 51 designer responsibilities, 36-37
denouement (Act V), five-act dramatic dramatics, 75
narrative structures, 51 emergent narrative, 76-77
exposition (Act I), five-act dramatic interactive narrative, 75-76
narrative structures, 50-51 emergence
falling action (Act IV), five-act dramatic Bartok, 63
narrative structures, 51 mechanics and unexpected emergence,
rising action (Act II), five-act dramatic 63-64
narrative structures, 51 mechanics
inscribed dramatics, purposes of, 57-58 defining, 34, 64
three-act dramatic narrative structure house rules, 66-67
antagonism (Act II), 52 meaningful play, 64-65
climaxes, 53 outcomes, 69
exposition (Act I), 52 player intent, 67-68
Field, Syd, 51-52 players, types of, 67-68
first plot point, 52 procedures, 64
Foundations of Screenwriting, The, 51-52 strategy, 65-66
hooks, 52 narrative, defining, 34
inciting incidents, 52 player's role in game design, 62-63
resolution (Act III), 52 technology, 34, 77
second plot point, 52
Star Wars: A New Hope as an example
of, 51-52 E
Dungeons & Dragons, 846
editing formulas (Calc spreadsheets), 164
dynamic dramatics, 75-77
education
Emergent Narrative (FDD framework), 27
Games Education Programs, 215-217
interactive versus linear narrative, 55
educational software discounts, 855
progression tables, 46
Electronic Arts
tips for running good campaigns, 846-847
Crazy Cakes, ADL (Automated Data Logging)
XP (Experience Points) and cumulative
and playtesting, 151
outcomes (dynamic mechanics), 69
Majestic, boundary mechanics, 44
duplicating weapon data (game balance),
180-181
EXTRAPOLATION (LINEAR) 873
Fullerton, Tracy
dynamic mechanics, 64
G
FDD framework, 20, 24, 29 game balance and math, 155, 183
boundaries, 25 balance, defining, 156
characters, 26 Calc, installing, 156-157
Dramatic elements, 24-26 dice probability, determining with Calc,
Dynamic elements, 24, 26-27 157-158
Emergence, 26-27 adjusting column widths, 160
Emergent Narrative, 27 charting results, 164
Formal elements, 24-25 counting die roll sums, 163-164
objectives, 25 creating Die A row, 160-161
outcomes, 25 creating Die B row, 161-162
player interaction patterns, 24 creating probability distribution charts, 164
playtesting, 27 creating rows, 159
premises, 25-26 entering data in cells, 158-159
procedures, 25 labeling rows, 162-163
resources, 25 spreadsheets, creating, 158
rules, 25 summing dice role results, 163
stories, 26 Unity example, 825-829
Game Design Workshop, 10, 13, 20, 24, 64 permutations, 175-176
player interaction patterns, 43 positive/negative feedback, 176-177
games, defining, 10, 13 randomization
inscribed mechanics, 40 custom card decks, 172
player interaction patterns, 43 dice, 170
fun in game design, the importance of playing cards, 171-173
(player-centric game design goals), 109-110 shuffling decks, 172-173
function delegates (C# coding), 525-531, spinners, 170
805-807 Ten Rules of Probability Every Game Designer
Function Wizard (Calc) Should Know, 165-169
MOD formula, 160-161 weapons, balancing, 177-178
rows, creating, 160-161 average damage, 179-180
functions (C# coding), 257-258, 349-350, 362 Chapter 9 prototype example, 182-183
defining, 350-353 determining percent chance for each
naming, 286, 356 bullet, 178
overloading, 358 duplicating weapon data, 180-181
parameters overall damage, showing, 181
arguments and parameters, 353-354 rebalancing weapons, 177-178
optional parameters, 359 weighted distributions, 173-175
params keyword, 359-361 weighted probabilities, 174-175
reasons for using, 356-357 Game Design Theory: A New Philosophy for
recursive functions, 361-362 Understanding Games, 11
returning gameplay as art (cultural aesthetics), 83
values, 354-356 performative empowerment as a
void,, 355-356 player-centric goal of design, 118
static functions, 288 Game Design Workshop, 10, 13, 18, 20, 24, 43
GAMEOBJECTS 877
Game Feel: A Game Designer's Guide to Virtual Mesh Filter component, 272, 295
Sensation, digital prototypes, 420 Mesh Renderer component, 272
Game Game, The, 15-16 Mission Demolition
game industry (digital), 211-212, 222 adding levels, 479-485
changes to, 213 C# coding, 456-485
costs of AAA (top) game development, 213 camera setup, 451-453
freemium games, 214 castles, 471-473
indie games, 214 clouds, 467-471
working conditions, 213 directional light GameObject, 451
Entertainment Software Association follow cameras, 462-466
Essential Facts list, 212 game logic, 479-485
Games Education Programs, 215-217 ground GameObject, 451
getting into (careers in), 217 hitting the goal, 478-479
following up, 218-219 instantiating projectiles, 458-462
interviewing, 219-220 projectile component, 455-456
networking, 217-218 projectile trails, 456-462
salaries, 220 returning shots, 473-474
projects slingshot GameObject, 453-455
joining, 221 slingshots, 456-462
starting, 221-222 vection/sense of speed, 466-471
game mods Omega Mage
cultural mechanics, 81-82 EnemyBug GameObjects, 770-780
narrative game mods, 83 EnemySpiker GameObjects, 780-782
Game Over screen, Apple Picker, 448 Mage GameObject (player character),
Game pane (Unity), 251 735-737
game play analysis (playtesting) and Bartok playing, 272-273
questions, asking, 7 prefabs, 273-277
rounds, comparing, 9 Renderer component, 295
GameCareerGuide.com, game developer salary RigidBody component, 272, 296
surveys, 220 scripts as GameObject components, 296-297
GameObjects, 281, 293-294 Space SHMUP
Apple Picker, 230-231 adding elements, 559-560
Apple GameObject, 424-425 adding enemies, 543-556
AppleTree GameObject, 421-423 art assets, enemies, 504-506
Basket GameObject, 425 aspect ratios, 490
GameObject action lists, 231-232 boosting weapons, 531-538
GameObject flowcharts, 232-234 camera bounds, 498-500
Box Collider component, 272, 295 camera setup, 490
Capsule Collider component, 295 damaging players, 513-518
class instances as GameObject components directional light GameObject, 490
(C# coding), 385-387 enemies dropping power-ups, 541-543
Collider components, 272, 295-296 enemy attack/damage, 513-518
creating, 271-272 enemy GameObjects, 504-506
editing, 272, 277-278 enemy scripts, 506-509, 543-556
Mesh Collider component, 295 function delegate for firing, 525-531
878 GAMEOBJECTS
Heinsoo, Rob, on XP (Experience Points) Hunicke and MDA framework, Robin, 20, 29
and cumulative outcomes (dynamic aesthetics-based design, 21-24
mechanics), 69 defining, 20-21
Hello World program, 263, 279 designer views of games, 21
arrays in, 344-347 player views of games, 21
C# scripts, creating, 266-271
debugging C# coding, 364
GameObjects I
creating, 271-272
ideation (brainstorming), 98
editing, 272
collection phase, 99
playing, 272-273
collision phase, 100-101
gizmos, 277
discussions, 101
lists in, 344-347
expansion phase, 98-99
naming projects, 266
rating phase, 101
prefabs, 273-277
if statements (C# coding), 307-310
scene views, changing, 277-278
Ilinx (vertigionous play)
standard project setup procedures, 264
Imaginary Games, 110
Helm, Richard
Jeux et Le Hommes, Le, and the four different
Design Patterns, 769-770, 815-817
kinds of play, 110
software design, 815
Imaginary Games, 15
Factory design pattern, 816
Ilinx (vertigionous play), 110
Singleton design pattern, 815-816
structured conflict as a player-centric goal of
Strategy design pattern, 816-817
design, 115-116
spawning enemies/enemy factories, 769-770
immediacy of objectives (Inscribed layer
Hierarchy pane (Unity), 251
mechanics), 41
Hitchhiker's Guide to the Galaxy, The, and
immediacy of sound (Inscribed Layer
autotelic empowerment as a player-centric
aesthetics), 47
goal of design, 117
immediate outcomes (dynamic mechanics), 69
Homo Ludens, magic circle concept and lusory
implementation phase (iterative design), 90-91,
attitude, 112
94-97
hooks (three-act dramatic narrative
importance of objectives (Inscribed layer
structure), 52
mechanics), 42
hours (estimated versus real) and burndown
iMUSE (Interactive MUsic Streaming Engine), 70
charts, 413
inciting incidents (three-act dramatic narrative
house rules (dynamic mechanics), 66-67
structure), 52
Hoye, Mike
increasing difficulty, Apple Picker, 448
Legend of Zelda: The Wind Waker, The, 83
Incredible Machine, The, 188
narrative game mods, 83
incremental innovation, 97
HRS (Horizontal Re-Sequencing), procedural
INDEX formula (Calc), weighted probabilities,
music, 70
174-175
Huizinga, Johan
indie games and the digital game industry, 214
Homo Ludens, 112
magic circle concept and lusory
attitude, 112
INSPECTOR PANE (UNITY) 881
plots, 50 X-Wing
premises, 49 information, conveying (Inscribed Layer
settings, 49 aesthetics), 48-49
three-act dramatic structure, 51-52 music in, 70
LineRenderer (Unity), ground spells in Omega ludology, 19. See also Layered Tetrad
Mage, 756-761 Elemental Tetrad framework, 20, 27-29
LINQ (Language Integrated Query) and C# aesthetics, 27-28
coding, 640-641 mechanics, 27
Lionhead Studios, Fable and the limited story's role in, 28
possibilities of interactive or linear narrative, technology's role in, 28
53-54 FDD framework, 20, 24, 29
listening, importance of during design phase boundaries, 25
(iterative design), 92-94 characters, 26
lists (C# coding), 328-331, 344 Dramatic elements, 24, 25-26
arrays versus lists, 344 Dynamic elements, 24, 26-27
converting arrays to lists, 336-337 Emergence, 26-27
converting lists to arrays, 331 Emergent Narrative, 27
jagged lists, 342-344 Formal elements, 24-25
methods, 331 objectives, 25
properties, 331 outcomes, 25
zero indexed lists, 331 player interaction patterns, 24
long-term objectives, space and (Inscribed playtesting, 27
Layer mechanics), 46 premises, 25-26
loops (C# coding), 315, 325 procedures, 25
do.while loops, 316, 319-320 resources, 25
for loops, 316, 320-322, 342 rules, 25
foreach loops, 316, 322 stories, 26
empty array elements and foreach loops, MDA framework, 20, 29
335 aesthetics-based design, 21-24
infinite loops, dangers of, 317-318 defining, 20-21
jump statements in loops, 322-324 designer views of games, 21
modulus operator (%), 324 player views of games, 21
project setup, 300-301 Ludwig, Manfred
types of, 316 optimal strategy, determining (dynamic
while loops, 316-319 mechanics), 65-66
Lucas, George Up The River, 65-66
scoping and the design process, 104 Lunch Money, house rules (dynamic
Star Wars: A New Hope as an example of mechanics), 67
three-act dramatic narrative structure, lusory attitude, 13-14, 110-112
51-52
LucasArts
iMUSE (Interactive MUsic Streaming
Engine), 70
886 MACHINIMA
interest as a player-centric goal of design, Shakespeare, William, and Romeo and Juliet
119 empathetic characters versus avatars, 55-56
listening, importance of during design five-act dramatic narrative structures,
phase (iterative design), 93 example of, 50-51
probability, 165-169 shared experiences, developing relationships
Skyrates, 111-112 through (dynamic dramatics), 76
Ten Rules of Probability Every Game Designer SHMUP (shoot-em-up) games. See Space
Should Know, 165-169 SHMUP
testing phase (iterative design), 96 shorting operators versus non-shorting
schools, Games Education Programs, 215-217 operators (C# coding), 301-302
scoping (design process), 103-104 short-term objectives and space (Inscribed
score counter, Apple Picker, 440-441 Layer mechanics), 46
screen variables (C# coding), 292 shuffling card decks, 7, 172-173
Scripting Reference (Unity), 430-431 side quests and interactive narrative, 54
scripts Sierra OnLine, Space Quest II and autotelic
C# scripts, creating, 266-271 empowerment as a player-centric goal of
formal group playtesting method, 147 design, 117
GameObject components, scripts as, silent protagonists (empathetic characters
296-297 versus avatars), 56
Scrum software development methodologies, similarities, indirectly guiding players by, 201
407, 416 sine/cosine, 822-825
meetings, 409 single player versus game (player interaction
product backlogs/feature lists, 408 patterns), 43
releases/sprints, 408 Singleton software design pattern, 815-816
teams, 408 skills, teaching by player guidance, 207
searches (online), C# resources, 854 integration, 209
second plot point (three-act dramatic narrative sequencing, 207-209
structure), 52 Skyrates
sequencing, teaching players by, 207-209 closed playtesting, 150
serious games, 109 open playtesting, 150-151
setting up projects in Unity, 793, 796 sporadic-play games, 111
C# scripts Skyrim
attaching to scene Main Camera, 797-798 conflicting objectives (Inscribed layer
creating, 797 mechanics), 42
new projects, 794-796 final outcomes (dynamic mechanics),
saving scenes, 796-797 example of, 69
settings, Inscribed Layer (Layered Tetrad), 49 game mods and cultural mechanics, 82
Settlers of Catan importance of objectives (Inscribed layer
resource mechanics, 45 mechanics), 42
strategy, designing for (dynamic narrative game mods, 83
mechanics), 66 player guidance, 198
setup (paper prototyping and gameplay side quests, 54
development), 133 sliding blocks/position puzzles in action
games, 193
SPEC OPS: THE LINE 901
speed (sense of)/vection, Mission Demolition, state tracking, paper game technologies, 59
466-471 static functions (C# coding), 288
Spider-Man 2, quest outcomes (dynamic stealth puzzles, 194
mechanics), example of, 69 Steinkuehler and the cultural aspects of game
spinners (randomization), 170 development, Constance, 80-81
spoilage mechanic (Farmville), 112 Stern and autotelic empowerment as a
Spoilsport player type, 68 player-centric goal of design in Facade,
sporadic-play games and lusory attitude, Andrew, 117
111-112 stories
Spore, procedural animation, 72 Elemental Tetrad framework, story's
spreadsheet programs. See Calc role in, 28
spreadsheets (Calc) FDD framework, 26
cells, entering data, 158-159 story puzzles, 188
columns strategy
adjusting column widths, 160 defining, 65
labeling rows, 162-163 designing for, 66
creating, 158 modifying Snakes and Ladders for strategic
formulas, exiting formula editing, 164 game play, 23-24
rows optimal strategy, determining, 65-66
creating, 159 strategy puzzles, 188
creating Die A row, 160-161 Strategy software design pattern, 816-817
creating Die B row, 161-162 string variables (C# coding), 285
labeling rows, 162-163 structured conflict as a player-centric goal of
sprints/releases (Scrum software development design, 115-116
methodologies), 408 subclasses (C# coding), 388-389, 589-592
sprites and Prospector Solitaire Sudoku, 188
creating cards from sprites, 566-581 Suits, Bernard
importing images as sprites, 564-566 games, defining, 10-15
Stack Overflow website, C# online Grasshopper, The, 10-11, 15, 110-111
resources, 853 lusory attitude, 13-14, 110-111
Star Control, conflicting objectives (Inscribed SUM formula (Calc), 163, 181
layer mechanics), 42 Super Mario Brothers, integrated actions
Star Wars: A New Hope (meaningful play), 64-65
narrative Super Mario Galaxy, particle systems (procedural
premises, examples of, 49 visual art), 71-72
settings, example of, 49 superclasses (C# coding), 388-389, 591
scoping and the design process, 104 Swain, Chris
three-act dramatic narrative structure, FDD framework, 20, 24, 29
example of, 51-52 boundaries, 25
Star Wars: Knights of the Old Republic, limited characters, 26
possibilities and interactive or linear Dramatic elements, 24-26
narrative, 53-54 Dynamic elements, 24, 26-27
Starcraft, game mods and cultural Emergence, 26-27
mechanics, 81-82 Emergent Narrative, 27
Start screen, Apple Picker, 448 Formal elements, 24-25
THREE-ACT DRAMATIC NARRATIVE STRUCTURE 903
volume control, auditory play environments while loops (C# coding), 316-319
(environmental aesthetics), 74 Williams, John, X-Wing, music in, 70
VRO (Vertical Re-Orchestration), procedural Windows
music, 70-71 force-quitting applications, 317-318,
371-372
Unity, new project setup procedures,
W 794-796
windows (Unity). See panes (Unity)
Warcraft III, game mods and cultural mechanics,
Wittgenstein, Ludwig
81-82
games, defining, 15
wealth as a goal of game design, 107
Philosophical Investigations, 15
weapons and game balance, 177-178
Wizards of the Coast
average damage
Dungeons & Dragons, 846
calculating, 179
dynamic dramatics, 75-77
charting, 179-180
emergent narrative example, 76-77
Chapter 9 prototype example, 182-183
interactive versus linear narrative, 55
duplicating weapon data, 180-181
progression tables, 46
overall damage, showing, 181
tips for running good campaigns, 846-847
percent chance for each bullet,
XP (Experience Points) and cumulative
determining, 178
outcomes (dynamic mechanics), 69
rebalancing weapons, 181-182
RoboRally, innovation and the design
weapons/firing, gameplay development (paper
process, 97-98
prototyping), 134-135, 137-138
Word Game, 657, 692-693
web resources, game developer salary
adding color, 690-692
surveys, 220
adding interactivity, 680-684
websites
animation, 687-690
animation/model resources, 854-855
design goals, 658-659
art assets, 854
layouts, 671-680
audio assets, 854
parsing the word list, 660-663
educational software discounts, 855
project setup, 658
font-related resources, 855
scoring, 684-687
Goldstone's websites, Will, 853
setting up, 664-671
model/animation resources, 854-855
working in the digital game industry, 217
Stack Overflow website, C# online resources,
following up, 218-219
853
interviewing, 219-220
Unity Gems website, 852
networking, 217-218
Unity website
salaries, 220
Learn section (Unity website), 852
working conditions, 213
tutorials, 852
World of Warcraft
weighted distributions and game balance,
player interaction patterns, 43
173-175
player-built external tools as example of
weighted probabilities in Calc, 174-175
cultural technology, 84
Westwood Studios, Blade Runner and multiple
dialogue choices (empathetic characters
versus avatars), 57
908 WRIGHT, WILL
Wright, Will
procedural animation, 72
Spore, 72
Wyatt, James, on XP (Experience Points)
and cumulative outcomes (dynamic
mechanics), 69
X-Y-Z
XML (Extensible Markup Language)
C# coding and, 817-821
Omega Mage, creating the game
environment, 730-735
XP (Experience Points) and cumulative
outcomes (dynamic mechanics), 69
X-Wing
information, conveying (Inscribed Layer
aesthetics), 48-49
music in, 70
Yager Development, Spec Ops: The Line and
limited possibilities and interactive or linear
narrative, 53-54
Yee, Nick, on types of players, 68
Zeno's Dichotomy Paradox and linear
interpolation, 833-834
Zimmerman, Eric
meaningful play, 64, 120-121
Rules of Play: Game Design Fundamentals, 64,
120-121
Zork, interactive narrative example, 75-76
Zubek, Robert, and MDA framework, 20, 29
aesthetics-based design, 21-24
defining, 20-21
designer views of games, 21
player views of games, 21
Zynga, freemium games, 214