PORTFOLIO / UNITY
The Decline of Warriors.
A prototype with an endless deterministic voxel world: seeded chunk generation and object placement, local runtime NavMesh, and FishNet multiplayer.

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.
NavMesh and multiplayer
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.
Screenshots
Looking for a gameplay developer?
I would be glad to discuss your team’s work and talk through these projects.




