Introduction to Game Design, Prototyping, and Development, 3rd edition

Published by Addison-Wesley Professional (August 25, 2022) © 2022

  • Jeremy Gibson Bond

eTextbook

from$76.99

  • Available for purchase from all major ebook resellers, including InformIT.com.
  • To request a review copy, click on the "Request a Review Copy" button.
$63.99

  • A print text (hardcover or paperback) 
  • Free shipping
  • Also available for purchase as an ebook from all major ebook resellers, including InformIT.com

Learn All the Design & Development Skills You Need to Make Great Games with Unity, the World's Most Popular Professional Game Engine

If you want to design and develop games, there is no substitute for strong, hands-on experience with modern techniques and tools. That is exactly what this book provides. Leading instructor and indie game developer Jeremy Gibson Bond covers all three disciplines that you need to succeed: game design theory, rapid iterative prototyping, and practical programming.

Building on two previous best-sellers, this Third Edition contains hundreds of improvements across more than 400 new pages, all designed to make it even easier to understand and more useful in modern game development.

The five game tutorials have been thoroughly revised and expanded to cover even more best practices for prototyping and development, and all examples now use Unity 2020.3 LTS (Long Term Support), a stable and feature-rich standard for years to come. The new content includes greatly enhanced tutorials, a chapter on Unity's high-performance Data-Oriented Tech Stack (DOTS), new Coding Challenges to help you transition to making your own games from scratch, and tips on next steps after you have finished the book. The revamped website includes playable versions of all example games, plus an exciting new tool that provides immediate feedback on potential errors in your own code.

Part I: Game Design and Paper Prototyping

  • Use the Layered Tetrad to understand and design powerful interactive experiences.
  • Explore the core game design practices of paper prototyping, testing, and iteration.
  • Learn effective strategies for staying on track and on schedule.
  • Get tips for finding a rewarding job in today's industry.

Part II: Programming C# in Unity

  • Learn C# from the basics through class inheritance, object-oriented programming, and data-oriented design.

Part III: Game Prototype Tutorials

  • Implement games across five genres: arcade, casual physics, space shooter, solitaire card game, and top-down adventure game. Each game is designed to be easily extensible into your own projects.
  • Take three games from prototype to “first playable” through new extended tutorial chapters that refi ne the games further than in previous editions of the book.

NEW! Part IV: Next Steps

  • Tackle the new, growing library of Coding Challenges, a proven method for transitioning from tutorials to creating your own projects from scratch.
  • Get ideas and resources for new projects to tackle on your own.

Foreword
Preface
PART I Game Design and Paper Prototyping
Chapter 1 Thinking Like a Designer
You Are a Game Designer
Bartok: A Game Design Exercise
The Definition of Game
Summary
Chapter 2 Game Analysis Frameworks
Common Frameworks for Ludology
MDA: Mechanics, Dynamics, and Aesthetics
Formal, Dramatic, and Dynamic Elements
The Elemental Tetrad
Summary
Chapter 3 The Layered Tetrad
The Inscribed Layer
The Dynamic Layer
The Cultural Layer
The Responsibility of the Designer
Summary
Chapter 4 The Inscribed Layer
Inscribed Mechanics
Inscribed Aesthetics
Inscribed Narrative
Inscribed Technology
Summary
The Dynamic Layer
The Role of the Player
Emergence
Dynamic Mechanics
Dynamic Aesthetics
Dynamic Narrative
Dynamic Technology
Summary
The Cultural Layer
Beyond Play
Cultural Mechanics
Cultural Aesthetics
Cultural Narrative
Cultural Technology
Authorized Transmedia Are Not Part of the Cultural Layer
The Cultural Impact of a Game
Summary
Acting Like a Designer
Iterative Design
Innovation
Brainstorming and Ideation
Changing Your Mind
Scoping!
Summary
Design Goals
Design Goals: An Incomplete List
Designer-Centric Goals
Player-Centric Goals
Summary
Paper Prototyping
The Benefits of Paper Prototyping
Paper Prototyping Tools
Paper Prototyping for Interfaces
A Paper Prototype Example
Best Uses for Paper Prototyping
Poor Uses for Paper Prototyping
Summary
Game Testing
Why Playtest?
Being a Great Playtester Yourself
The Circles of Playtesters
Methods of Playtesting
Other Important Types of Testing
Summary
Math and Game Balance
The Meaning of Game Balance
The Importance of Spreadsheets
Examining Dice Probability with Sheets
The Math of Probability
Randomizer Technologies in Paper Games
Weighted Distributions
Weighted Probability in Google Sheets
Permutations
Using Sheets to Balance Weapons
Positive and Negative Feedback
Summary
Guiding the Player
Direct Guidance
Indirect Guidance
Teaching New Skills and Concepts
Summary
Puzzle Design
Scott Kim on Puzzle Design
The Steps of Solving a Puzzle
Puzzle Examples in Action Games
Designing and Developing Puzzle Games
Summary
The Agile Mentality
The Manifesto for Agile Software Development
Scrum Methodology
Burndown Chart Example
Creating Your Own Burndown Charts
Summary
The Digital Game Industry
About the Game Industry
Game Education
Getting Into the Industry
Don't Wait to Start Making Games!
Summary

