Skip to content
Unity framework · v0.1.0 · early development

Procedural worlds,
engineered layer by layer.

World Engine is a Unity framework for generating and managing game worlds. Threaded chunk streaming, a dependency-ordered layer pipeline, blended biomes, rivers and decoration with a debugger that shows exactly how every chunk was built.

World Engine · Generation Debugger
A procedurally generated heightmap world rendered in the Unity editor
Layer pipelinecached
  1. 1BiomeLayerpad 0
  2. 2TerrainLayerpad 4
  3. 3RiverLayerpad 4
  4. 4DecorationLayerpad 1
Chunk 017
42ms
Unity UPM packageThreaded generationDependency-ordered layersBlended biomesChunk streamingGeneration debuggerRiversDecorationUnity UPM packageThreaded generationDependency-ordered layersBlended biomesChunk streamingGeneration debuggerRiversDecoration
Features

A complete world-generation toolkit

Everything is modular and built to be extended. Implement your own world type, generator, mesher, loading step, or use the reference heightmap world as-is.

Layer System

Dependency-ordered layers

Decompose generation into small, composable generators. Each layer declares its inputs and padding; the engine resolves the order and caches results.

Performance

Threaded generation & meshing

Worlds are built on dedicated generation and meshing worker pools, then committed to the main thread through a dispatcher. No frame hitches.

Biomes

Blended biomes

Classify the world along continent, temperature and humidity parameters, then blend neighbouring biomes for smooth, natural transitions.

Hydrology

Rivers that carve terrain

Trace river paths across the terrain from high ground to sea level, with the data ready to be carved into the heightmap.

Decoration

Rule-based decoration

Place trees, rocks and props with biome-aware rules and spread patterns, blended across chunk borders.

Streaming

Entity-driven streaming

Track any entity with an ITracker and let ChunkTrackerSystem load and unload chunks around it as it moves through the world.

Editor tooling

Generation debugger

An editor window that records the layer call tree, timings and cache hits so you can see exactly how each chunk was built.

Extensible

Built to be extended

Implement your own world type through generic TerrainManager, Generator, Mesher and LoadingStep contracts. The heightmap world is just one reference.

Architecture

How a chunk is built

Every chunk flows through the same pipeline: declared dependencies, cached layer generation on worker threads, then a safe commit on the main thread.

Generation is a dependency tree

Layers never generate more than they must. Each one declares its inputs and the padding it needs from neighbouring chunks; the engine resolves the order, checks the cache first, and only fills in what is missing.

GettingStarted.cs
// Initialise the static biome state once
Biome.Init();
BiomeSampler.Init();

// Describe how biomes are distributed
var biomeMap = new BiomeMap(seed: 0, biomeSize: 32, blendRadius: 48, BiomeSampler.DEFAULT);

// Create the terrain manager (the reference heightmap world)
var manager = new HeightMapTerrainManager(
    chunkScale: 1, chunkResolution: 64, chunkHeight: 64,
    samplingScale: 1f, biomeMap: biomeMap);

// Load chunks in a radius, generation and meshing are threaded
for (int x = -2; x <= 2; x++)
    for (int y = -2; y <= 2; y++)
        manager.LoadChunk(new Vector2Int(x, y));
The Generation Debugger window showing the layer call tree and per-layer timings

Generation Debugger

An editor window records the layer call tree, timings and cache hits per chunk, and can draw each region's data back onto the scene.

Window → World Engine → Generation Debugger

Life of a chunk

generation → meshing → main thread
  1. step 1LoadChunkmain thread
  2. step 2Generator.Generategeneration pool
  3. step 3Mesher.GenerateMeshmeshing pool
  4. step 4Physics.BakeMeshmeshing pool
  5. step 5LoadChunkRepresentationmain thread

Generation pool

16 workers run pure data generation: layers, biomes, rivers and decoration with no Unity object access.

Meshing pool

8 workers build meshes, run threaded preload steps and bake colliders off the main thread.

Main thread

A dispatcher commits results: GameObjects, transforms, meshes, materials and colliders, all safely.

Roadmap

Early, but moving fast

World Engine is in active early development. Features are added, improved and reshaped continuously. Here is where things stand.

Implemented

6
  • Chunk managementload / unload, threaded generation & meshing
  • Layer-based generationdependency ordering + caching
  • 2D biomes & blending
  • Heightmap worlds
  • Entity-driven chunk streaming
  • Generation debugger

In progress

3
  • Decoration placementheightmap only, main-thread spawn
  • River generationpaths generated, not yet carved
  • Terrain texturingmaterial system

Planned

6
  • 3D & voxel worlds
  • Planet generation
  • World editing toolssculpting, object placement
  • Caves, structures, cities
  • Multiplayer world sync
  • Artist & designer GUI
Join the project

Help build World Engine

World Engine is in private development, and I am looking for one or two people to work with me. It is a passion project I build in my free time, not a professional venture, even if the goal is to make it a polished, professional-grade tool. If procedural worlds excite you, I would like to hear from you.

Looking for profiles such as

Engine / gameplay programmer

C# and Unity. Help build generators, layers and the chunk pipeline: decoration, rivers, and the move toward 3D and voxel worlds.

  • C#
  • Unity
  • Procedural generation

Performance & tooling

Threading, memory and meshing costs, plus editor tooling such as the generation debugger and the future artist-facing GUI.

  • Multithreading
  • Profiling
  • Unity Editor

Technical artist / designer

Terrain texturing and materials, biome and decoration rules. Shape how worlds look and how designers will drive them.

  • Shaders
  • Materials
  • World design

How it works

  1. 01

    Say hello

    Send a short email: who you are, what you have built, and what interests you.

  2. 02

    Quick chat

    A call to talk about the project, your availability and what you would like to own.

  3. 03

    Get access

    You get access to the private repository and docs, then start on a scoped first task.

What to expect

  • Looking for one or two people, not a big team
  • The project is private for now and not open source
  • A free-time project: no deadlines, no company behind it
  • Real ownership of a system, not just tickets

Want to build worlds ?

You do not need to match a role exactly. Tell me what you have built and what you would like to work on, a portfolio or a few links is plenty.

[email protected]