Foreword |
|
xxv | |
Preface |
|
xxviii | |
Acknowledgments |
|
xli | |
About the Author |
|
xliii | |
|
PART I Game Design and Paper Prototyping |
|
|
1 | (2) |
|
1 Thinking Like a Designer |
|
|
3 | (1) |
|
|
4 | (1) |
|
Bartok: A Game Design Exercise |
|
|
4 | (7) |
|
|
11 | (8) |
|
|
19 | (2) |
|
2 Game Analysis Frameworks |
|
|
21 | (12) |
|
Common Frameworks for Ludology |
|
|
22 | (1) |
|
MDA: Mechanics, Dynamics, and Aesthetics |
|
|
22 | (4) |
|
Formal, Dramatic, and Dynamic Elements |
|
|
26 | (4) |
|
|
30 | (2) |
|
|
32 | (1) |
|
|
33 | (8) |
|
|
34 | (1) |
|
|
35 | (1) |
|
|
36 | (2) |
|
The Responsibility of the Designer |
|
|
38 | (2) |
|
|
40 | (1) |
|
|
41 | (26) |
|
|
42 | (9) |
|
|
51 | (3) |
|
|
54 | (11) |
|
|
65 | (1) |
|
|
66 | (1) |
|
|
67 | (22) |
|
|
68 | (1) |
|
|
69 | (1) |
|
|
70 | (7) |
|
|
77 | (8) |
|
|
85 | (3) |
|
|
88 | (1) |
|
|
88 | (1) |
|
|
89 | (14) |
|
|
90 | (1) |
|
|
91 | (2) |
|
|
93 | (1) |
|
|
93 | (2) |
|
|
95 | (1) |
|
Authorized Transmedia Are Not Part of the Cultural Layer |
|
|
96 | (1) |
|
The Cultural Impact of a Game |
|
|
97 | (4) |
|
|
101 | (2) |
|
|
103 | (26) |
|
|
104 | (8) |
|
|
112 | (1) |
|
Brainstorming and Ideation |
|
|
113 | (4) |
|
|
117 | (3) |
|
|
120 | (7) |
|
|
127 | (2) |
|
|
129 | (22) |
|
Design Goals: An Incomplete List |
|
|
130 | (1) |
|
|
131 | (3) |
|
|
134 | (16) |
|
|
150 | (1) |
|
|
151 | (16) |
|
The Benefits of Paper Prototyping |
|
|
152 | (1) |
|
|
153 | (3) |
|
Paper Prototyping for Interfaces |
|
|
156 | (1) |
|
A Paper Prototype Example |
|
|
157 | (5) |
|
Best Uses for Paper Prototyping |
|
|
162 | (1) |
|
Poor Uses for Paper Prototyping |
|
|
163 | (1) |
|
|
164 | (3) |
|
|
167 | (20) |
|
|
168 | (1) |
|
Being a Great Playtester Yourself |
|
|
168 | (1) |
|
The Circles of Playtesters |
|
|
169 | (3) |
|
|
172 | (11) |
|
Other Important Types of Testing |
|
|
183 | (2) |
|
|
185 | (2) |
|
|
187 | (44) |
|
The Meaning of Game Balance |
|
|
188 | (1) |
|
The Importance of Spreadsheets |
|
|
188 | (2) |
|
Examining Dice Probability with Sheets |
|
|
190 | (17) |
|
|
207 | (5) |
|
Randomizer Technologies in Paper Games |
|
|
212 | (3) |
|
|
215 | (1) |
|
Weighted Probability in Google Sheets |
|
|
216 | (1) |
|
|
217 | (2) |
|
Using Sheets to Balance Weapons |
|
|
219 | (9) |
|
Positive and Negative Feedback |
|
|
228 | (1) |
|
|
229 | (2) |
|
|
231 | (16) |
|
|
232 | (2) |
|
|
234 | (8) |
|
Teaching New Skills and Concepts |
|
|
242 | (3) |
|
|
245 | (2) |
|
|
247 | (18) |
|
Scott Kim on Puzzle Design |
|
|
248 | (9) |
|
The Steps of Solving a Puzzle |
|
|
257 | (3) |
|
Puzzle Examples in Action Games |
|
|
260 | (2) |
|
Designing and Developing Puzzle Games |
|
|
262 | (1) |
|
|
263 | (2) |
|
|
265 | (22) |
|
The Manifesto for Agile Software Development |
|
|
266 | (1) |
|
|
267 | (4) |
|
|
271 | (14) |
|
Creating Your Own Burndown Charts |
|
|
285 | (1) |
|
|
286 | (1) |
|
15 The Digital Game Industry |
|
|
287 | (22) |
|
|
288 | (8) |
|
|
296 | (3) |
|
Getting Into the Industry |
|
|
299 | (6) |
|
Don't Wait to Start Making Games! |
|
|
305 | (3) |
|
|
308 | (1) |
|
PART II Programming C# in Unity |
|
|
309 | (310) |
|
16 Thinking in Digital Systems |
|
|
311 | (12) |
|
Systems Thinking in Board Games |
|
|
312 | (1) |
|
An Exercise in Simple Instructions |
|
|
313 | (3) |
|
Game Analysis: Apple Picker |
|
|
316 | (6) |
|
|
322 | (1) |
|
17 Introducing Unity Hub and the Unity Editor |
|
|
323 | (24) |
|
|
324 | (3) |
|
Introducing Our Development Environment |
|
|
327 | (7) |
|
|
334 | (1) |
|
Checking Out a Sample Project |
|
|
335 | (1) |
|
Creating Your First Unity Project |
|
|
335 | (3) |
|
Learning Your Way Around Unity |
|
|
338 | (1) |
|
Setting Up the Unity Window Layout |
|
|
339 | (6) |
|
|
345 | (2) |
|
18 Introducing Our Language: C# |
|
|
347 | (12) |
|
Understanding the Features of C# |
|
|
348 | (7) |
|
Reading and Understanding C# Syntax |
|
|
355 | (3) |
|
|
358 | (1) |
|
19 Hello World: Your First Program |
|
|
359 | (24) |
|
|
360 | (3) |
|
|
363 | (7) |
|
Making Things More Interesting |
|
|
370 | (12) |
|
|
382 | (1) |
|
20 Variables and Components |
|
|
383 | (22) |
|
|
384 | (1) |
|
Statically Typed Variables in C# |
|
|
384 | (2) |
|
Important C# Variable Types |
|
|
386 | (3) |
|
|
389 | (1) |
|
|
389 | (1) |
|
Important Unity Variable Types |
|
|
390 | (9) |
|
Unity GameObjects and Components |
|
|
399 | (4) |
|
|
403 | (2) |
|
21 Boolean Operations and Conditionals |
|
|
405 | (18) |
|
|
406 | (4) |
|
|
410 | (6) |
|
|
416 | (6) |
|
|
422 | (1) |
|
|
423 | (14) |
|
|
424 | (1) |
|
|
424 | (1) |
|
|
425 | (4) |
|
|
429 | (1) |
|
|
429 | (4) |
|
|
433 | (1) |
|
Jump Statements within Loops |
|
|
433 | (3) |
|
|
436 | (1) |
|
|
437 | (36) |
|
|
438 | (4) |
|
Using Generic Collections |
|
|
442 | (1) |
|
|
443 | (4) |
|
|
447 | (4) |
|
|
451 | (6) |
|
|
457 | (4) |
|
|
461 | (4) |
|
|
465 | (1) |
|
Choosing Whether to Use an Array or List |
|
|
466 | (1) |
|
|
467 | (6) |
|
24 Functions and Parameters |
|
|
473 | (20) |
|
Setting Up the Function Examples Project |
|
|
474 | (1) |
|
|
474 | (2) |
|
What Happens When You Call a Function? |
|
|
476 | (2) |
|
Function Parameters and Arguments |
|
|
478 | (2) |
|
|
480 | (1) |
|
|
480 | (2) |
|
Function Naming Conventions |
|
|
482 | (1) |
|
|
482 | (3) |
|
|
485 | (1) |
|
|
486 | (1) |
|
|
487 | (2) |
|
|
489 | (2) |
|
|
491 | (2) |
|
|
493 | (28) |
|
Getting Started with Debugging |
|
|
494 | (12) |
|
Stepping Through Code with the Debugger |
|
|
506 | (13) |
|
|
519 | (2) |
|
|
521 | (18) |
|
|
522 | (11) |
|
|
533 | (5) |
|
|
538 | (1) |
|
27 Object-Oriented Thinking |
|
|
539 | (36) |
|
The Object-Oriented Metaphor |
|
|
540 | (2) |
|
An Object-Oriented Boids Implementation |
|
|
542 | (32) |
|
|
574 | (1) |
|
|
575 | (44) |
|
The Theory of Data-Oriented Design |
|
|
576 | (6) |
|
DOTS Tutorial and Example |
|
|
582 | (35) |
|
|
617 | (1) |
|
|
618 | (1) |
|
PART III Game Prototype Tutorials |
|
|
619 | (568) |
|
|
621 | (60) |
|
|
622 | (1) |
|
The Apple Picker Prototype |
|
|
622 | (1) |
|
The Purpose of a Digital Prototype |
|
|
623 | (1) |
|
|
624 | (13) |
|
Coding the Apple Picker Prototype |
|
|
637 | (24) |
|
|
661 | (17) |
|
|
678 | (3) |
|
|
681 | (72) |
|
|
682 | (1) |
|
The Mission Demolition Prototype |
|
|
682 | (1) |
|
Getting Started: Mission Demolition |
|
|
683 | (1) |
|
|
683 | (1) |
|
|
684 | (7) |
|
|
691 | (45) |
|
From Prototype to First Playable |
|
|
736 | (15) |
|
|
751 | (2) |
|
|
753 | (54) |
|
|
754 | (1) |
|
Getting Started: Space SHMUP |
|
|
755 | (2) |
|
|
757 | (1) |
|
|
758 | (13) |
|
|
771 | (16) |
|
Spawning Enemies at Random |
|
|
787 | (3) |
|
Setting Tags, Layers, and Physics |
|
|
790 | (2) |
|
Making the Enemies Damage the Player |
|
|
792 | (5) |
|
|
797 | (3) |
|
|
800 | (5) |
|
|
805 | (2) |
|
|
807 | (90) |
|
|
808 | (1) |
|
Getting Started: Space SHMUP- Part 2 |
|
|
809 | (1) |
|
|
810 | (1) |
|
Programming Other Enemies |
|
|
811 | (22) |
|
|
833 | (20) |
|
|
853 | (4) |
|
Adding PowerUps and Boosting Weapons |
|
|
857 | (12) |
|
Race Conditions & Script Execution Order |
|
|
869 | (3) |
|
Making Enemies Drop PowerUps |
|
|
872 | (4) |
|
Enemy_4 --- A More Complex Enemy |
|
|
876 | (12) |
|
Tuning Settings for the Game Entities |
|
|
888 | (2) |
|
Adding a Scrolling Starfield Background |
|
|
890 | (3) |
|
|
893 | (4) |
|
33 Prospector Solitaire - Part 1 |
|
|
897 | (72) |
|
|
898 | (1) |
|
|
899 | (2) |
|
Getting Started: Prospector Solitaire |
|
|
901 | (1) |
|
|
902 | (4) |
|
Setting Up the Unity Window Layout |
|
|
906 | (1) |
|
Setting Up the Camera and Game Pane |
|
|
906 | (1) |
|
Importing Images as Sprites |
|
|
907 | (4) |
|
Constructing Cards from Sprites |
|
|
911 | (29) |
|
Implementing Prospector in Code |
|
|
940 | (21) |
|
|
961 | (7) |
|
|
968 | (1) |
|
34 Prospector Solitaire -- Part 2 |
|
|
969 | (50) |
|
|
970 | (1) |
|
Getting Started: Prospector -- Part 2 |
|
|
971 | (1) |
|
Additional Prospector Game Elements |
|
|
972 | (13) |
|
Adding GUI Elements to Display the Score |
|
|
985 | (28) |
|
Building and Running Your WebGL Build |
|
|
1013 | (3) |
|
|
1016 | (3) |
|
35 Dungeon Delver -- Part 1 |
|
|
1019 | (76) |
|
|
1020 | (1) |
|
|
1021 | (1) |
|
Getting Started: Dungeon Delver |
|
|
1022 | (1) |
|
|
1023 | (3) |
|
Understanding the Dungeon Data |
|
|
1026 | (5) |
|
Showing the Map with a Unity Tilemap |
|
|
1031 | (11) |
|
|
1042 | (13) |
|
Giving Dray an Attack Animation |
|
|
1055 | (4) |
|
|
1059 | (2) |
|
Programmatic Collision in Unity Tilemap |
|
|
1061 | (9) |
|
|
1070 | (2) |
|
|
1072 | (3) |
|
Keeping GameObjects in the Room |
|
|
1075 | (3) |
|
|
1078 | (9) |
|
|
1087 | (4) |
|
Making the Camera Follow Dray |
|
|
1091 | (3) |
|
|
1094 | (1) |
|
36 Dungeon Delver -- Part 2 |
|
|
1095 | (92) |
|
|
1096 | (1) |
|
Getting Started: Dungeon Delver -- Part 2 |
|
|
1097 | (1) |
|
Dungeon Delver -- Part 2 Overview |
|
|
1098 | (1) |
|
|
1098 | (7) |
|
Swapping in LockedDoor GameObjects |
|
|
1105 | (6) |
|
Implementing Keys and Unlocking Doors |
|
|
1111 | (8) |
|
Adding GUI to Track Key Count and Health |
|
|
1119 | (6) |
|
Enabling Enemies to Damage Dray |
|
|
1125 | (5) |
|
Making Dray's Attack Damage Enemies |
|
|
1130 | (1) |
|
Modifying Enemy to Take Damage |
|
|
1131 | (4) |
|
|
1135 | (3) |
|
Enemies Dropping Items on Death |
|
|
1138 | (5) |
|
Implementing a New Dungeon -- The Hat |
|
|
1143 | (4) |
|
|
1147 | (37) |
|
|
1184 | (3) |
|
|
1187 | (16) |
|
|
1189 | (8) |
|
What Is a Coding Challenge? |
|
|
1190 | (1) |
|
Getting Started on a Coding Challenge |
|
|
1191 | (1) |
|
|
1192 | (2) |
|
How to Approach Each Challenge |
|
|
1194 | (3) |
|
|
1197 | (6) |
|
Continue to Learn Unity Development |
|
|
1198 | (1) |
|
|
1199 | (1) |
|
Start a Small Game Project or Prototype |
|
|
1199 | (1) |
|
Make Games for Lifelong Enrichment |
|
|
1200 | (1) |
|
Consider Going to School for GameDev |
|
|
1200 | (1) |
|
Explore Advanced Game Design |
|
|
1201 | (1) |
|
|
1201 | (2) |
Index |
|
1203 | |