Reefbound — Procedural Voxel Ocean Survival • Final-Year Project

Engine: Unity  •  Language: C#  •  Role: Solo Developer  •  Focus: Procedural generation, voxel systems, water, survival mechanics, mobs

Overview

Reefbound is my final-year Unity project: a voxel ocean survival prototype built around procedural island generation, underwater exploration, custom chunk meshing, block-based water, crafting, smelting, tools, inventory systems, mobs, and environmental feedback.

The aim of the project was to explore how a voxel game could feel distinct from Minecraft by shifting the focus away from land-based mining and towards a deeper ocean survival experience. Instead of using Unity terrain or prebuilt voxel tools, I built the world pipeline myself, including chunk data, terrain generation, mesh construction, water simulation, foliage, item handling, mob behaviour, and player-facing survival systems.

Gameplay overview showing the island, ocean setting, and transition into underwater exploration.

Links

Technical Snapshot

  • Chunk size: 16×128×16 voxel chunks, split into 16-block-high sub-chunks.
  • World generation: Seeded procedural terrain using layered Perlin noise, ridge noise, erosion-style noise, biome weights, underwater caves, ravines, air pockets, reefs, ores, and foliage passes.
  • Rendering: Custom mesh generation for solid blocks, water, foliage, block items, and voxelised held items.
  • Water: Block-based water with source, falling, and flowing states, controlled through a queued frontier update system.
  • Gameplay systems: Inventory, hotbar, chests, crafting, tool crafting, smelting, drops, gear slots, mobs, damage feedback, and underwater UI feedback.

What I Built

Procedural Voxel World Generation

Reefbound uses a custom Worlds manager to create, stream, update, and store chunks around the player. Each chunk owns its own block, water, foliage, cave, biome, and landmark data. Generation is split into stages so the world can prepare terrain, caves, reefs, ores, and foliage in a controlled order.

Procedurally generated Reefbound island overview
Procedural island generation, coastline shaping, and voxel terrain layout.
Underwater terrain in Reefbound
Underwater terrain, seabed variation, and ocean exploration space.
  • Built a 16×128×16 chunk structure with separate block, water, foliage, and cave-mask arrays.
  • Generated terrain using island shaping, domain-style warping, fractal noise, ridge noise, erosion noise, and biome weighting.
  • Added underwater cave systems, ravines, air pockets, reef landmarks, and biome-specific ore placement.
  • Created terrain layers including grass, dirt, stone, sand, limestone, dark sand, gravel, basalt, slate, coral blocks, and ore blocks.
  • Built an island debug exporter to help inspect generated terrain and tune world shape visually.

Chunk Meshing, Colliders, and Streaming

The world is rendered through custom mesh builders rather than individual block GameObjects. Chunks generate visible faces only where needed, then separate their solid, water, and foliage meshes so each system can be rebuilt independently.

  • Created face-culling mesh generation for solid blocks, water surfaces, and foliage.
  • Split chunk meshes into sub-chunks to reduce rebuild cost when only part of a chunk changes.
  • Added collider refresh logic so chunks can keep collision active near the player and demote distant chunks to data-only states.
  • Used dirty flags to rebuild only the systems that changed, such as solid mesh, water mesh, foliage mesh, or collider data.
  • Handled atlas UVs for a 5×10 block atlas using 32×32 pixel block textures.

Block Mining and Building

The terrain is editable during play. Blocks can be mined with visual crack feedback, converted into item drops, collected, and later placed back into the voxel world through the hotbar.

Mining blocks with crack feedback, drops, and chunk updates.
Placing blocks back into the world using the hotbar and inventory loop.

Block-Based Water System

Water was one of the main technical focuses of the project. Reefbound uses block-based water states instead of a shader-only ocean, allowing water to exist inside the voxel world and respond to terrain edits.

  • Implemented source, falling, and flowing water states.
  • Used a queued frontier system so water updates are processed over time instead of recalculating the whole world instantly.
  • Limited water processing using a tick budget to keep updates controlled.
  • Generated water mesh heights from water levels, including sloped water surfaces for flowing cells.
  • Marked touched chunks as visually dirty so water mesh updates are rebuilt only where needed.

Underwater Atmosphere and Lighting

Because Reefbound is focused on underwater exploration, I built visual systems that change the feel of the world when the player dives below sea level.

Underwater fog, depth tinting, lighting changes, and ocean readability.
Glowing coral underwater in Reefbound
Coral glow lighting used to make underwater areas feel more alive.
  • Created an underwater fog controller with depth-based tint, vignette, fog colour, and fog density blending.
  • Added underwater particle support for visual depth and atmosphere.
  • Built a day-night lighting controller with sunrise, day, sunset, night, and underwater lighting states.
  • Added coral glow lighting to make underwater areas feel more alive and readable.
  • Linked darkness checks into mob spawning so certain enemies can spawn only at night or in darker areas.

