<p>Foreword <br>Preface <br><strong>PART I Game Design and Paper Prototyping </strong><br><strong>Chapter 1</strong> Thinking Like a Designer <br>You Are a Game Designer <br>Bartok: A Game Design Exercise <br>The Definition of Game<br>Summary <br><strong>Chapter 2</strong> Game Analysis Frameworks <br>Common Frameworks for Ludology <br>MDA: Mechanics, Dynamics, and Aesthetics <br>Formal, Dramatic, and Dynamic Elements<br>The Elemental Tetrad <br>Summary <br><strong>Chapter 3</strong> The Layered Tetrad <br>The Inscribed Layer <br>The Dynamic Layer<br>The Cultural Layer<br>The Responsibility of the Designer <br>Summary<br><strong>Chapter 4</strong> The Inscribed Layer <br>Inscribed Mechanics <br>Inscribed Aesthetics<br>Inscribed Narrative<br>Inscribed Technology<br>Summary <br><strong>Chapter 5</strong> The Dynamic Layer<br>The Role of the Player<br>Emergence<br>Dynamic Mechanics <br>Dynamic Aesthetics<br>Dynamic Narrative<br>Dynamic Technology <br>Summary <br><strong>Chapter 6</strong> The Cultural Layer <br>Beyond Play <br>Cultural Mechanics <br>Cultural Aesthetics<br>Cultural Narrative<br>Cultural Technology <br>Authorized Transmedia Are Not Part of the Cultural Layer <br>The Cultural Impact of a Game <br>Summary <br><strong>Chapter 7</strong> Acting Like a Designer <br>Iterative Design <br>Innovation <br>Brainstorming and Ideation <br>Changing Your Mind<br>Scoping!<br>Summary <br><strong>Chapter 8</strong> Design Goals <br>Design Goals: An Incomplete List <br>Designer-Centric Goals <br>Player-Centric Goals<br>Summary<br><strong>Chapter 9</strong> Paper Prototyping <br>The Benefits of Paper Prototyping <br>Paper Prototyping Tools <br>Paper Prototyping for Interfaces <br>A Paper Prototype Example <br>Best Uses for Paper Prototyping <br>Poor Uses for Paper Prototyping<br>Summary <br><strong>Chapter 10</strong> Game Testing <br>Why Playtest?<br>Being a Great Playtester Yourself <br>The Circles of Playtesters <br>Methods of Playtesting <br>Other Important Types of Testing <br>Summary <br><strong>Chapter 11</strong> Math and Game Balance <br>The Meaning of Game Balance <br>The Importance of Spreadsheets<br>Examining Dice Probability with Sheets <br>The Math of Probability <br>Randomizer Technologies in Paper Games <br>Weighted Distributions <br>Weighted Probability in Google Sheets <br>Permutations <br>Using Sheets to Balance Weapons <br>Positive and Negative Feedback<br>Summary <br><strong>Chapter 12</strong> Guiding the Player <br>Direct Guidance <br>Indirect Guidance<br>Teaching New Skills and Concepts <br>Summary <br><strong>Chapter 13 </strong>Puzzle Design <br>Scott Kim on Puzzle Design <br>The Steps of Solving a Puzzle<br>Puzzle Examples in Action Games<br>Designing and Developing Puzzle Games<br>Summary <br><strong>Chapter 14 </strong>The Agile Mentality <br>The Manifesto for Agile Software Development <br>Scrum Methodology <br>Burndown Chart Example <br>Creating Your Own Burndown Charts <br>Summary <br><strong>Chapter 15 </strong>The Digital Game Industry <br>About the Game Industry <br>Game Education<br>Getting Into the Industry <br>Don't Wait to Start Making Games!<br>Summary <br><strong>PART II Programming C# in Unity </strong><br><strong>Chapter 16</strong> Thinking in Digital Systems <br>Systems Thinking in Board Games <br>An Exercise in Simple Instructions<br>Game Analysis: Apple Picker<br>Summary <br><strong>Chapter 17 </strong>Introducing Unity Hub and the Unity Editor <br>Downloading Unity <br>Introducing Our Development Environment <br>Creating a Unity Account <br>Checking Out a Sample Project <br>Creating Your First Unity Project<br>Learning Your Way Around Unity <br>Setting Up the Unity Window Layout <br>Summary <br><strong>Chapter 18 </strong>Introducing Our Language: C#<br>Understanding the Features of C#<br>Reading and Understanding C# Syntax <br>Summary <br><strong>Chapter 19 </strong>Hello World: Your First Program <br>Creating a New Project <br>Making a New C# Script<br>Making Things More Interesting <br>Summary <br><strong>Chapter 20 </strong>Variables and Components <br>Introducing Variables <br>Statically Typed Variables in C#<br>Important C# Variable Types <br>The Scope of Variables <br>Naming Conventions <br>Important Unity Variable Types <br>Unity GameObjects and Components <br>Summary <br><strong>Chapter 21 </strong>Boolean Operations and Conditionals <br>Booleans <br>Comparison Operators <br>Conditional Statements<br>Summary <br><strong>Chapter 22 </strong>Loops <br>Types of Loops <br>Set Up a Project<br>while Loops <br>do...while Loops <br>for Loops <br>foreach Loops <br>Jump Statements within Loops <br>Summary <br><strong>Chapter 23</strong> Collections in C#<br>C# Collections <br>Using Generic Collections <br>List<T><br>Dictionary<Tkey, TValue><br>Array <br>Multidimensional Arrays <br>Jagged Arrays <br>Jagged List<T>s<br>Choosing Whether to Use an Array or List <br>Summary <br><strong>Chapter 24 </strong>Functions and Parameters <br>Setting Up the Function Examples Project <br>Definition of a Function <br>What Happens When You Call a Function?<br>Function Parameters and Arguments <br>Returning Values <br>Returning void <br>Function Naming Conventions <br>Why Use Functions?<br>Function Overloading <br>Optional Parameters<br>The params Keyword <br>Recursive Functions <br>Summary <br><strong>Chapter 25 </strong>Debugging <br>Getting Started with Debugging <br>Stepping Through Code with the Debugger <br>Summary <br><strong>Chapter 26 </strong>Classes <br>Understanding Classes <br>Class Inheritance <br>Summary <br><strong>Chapter 27 </strong>Object-Oriented Thinking <br>The Object-Oriented Metaphor <br>An Object-Oriented Boids Implementation <br>Summary <br><strong>Chapter 28 </strong>Data-Oriented Design <br>The Theory of Data-Oriented Design <br>DOTS Tutorial and Example <br>The Future of Unity DOTS <br>Summary <br><strong>PART III Game Prototype Tutorials </strong><br><strong>Chapter 29 </strong>Apple Picker<br>What You Will Learn <br>The Apple Picker Prototype <br>The Purpose of a Digital Prototype <br>Preparing <br>Coding the Apple Picker Prototype <br>GUI and Game Management <br>Summary <br><strong>Chapter 30 </strong>Mission Demolition <br>What You Will Learn <br>The Mission Demolition Prototype <br>Getting Started: Mission Demolition <br>Game Prototype Concept <br>Art Assets <br>Coding the Prototype <br>From Prototype to First Playable <br>Summary <br><strong>Chapter 31 </strong>Space SHMUP -- Part 1<br>What You Will Learn <br>Getting Started: Space SHMUP <br>Setting the Scene <br>Making the Hero Ship <br>Adding Some Enemies<br>Spawning Enemies at Random <br>Setting Tags, Layers, and Physics <br>Making the Enemies Damage the Player <br>Restarting the Game <br>Shooting (Finally)<br>Summary <br><strong>Chapter 32 </strong>Space SHMUP -- Part 2<br>What You Will Learn <br>Getting Started: Space SHMUP -- Part 2<br>Enemy to Enemy_0 <br>Programming Other Enemies <br>Shooting Revisited <br>Showing Enemy Damage <br>Adding PowerUps and Boosting Weapons <br>Race Conditions & Script Execution Order<br>Making Enemies Drop PowerUps<br>Enemy_4 -- A More Complex Enemy<br>Tuning Settings for the Game Entities<br>Adding a Scrolling Starfield Background <br>Summary <br><strong>Chapter 33 </strong>Prospector Solitaire -- Part 1<br>What You Will Learn <br>The Prospector Game <br>Getting Started: Prospector Solitaire<br>Build Settings <br>Setting Up the Unity Window Layout <br>Setting Up the Camera and Game Pane<br>Importing Images as Sprites <br>Constructing Cards from Sprites<br>Implementing Prospector in Code <br>Implementing Game Logic <br>Summary <br><strong>Chapter 34 </strong>Prospector Solitaire -- Part 2<br>What You Will Learn <br>Getting Started: Prospector -- Part 2<br>Additional Prospector Game Elements <br>Adding GUI Elements to Display the Score <br>Building and Running Your WebGL Build <br>Summary <br><strong>Chapter 35 </strong>Dungeon Delver -- Part 1<br>What You Will Learn <br>The Dungeon Delver Game <br>Getting Started: Dungeon Delver <br>Setting Up the Cameras <br>Understanding the Dungeon Data <br>Showing the Map with a Unity Tilemap <br>Adding the Hero <br>Giving Dray an Attack Animation <br>Dray's Sword <br>Programmatic Collision in Unity Tilemap <br>The InRoom Script <br>Enemy: Skeletos <br>Keeping GameObjects in the Room <br>Aligning to the Grid <br>Moving from Room to Room <br>Making the Camera Follow Dray <br>Summary <br><strong>Chapter 36</strong> Dungeon Delver -- Part 2<br>What You Will Learn <br>Getting Started: Dungeon Delver -- Part 2<br>Dungeon Delver -- Part 2 Overview <br>Implementing TileSwaps <br>Swapping in LockedDoor GameObjects <br>Implementing Keys and Unlocking Doors <br>Adding GUI to Track Key Count and Health <br>Enabling Enemies to Damage Dray <br>Making Dray's Attack Damage Enemies <br>Modifying Enemy to Take Damage <br>Picking Up Items <br>Enemies Dropping Items on Death <br>Implementing a New Dungeon -- The Hat <br>Implementing a Grappler <br>Summary <br><strong>Part IV Next Steps </strong><br><strong>Chapter 37</strong> Coding Challenges <br>What Is a Coding Challenge?<br>Getting Started on a Coding Challenge <br>Filling in the Blanks <br>How to Approach Each Challenge <br><strong>Chapter 38 </strong>Beyond This Book <br>Continue to Learn Unity Development <br>Build a Classic Game <br>Start a Small Game Project or Prototype <br>Make Games for Lifelong Enrichment <br>Consider Going to School for GameDev <br>Explore Advanced Game Design <br>Finally, Drop Me a Line <br><strong>PART V Online Appendices </strong><br><strong>Appendix A</strong> Standard Project Setup Procedure<br>The Set Up Sidebar for Tutorial Projects<br>Setting Up a New Project<br>Importing a Starter UnityPackage<br>Setting the Scene Name<br>Setting the Game Pane to Full HD (1080p)<br>Setting Up a WebGL Build<br>Understanding Unity Version Control<br>Summary<br><strong>Appendix B </strong>Useful Concepts<br>Topics Covered<br>C# and Unity Coding Concepts<br> Attributes<br> Automatic Properties<br> Bitwise Boolean Operators and Layer Masks<br> Coroutines<br> Unity Example--Coroutines<br> Delegates, Events, and UnityEvents<br> UnityEvents<br> Enums<br> Extension Methods<br> Interfaces<br> Unity Example--Interfaces<br> Unity Makes Frequent Use of Interfaces for Observer Pattern<br> JSON (JavaScript Object Notation) in Unity<br> Lambda Expressions =><br> Naming Conventions<br> Object-Oriented Software Design Patterns<br> Component Pattern<br> Observer Pattern<br> Singleton Pattern<br> Strategy Pattern<br> More Information on Design Patterns in Game Programming<br> Operator Precedence and Order of Operations<br> Race Conditions<br> Unity Example--Race Conditions<br> Recursive Functions<br> String Interpolation -- $""<br> StringBuilder<br> Structs<br> Unity Messages Beyond Start() and Update()<br> Life-Cycle Messages<br> Frame-Based Messages<br> Physics-Based Messages<br> Variable Scope<br> XML<br> XML Documentation in C#<br>Math Concepts<br> Cosine and Sine (Cos and Sin)<br> Unity Example--Sine and Cosine<br> Dice Probability Enumeration<br> Unity Example--Dice Probability<br> Using Data-Oriented Design to Improve the DiceProbability Code<br> Dot Product<br> Interpolation<br> Linear Interpolation<br> Time-Based Linear Interpolations<br> Linear Interpolations Using Zeno's Paradox<br> Interpolating More Than Just Position<br> Linear Extrapolation<br> Easing for Linear Interpolations<br> Bezier Curves<br> Three-Point and Four-Point Bezier Curves<br> A Recursive Bezier Curve Function<br> A Data-Oriented Bezier Function<br>Pen-and-Paper Roleplaying Games<br> Tips for Running a Good Roleplaying Campaign<br>User Interface Concepts<br> Complex Game Controller Input<br> Input Manager Mapping for Various Controllers<br> Right-Click on macOS<br> Control-Click = Right-Click<br> Use Any PC Mouse<br> Set Your macOS Mouse to Right-Click<br> Set Your macOS Trackpad to Right-Click<br><strong>Appendix C</strong> Online Reference<br>Tutorials<br>Unite Conference<br>Unity's YouTube Channel<br>Programming<br>Searching Tips<br>Finding and Creating Assets<br>Other Tools and Educational Discounts<br><strong>Appendix D</strong> Tips for Teaching from This Book<br>The Goal of This Appendix<br>Teaching Introduction to Game Design<br>Teaching Introduction to Game Programming<br>More Information Is Available<br><br><br></p>