Hands-on Rust
Effective Learning through 2D Game Development and Play
by Herbert Wolverson
Rust is an exciting new programming language combining the power of C
with memory safety, fearless concurrency, and productivity
boosters—and what better way to learn than by making games. Each
chapter in this book presents hands-on, practical projects ranging from
“Hello, World” to building a full dungeon crawler game. With this book,
you’ll learn game development skills applicable to other engines,
including Unity and Unreal.
Printed in full color.
Rust is an exciting programming language combining the power of C with
memory safety, fearless concurrency, and productivity boosters. With
Rust, you have a shiny new playground where your game ideas can
flourish.
Each chapter in this book presents hands-on, practical projects that
take you on a journey from “Hello, World” to building a full dungeon
crawler game. Start by setting up Rust and getting comfortable with your
development environment. Learn the language basics with practical
examples as you make your own version of Flappy Bird. Discover what it
takes to randomly generate dungeons and populate them with monsters as
you build a complete dungeon crawl game. Run game systems concurrently
for high-performance and fast game-play, while retaining the ability to
debug your program. Unleash your creativity with magical items, tougher
monsters, and intricate dungeon design. Add layered graphics and polish
your game with style.
What You Need
- A computer running Windows 10, Linux, or Mac OS X.
- A text editor, such as Visual Studio Code.
- A video card and drivers capable of running OpenGL 3.2.
Resources
Releases:
- P1.0 2021/07/06
- B7.0 2021/06/10
- B6.0 2021/03/21
- B5.0 2021/01/26
Preface
- Getting Started with Rust
- Rust and Your Development Environment
- Installing Rust
- Installing and Configuring Your Development Environment
- Managing Projects with Cargo
- Creating Your First Rust Program
- Using Cargo to Build, Check, or Run Your Project
- Formatting Your Code
- Finding Common Mistakes with Clippy
- Package Management with Cargo
- Wrap-Up
- First Steps with Rust
- Creating a New Project
- Capturing User
Input

- Moving Input to a Function
- Trimming Input
- Storing Strings in an Array
- Grouping Data with Structs
- Storing a Variable Amount of Data with Vectors
- Categorizing with Enumerations
- Wrap-Up
- Build Your First Game with Rust
- Understanding the Game Loop
- Creating Different Game Modes
- Adding the Player
- Creating Obstacles and Keeping Score
- Wrap-Up
- Building a Dungeon Crawler
- Design a Dungeon Crawler
- Adding Headings to Your Design Document
- Wrap-Up
- Build a Dungeon Crawler
- Dividing Your Code Into Modules
- Organizing Your Imports With a Prelude
- Storing the Dungeon Map
- Adding the Adventurer
- Building a Dungeon
- Graphics, Camera,
Action

- Wrap-Up
- Compose Dungeon Denizens
- Understanding Terminology
- Composing Entities
- Installing and Using Legion
- Composing the Player
- Managing Complexity with Systems
- Adding Monsters
- Collision Detection
- Wrap-Up
- Take Turns with the Monsters
- Making Monsters Wander Randomly
- Moving Entites in a Turn-Based Game
- Sending Messages of Intent
- Wrap-Up
- Health and Melee Combat
- Giving Entities Hit Points
- Adding a Heads-up Display
- Implementing Combat
- Waiting as a Strategy
- Wrap-Up
- Victory and Defeat
- Building a Smarter Monster
- Implementing a Game Over Screen
- Finding the Amulet of Yala
- Wrap-Up
- Fields of View
- Defining an Entity’s Field of View
- Limiting Monsters’ Fields of View
- Adding Spatial Memory
- Wrap-Up
- More Interesting Dungeons
- Creating Traits
- Creating Cellular Automata Maps
- Creating Drunkard’s Walk Maps
- Prefabricating Map Sections
- Wrap-Up
- Map Themes
- Theming Your Dungeon
- Rendering with Themes
- Unleashing Your Imagination
- Wrap-Up
- Inventory and Power-Ups
excerpt
- Designing Items
- Managing Inventory
- Wrap-Up
- Deeper Dungeons
- Adding Stairs to the Map
- Tracking Game Level
- Displaying the Current Level on the HUD
- Wrap-Up
- Combat Systems and Loot
- Designing Data-Driven Dungeons
- Extending the Combat System
- Adding More Swords
- Wrap-Up
- Final Steps and Finishing Touches
- Packaging Your Game for Distribution
- Making the Dungeon Crawler Your Own
- Additional Content
- Wrap-Up
- Additional Resources
- ASCII/Codepage 437 Chart
- Short Game Design Documents
- Make a Note of Every Idea
- Why You Need a Design Document
- Design Document Headings
- You Aren’t Gonna Need It
- Wrap-Up
- Rust Cheat Sheet
Author
Herbert Wolverson has worked as a programmer and an indie game
developer since the late 1990s. He’s taught programming and IT skills at
a variety of levels, contributes to multiple Open Source projects, and
is active in the game development scene.