A runtime-generated open world in Unity 2022 — chunk-based 3D terrain,
L-system vegetation, Mitchell's Best Candidate spatial distribution, multi-modal animal
controllers, and a custom audio system with per-channel routing and playlist handling.
Four independent systems built to coexist within a real frame budget.
Chunk-based 3D terrain — adjustable size, quality, and collision detail; each chunk generates, activates, and destroys independently based on player proximity
Map configuration interface — players configure parameters and save up to five custom maps between sessions
Async generation — heavy computation offloaded via C# async/await to keep frame timing stable during world build
Custom shaders — terrain-specific shaders maintain visual consistency without standard pipeline overhead
⚙️
Engineering Decisions
01
Chunk-based over heightmap
Chunk streaming lets large worlds exist without loading everything into memory — activate and dispose on proximity rather than holding a full scene.
02
async/await over coroutines
Cleaner cancellation semantics and better integration with Unity's job system for long-running generation tasks.
02 — Algorithmic Placement & Optimisation
🌿
Systems
L-system vegetation — parametric rules produce unique tree structures per instance, no manual placement needed
Mitchell's Best Candidate sampling — Poisson-disc-style distribution of vegetation and animals eliminates visible clustering
Distance-based activation — plants and animals enable/disable by player proximity, eliminating unnecessary update calls at distance
Runtime integration — newly purchased animals inject directly into the live distribution, no scene reload required
⚙️
Engineering Decisions
01
L-systems over prefab variants
A single rule set produces genuinely varied trees at scale — no need for hundreds of hand-authored prefabs as the world grows.
02
Mitchell's over pure random
Pure random placement clusters visibly. Mitchell's produces natural spread fast enough for runtime generation.
03 — Player Interaction & Systems
🎮
Systems
Multi-modal controllers — seamless switching between ground, swimming, and flight movement without separate scenes or loading screens
Shop unlock system — players purchase additional animal types, integrated live into the procedural distribution
Consistent control feel — shared input architecture ensures uniform response across all movement modes and terrain types
⚙️
Engineering Decisions
01
State machine per animal
Each controller is a state machine sharing a common input interface. Switching animals swaps the active machine — no duplicated input code.
02
Shop integrated into distributor
Newly unlocked animals register directly with the placement system, keeping the world alive and populated during player progression.
04 — Audio & Music Systems
🔊
Systems
Custom music player — playlist handling, scrubbing, real-time timing feedback, and track metadata display
Separate audio routing — music and ambient on independent Unity AudioMixer groups with individual volume controls
Extensible architecture — designed with hooks for future adaptive audio, triggered events, and dynamic mixing layers
⚙️
Engineering Decisions
01
AudioManager singleton
All audio calls route through one manager — centralised mixing state, no simultaneous music instances, and a clear path to future Wwise migration.
02
Separate mixer groups
Independent groups for music and ambient allow volume control and future DSP inserts without cross-contamination between channels.
05 — Technology Stack
Unity 2022
Engine, rendering, build pipeline
C#
All gameplay & systems scripting
Procedural Generation
Runtime terrain & object placement
async / await
Non-blocking generation pipeline
Custom Shaders
Terrain visual rendering
Unity AudioMixer
Multi-channel audio routing
06 — Reflection
🎓 What this project was about
The challenge wasn't building any one system — it was making them coexist. Chunk generation,
async placement, live animal registration, and per-channel audio routing all share the same
frame budget. The emphasis throughout was on extensible, performance-aware architecture that
leaves room for future layers rather than brittle one-shot implementations.
Interested in Procedural Systems?
Happy to discuss Unity architecture, procedural generation, or the audio manager design in detail.