A novel approach for the classroom or self-study, Learn to Code with Games makes coding accessible to a broad audience. Structured as a series of challenges that help you learn to code by creating a video game, each chapter expands and builds your knowledge while providing guidelines and hints to solving each challenge.
The book employs a unique problem-solving approach to teach you the technical foundations of coding, including data types, variables, functions, and arrays. You will also use techniques such as pseudocode and process mapping to formulate solutions without needing to type anything into a computer, and then convert the solutions into executable code.
Avoiding jargon as much as possible, Learn to Code with Games shows you how to see coding as a way of thinking and problem solving rather than a domain of obscure languages and syntaxes. Its practical hands-on approach through the context of game development enables you to easily grasp basic programming concepts.
Our Hero Is Stuck!
Goals
Required Files
Demo
Unity Game Engine
Challenge: Make Luna Move
Hint: Visualizing the Game World
Hint: Visualization and Code
Hint: Position
Problem-Solving Techniques
A Note about Example Solutions
Example Solution: Make Luna Move
Bonus Challenge: Make Luna Move Faster (or Slower)
Bonus Hint: User Input in Unity
Summary
Reference
Characters and Characteristics
Goals
Required Files
Challenge: Data Types
Hint: Data Type Descriptions
Hint: How Computers Think
Challenge Extension: Data Types
Example Solution: Data Types
Challenge: Defining Variables
Hint: Access Levels
Hint: Naming Variables
Hint: Declaring Variables
Challenge Extension: Defining Variables
Example Solution: Defining Variables
Challenge: Initializing Variables
Hint: Initialization
Hint: Unity’s Start ( ) Function
Hint: Comments
Example Solution: Initializing Variables
Summary
References
The Bounds of the World
Goals
Required Files
Challenge: Detecting Boundary Collisions
Hint: 2D Collisions
Hint: Operators
Hint: Expressions
Hint: Screen Size in Unity
Example Solution: Boundary Collisions
Challenge: Accounting for the Character
Hint: Origin Point
Hint: Game Components in Unity
Example Solution: Accounting for the Character
Summary
Reference
Sprinting and Sneaking
Goals
Required Files
Challenge: Making Luna Sprint
Hint: Function Calls
Hint: The Unity Update ( ) Function
Hint: Conditional Statements
Hint: Increment and Decrement Operators
Hint: Getters and Setters
Hint: Unity’s GetComponent Command and Dot Notation
Example Solution: Making Luna Sprint
Challenge: Making Luna Invisible
Hint: Boolean Flags
Hint: Boolean Operators
Hint: Unity’s Time.time Command
Hint: Local Variables
Example Solution: Making Luna Invisible
Summary
References
Collectables
Goals
Required Files
Challenge: Collecting Objects
Hint: Primitive and Composite Data Types
Hint: Unity Tags
Hint: Axis-Aligned Bounding Box Collisions
Hint: Unity Destroy ( ) Function
Example Solution: Collecting Objects
Summary
Reference
Spawning Objects
Goals
Required Files
Challenge: Spawning Collectables
Hint: Unity Prefabs
Hint: Unity Prefab Instantiation
Hint: Random Number Generation
Hint: Parent Objects in Unity
Hint: for and while Loops
Example Solution: Spawning Collectables
Summary
References
Taking Inventory
Goals
Required Files
Challenge: Keeping Track of Collectables in an Inventory
Hint: The using Directive
Hint: The C# List
Hint: Add and Remove Functions
Hint: Access by Index
Hint: The Count Property
Hint: Function Argument Usage
Example Solution: Keeping Track of Collectables in an Inventory
Summary
References
A Party of Heroes
Goals
Required Files
Challenge: Managing a Group of Heroes
Hint: Unidimensional Arrays
Hint: Unity Tags for Multiple Objects
Hint: foreach Loops
Example Solution: Managing a Group of Heroes
Summary
Reference
Generating a Tile Map
Goals
Required Files
Challenge: Generating a Tile Map
Hint: Tile Maps in Games
Hint: Multidimensional Arrays
Hint: Nested Loops
Hint: Nested Loops with Multidimensional Arrays
Example Solution: Generating a Tile Map
Summary
Reference
Spawning Objects on a Tile Map
Goals
Required Files
Challenge: Spawning Objects on a Tile Map
Hint: Functions
Hint: Functions with Return Values
Hint: Functions with Arguments
Example Solution: Spawning Objects on a Tile Map
Summary
References
Level Generation
Goals
Required Files
Challenge: Generating the Map Scene
Hint: Coupling and Cohesion
Hint: Refactoring for Better Management
Example Solution: Generating the Map Scene
Summary
Game State Management
Goals
Required Files
Challenge: Managing the Game State
Hint: Singleton Design Pattern
Hint: The Unity Awake ( ) and DontDestroyOnLoad ( ) Functions
Hint: The Unity Application.LoadLevel ( ) Function
Hint: Unity Physics 2D Collisions
Example Solution: Managing the Game State
Summary
References
Gameplay
Goals
Required Files
Challenge: Bringing the Gameplay Together
Hint: Obstacles and Artificial Intelligence
Hint: Game State and Score
Hint: More Collisions
Hint: More Spawns
Hint: Reset the Game
Example Solution: Bringing the Gameplay Together
Summary
Appendix A: Pseudocode Reference
Appendix B: Process Mapping Reference
Biography
John M. Quick is an expert in the strategic enhancement of motivation, learning, and performance. He collaborates with industry and university clients to strategically solve the greatest challenges in motivation, learning, and performance. John earned a PhD in Educational Technology at Arizona State University, where he researched enjoyment and individual differences in games. He created the Gameplay Enjoyment Model (GEM) and Gaming Goal Orientations (GGO) model to guide the design of effective game-based solutions. John has released more than 15 digital games. His games focus on innovative topics, such as learner engagement, employee performance improvement, and cutting-edge interfaces. John has over 5 years of classroom experience at the higher education level. He has instructed courses on computer literacy, game design, and programming at Michigan State University (East Lansing), Arizona State University (Tempe), and DigiPen Institute of Technology Singapore.
"Now is definitely the time for a book like this. In the realms of web design and game design, knowledge of coding is essential, even for non-programmers on the team."
—Carrie Heeter, Michigan State University, East Lansing, USA