Thinking in Digital Systems
Systems Thinking in Board Games
An Exercise in Simple Instructions
Game Analysis: Apple Picker
Summary
Introducing Unity Hub and the Unity Editor
Downloading Unity
Introducing Our Development Environment
Creating a Unity Account
Checking Out a Sample Project
Creating Your First Unity Project
Learning Your Way Around Unity
Setting Up the Unity Window Layout
Summary
Introducing Our Language: C#
Understanding the Features of C#
Reading and Understanding C# Syntax
Summary
Hello World: Your First Program
Creating a New Project
Making a New C# Script
Making Things More Interesting
Summary
Variables and Components
Introducing Variables
Statically Typed Variables in C#
Important C# Variable Types
The Scope of Variables
Naming Conventions
Important Unity Variable Types
Unity GameObjects and Components
Summary
Boolean Operations and Conditionals
Booleans
Comparison Operators
Conditional Statements
Summary
Loops
Types of Loops
Set Up a Project
while Loops
do...while Loops
for Loops
foreach Loops
Jump Statements within Loops
Summary
Collections in C#
C# Collections
Using Generic Collections
List<T>
Dictionary<Tkey, TValue>
Array
Multidimensional Arrays
Jagged Arrays
Jagged List<T>s
Choosing Whether to Use an Array or List
Summary
Functions and Parameters
Setting Up the Function Examples Project
Definition of a Function
What Happens When You Call a Function?
Function Parameters and Arguments
Returning Values
Returning void
Function Naming Conventions
Why Use Functions?
Function Overloading
Optional Parameters
The params Keyword
Recursive Functions
Summary
Debugging
Getting Started with Debugging
Stepping Through Code with the Debugger
Summary
Classes
Understanding Classes
Class Inheritance
Summary
Object-Oriented Thinking
The Object-Oriented Metaphor
An Object-Oriented Boids Implementation
Summary
Data-Oriented Design
The Theory of Data-Oriented Design
DOTS Tutorial and Example
The Future of Unity DOTS
Summary


What You Will Learn
The Prototype
The Purpose of a Digital Prototype
Preparing
Coding the Prototype
GUI and Game Management
Summary

What You Will Learn
The Prototype
Getting Started:
Game Prototype Concept
Art Assets
Coding the Prototype
From Prototype to First Playable
Summary
Part 1
What You Will Learn
Getting Started:
Setting the Scene
Making the Hero Ship
Adding Some Enemies
Spawning Enemies at Random
Setting Tags, Layers, and Physics
Making the Enemies Damage the Player
Restarting the Game
Shooting (Finally)
Summary
Part 2
What You Will Learn
Getting Started: -- Part 2
Enemy to Enemy_0
Programming Other Enemies
Shooting Revisited
Showing Enemy Damage
Adding PowerUps and Boosting Weapons
Race Conditions & Script Execution Order
Making Enemies Drop PowerUps
Enemy_4 -- A More Complex Enemy
Tuning Settings for the Game Entities
Adding a Scrolling Starfield Background
Summary
-- Part 1
What You Will Learn
The Game
Getting Started:
Build Settings
Setting Up the Unity Window Layout
Setting Up the Camera and Game Pane
Importing Images as Sprites
Constructing Cards from Sprites
Implementing in Code
Implementing Game Logic
Summary
Part 2
What You Will Learn
Getting Started: Part 2
Additional Game Elements
Adding GUI Elements to Display the Score
Building and Running Your WebGL Build
Summary
Part 1
What You Will Learn
The Game
Getting Started:
Setting Up the Cameras
Understanding the Dungeon Data
Showing the Map with a Unity Tilemap
Adding the Hero
Giving Dray an Attack Animation
Dray's Sword
Programmatic Collision in Unity Tilemap
The InRoom Script
Enemy: Skeletos
Keeping GameObjects in the Room
Aligning to the Grid
Moving from Room to Room
Making the Camera Follow Dray
Summary
Part 2
What You Will Learn
Getting Started: Part 2
Part 2 Overview
Implementing TileSwaps
Swapping in LockedDoor GameObjects
Implementing Keys and Unlocking Doors
Adding GUI to Track Key Count and Health
Enabling Enemies to Damage Dray
Making Dray's Attack Damage Enemies
Modifying Enemy to Take Damage
Picking Up Items
Enemies Dropping Items on Death
Implementing a New Dungeon -- The Hat
Implementing a Grappler
Summary

Coding Challenges
What Is a Coding Challenge?
Getting Started on a Coding Challenge
Filling in the Blanks
How to Approach Each Challenge
Beyond This Book
Continue to Learn Unity Development
Build a Classic Game
Start a Small Game Project or Prototype
Make Games for Lifelong Enrichment
Consider Going to School for GameDev
Explore Advanced Game Design
Finally, Drop Me a Line

