Brendan Duncan#
A companion to Taos Engine: Building a Modern WebGPU Game Engine.

Status#
This book is a work in progress. Chapters are added as the game evolves.
What this book is about#
Writing a game engine is only useful if it can be used to build an actual game. Crafty is the first full game built on Taos Engine: a Minecraft-style voxel sandbox with an infinite procedurally generated world, creatures with their own AI, dynamic weather, and multiplayer. It is a style of game many people already know, which makes it a good yardstick for how well the engine holds up under a real workload.
Where the core book builds the reusable engine, this book builds the game on top of it — the systems that only make sense for this game.
| Chapter | What we build |
|---|---|
| Game Architecture | Source layout, boot sequence, render setup, the frame loop, and how the chapters fit together |
| Block Voxel Terrain | Chunks, world generation, greedy meshing, block lighting, water, villages |
| Player Physics | A kinematic character controller swept against the voxel grid |
| NPC AI | State-machine creatures, spawning, skeletal animation |
| Game UI | Start screen, HUD, hotbar, inventory, menus, settings, minimap |
| Weather System | Biome-driven weather states, cloud coverage, precipitation |
| Audio | Surface sound groups, footsteps, ambient music |
| Multiplayer Gameplay | Player sync, snapshot interpolation, block-edit replication, chat |
| World Persistence | Seed + edit-log saves, schema versioning |
Before you start#
This book assumes the core book as background. The chapters that matter most are:
- Taos Engine Chapter 3: Rendering Architecture — the render graph every Crafty pass plugs into
- Taos Engine Chapter 12: Game Engine Design — GameObjects, components, and the frame loop
- Taos Engine Chapter 13: Input, Chapter 14: Audio, Chapter 15: User Interface, and Chapter 16: Network Architecture — the engine layers the game chapters build on
The game's source lives in crafty/, with the voxel world itself in src/block/. Run it with npm run dev and open http://localhost:5173/crafty/.