Inventory, Hotbar, Crafting, and Smelting

Reefbound includes a survival-style item loop built around gathering materials, storing items, crafting stations, smelting, and creating tools.

Inventory UI in Reefbound
Inventory, item storage, hotbar selection, and survival item flow.
Smeltery system in Reefbound
Smeltery interface for fuel, raw materials, molten output, and progression.

Crafting and smelting footage showing the survival progression loop in use.

  • Built an inventory system with stack merging, cursor splitting, right-click transfer, hotbar slots, gear slots, and chest storage.
  • Created hotbar and inventory UI systems for selecting items, displaying icons, and interacting with storage containers.
  • Implemented crafting databases for normal recipes and tool-specific recipes.
  • Built a smeltery system that accepts fuel, smelts raw tin, raw manganese, and sand, stores molten output, and pours materials from taps.
  • Added placed crafting items and block item meshes so crafted blocks can exist in the voxel world and inventory loop.

Dynamic Tool Crafting

Rather than treating every tool as a completely separate fixed recipe, I built a dynamic tool system that combines heads, rods, and bindings into different tool types.

  • Supported dynamic tool shapes including knives, pickaxes, drills, spears, and harpoons.
  • Validated tool parts based on tool kind, material, rod type, and binding type.
  • Calculated durability from the parts used to create the tool.
  • Generated held item meshes from item textures so tools and items appear voxelised in the player’s hand.
  • Added different held-item poses and actions for mining, lunging, drills, spears, and harpoons.

Mobs and Ocean Life

Reefbound includes both peaceful and hostile mobs, with different movement systems for land and water creatures. Each mob has its own behaviour script rather than sharing one generic brain.

Ocean life and creature behaviours in the generated world.
Hostile mob combat using hitboxes, health, movement, and drop systems.
  • Created a mob spawn manager with distance checks, chunk checks, depth bands, group spawning, despawning, night spawning, and darkness requirements.
  • Built shared mob systems for health, drops, physics, animation parameters, attack hitboxes, and world queries.
  • Implemented land movement for crabs and pirate skeletons, including terrain stepping and simple target following.
  • Implemented swimming movement for reef fish, stingrays, turtles, plesiosaurs, megalodons, piraugunhas, and giant squids.
  • Added creature-specific behaviours such as clam shell closing, crab chasing, stingray poison jabs, reef fish fleeing, turtle taming/riding, and predator chase/attack states.

Survival Feedback and Player Interaction

I added several feedback systems to make the prototype feel more playable and less like a static terrain demo.

  • Built block breaking feedback using a crack overlay renderer.
  • Added player HUD feedback for health, oxygen, pressure, gear, selected items, and status effects.
  • Implemented player damage feedback so hits are communicated visually.
  • Created death drop caching so dropped items can persist through death flow logic.
  • Added item pickups, drop tables, pickup spawning, and debug tools for testing item flow quickly.

Technical Challenges

Keeping voxel updates manageable

A major challenge was avoiding full chunk rebuilds every time something changed. To solve this, I separated chunk systems into solid, water, foliage, and collider rebuild paths, then used dirty flags and sub-chunk masks so only the required data is refreshed.

Making water work inside a voxel world

Early water experiments focused more on visuals, but Reefbound needed water that could exist as part of the block world. I moved towards block-based water states and a queued update system so water could flow after terrain edits without causing huge frame spikes.

Building a survival loop around generated terrain

Once the world generation was working, the next challenge was giving the player reasons to interact with it. The inventory, crafting, smelting, tools, mob drops, gear, chests, and item placement systems were built to turn the generated world into something closer to a playable survival prototype.

What I Learned

  • How to design a voxel world as data first, then generate meshes, colliders, water, foliage, and gameplay systems from that data.
  • How to split large gameplay systems into smaller rebuildable parts to reduce unnecessary work.
  • How to use procedural generation for more than terrain height, including caves, ores, reefs, foliage, landmarks, and mob spawn rules.
  • How to connect technical systems to player-facing survival mechanics such as tools, crafting, smelting, gear, and combat.
  • How important debugging tools and visual feedback are when working with procedural worlds.

Current Status

Reefbound currently has a functioning procedural voxel world, chunk streaming, meshing, water flow, underwater atmosphere, inventory, hotbar, crafting, smelting, tool creation, mobs, drops, lighting, and player feedback systems. The project is still a prototype, but it now represents a broad technical vertical slice of the ocean survival game idea.

Next Steps

  • Polish the player progression loop so tools, oxygen gear, mobs, and resources guide the player more clearly.
  • Improve optimisation with further profiling, mesh rebuild tuning, and possible greedy meshing experiments.
  • Expand underwater cave structure and biome identity.
  • Improve mob balancing, animations, and combat readability.
  • Replace placeholder presentation areas with stronger gameplay footage and clearer screenshots.