Standard Project Setup Procedure
The Set Up Sidebar for Tutorial Projects
Setting Up a New Project
Importing a Starter UnityPackage
Setting the Scene Name
Setting the Game Pane to Full HD (1080p)
Setting Up a WebGL Build
Understanding Unity Version Control
Summary
Useful Concepts
Topics Covered
C# and Unity Coding Concepts
Attributes
Automatic Properties
Bitwise Boolean Operators and Layer Masks
Coroutines
Unity Example--Coroutines
Delegates, Events, and UnityEvents
UnityEvents
Enums
Extension Methods
Interfaces
Unity Example--Interfaces
Unity Makes Frequent Use of Interfaces for Observer Pattern
JSON (JavaScript Object Notation) in Unity
Lambda Expressions =>
Naming Conventions
Object-Oriented Software Design Patterns
Component Pattern
Observer Pattern
Singleton Pattern
Strategy Pattern
More Information on Design Patterns in Game Programming
Operator Precedence and Order of Operations
Race Conditions
Unity Example--Race Conditions
Recursive Functions
String Interpolation -- $""
StringBuilder
Structs
Unity Messages Beyond Start() and Update()
Life-Cycle Messages
Frame-Based Messages
Physics-Based Messages
Variable Scope
XML
XML Documentation in C#
Math Concepts
Cosine and Sine (Cos and Sin)
Unity Example--Sine and Cosine
Dice Probability Enumeration
Unity Example--Dice Probability
Using Data-Oriented Design to Improve the DiceProbability Code
Dot Product
Interpolation
Linear Interpolation
Time-Based Linear Interpolations
Linear Interpolations Using Zeno's Paradox
Interpolating More Than Just Position
Linear Extrapolation
Easing for Linear Interpolations
Bezier Curves
Three-Point and Four-Point Bezier Curves
A Recursive Bezier Curve Function
A Data-Oriented Bezier Function
Pen-and-Paper Roleplaying Games
Tips for Running a Good Roleplaying Campaign
User Interface Concepts
Complex Game Controller Input
Input Manager Mapping for Various Controllers
Right-Click on macOS
Control-Click = Right-Click
Use Any PC Mouse
Set Your macOS Mouse to Right-Click
Set Your macOS Trackpad to Right-Click
Online Reference
Tutorials
Unite Conference
Unity's YouTube Channel
Programming
Searching Tips
Finding and Creating Assets
Other Tools and Educational Discounts
Tips for Teaching from This Book
The Goal of This Appendix
Teaching Introduction to Game Design
Teaching Introduction to Game Programming
More Information Is Available


Explore the latest resources to help you develop courses and exams for your students. Sign in and browse downloadable
instructor resource manuals and worksheets, Test Banks and more. We’ll guide you as you go

Jeremy Gibson Bond is a Professor of Practice teaching game design and development at Michigan State University, which in 2022 was ranked the #1 public university for undergraduate game development by Princeton Review three of the last four years. Since 2013, he has served the IndieCade independent game festival and conference as the Chair of Education and Advancement, where he co-chairs the IndieXchange summit each year and has also chaired the GameU summit. In 2013, Jeremy founded the company ExNinja Interactive, through which he develops his independent game projects. Jeremy has spoken several times at the Game Developers Conference. He also created the official Unity Certified Programmer Exam Review specialization on Coursera, which thousands of developers (including several Unity employees) used to prepare for the UCP exam from 2018-2022.

Prior to joining the Games faculty at Michigan State, Jeremy taught for three years as a lecturer in the Electrical Engineering and Computer Science department at the University of Michigan Ann Arbor where he taught game design and software development. From 2009-2013, Jeremy was an assistant professor teaching game design for the Games and Interactive Media Division of the University of Southern California's School of Cinematic Arts, which was named the #1 game design school in North America throughout his tenure there.

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, Television, and Film from the University of Texas at Austin in 1999. Jeremy has worked as a programmer 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.

Need help? Get in touch

Platforms purpose-built for teaching and learning

Pearson+

All in one place. Pearson+ offers instant access to eTextbooks, videos and study tools in one intuitive interface. Students choose how they learn best with enhanced search, audio and flashcards. The Pearson+ app lets them read where life takes them, no wi-fi needed. Students can access Pearson+ through a subscription or their MyLab or Mastering course.

Video
Play
Privacy and cookies
By watching, you agree Pearson can share your viewership data for marketing and analytics for one year, revocable upon changing cookie preferences. Disabling cookies may affect video functionality. More info...

Pearson eTextbook: What’s on the inside just might surprise you

They say you can’t judge a book by its cover. It’s the same with your students. Meet each one right where they are with an engaging, interactive, personalized learning experience that goes beyond the textbook to fit any schedule, any budget, and any lifestyle.