← Games and prototypes

PORTFOLIO / UNITY

PrototypeMultiplayer prototype

The Decline of Warriors.

A prototype with an endless deterministic voxel world: seeded chunk generation and object placement, local runtime NavMesh, and FishNet multiplayer.

My roleUnity Developer
FocusWorld generation, geometry and navigation
StatusPrototype
Technologies
UnityC#FishNetAI NavigationUniTask
The Decline of Warriors illustration: a warrior overlooks desert ruins

Project cover. More screenshots and materials follow below.

An endless world built from reproducible chunks

The prototype streams chunks around the player and unloads distant ones. Each chunk is computed from a shared seed, world coordinates and generator settings, so an area can be recreated without storing a finished map. Several noise layers shape cliffs, passages, heights and biomes. Before smoothing, the generator samples cells beyond the chunk boundary; neighbouring chunks therefore use the same surrounding data regardless of load order.

Geometry without a cube for every cell

The mesh contains visible surfaces only. Greedy meshing merges adjacent cells with matching height, biome and surface type into larger quads, separately for ground, cliff tops and exposed sides. This reduces polygon count compared with generating individual voxel faces. Chunk render data is combined into regional meshes, while collider geometry is built separately. Queues and per-frame limits spread generation, mesh building and collider application across frames.

Deterministic prefab placement

For each chunk, the planner uses a hash of the seed, chunk coordinates and attempt index to pick entries by weight and spawn chance. It checks footprint, rotation, edge padding and occupied cells. A prefab can sit on existing flat ground or receive a planned flat area and access corridor; those height changes are applied before the mesh is built. Placements have stable IDs, allowing a removed object to stay removed when its chunk loads again.

FishNet provides networked player objects and controls. Once a chunk collider is ready, the navigation module gathers local geometry sources, groups nearby interest points into coverage windows, and updates affected NavMesh areas asynchronously. NavMesh is derived from the world locally rather than sent over the network. The current prototype uses local generator configuration; matching worlds across peers requires sharing the same seed, settings and generation rules version. The architecture specifies this handshake, but the parameter exchange is not yet implemented in the code shown here.

Looking for a gameplay developer?

I would be glad to discuss your team’s work and talk through these projects.

All games and prototypes