Skip to content
Carlo Miguel Dy
← Back to the specimen catalogue

Acc. XXI · Ignis silvestris — voxel action-game world, cultivated 2026

Emberkeep — cozy voxel action game with class combat and open-world PvE

Systems R&D engineer · 2026 · Independent studio

A browser-native voxel action game with eight-plus handcrafted zones, class-based combat, and a 60-level progression system — a systems R&D vehicle for real-time rendering, physics, and procedural-world engineering under a verification-gated agent harness.

Ignis silvestris — voxel action-game world, cultivated 2026

Field notes

The context

Forked from the Embervale prototype once its rendering, physics, and asset foundation proved workable, Emberkeep pushed that base into a full open-world PvE game — the studio's hardest real-time-systems problem: sustained frame budget across open terrain, dozens of simulated actors, and a live day/night and weather cycle, none of which tolerate routing high-frequency state through a reactive store.

Cultivation

What I built

  • Built eight-plus handcrafted zones (Hearth Grove, Twin City, Mist Peak, Ember Shore, Frostfir Reach, Lanternfen, Heatherdown Moors, Emberfall Canyons) over baked per-seed heightfields with authored landmarks.
  • Implemented four class kits (Hearthblade, Embermage, Grovewarden, Shrinekeeper), a 60-level progression with a piecewise XP curve and difficulty scaling, and world bosses with unique mechanics at landmarks.
  • Built the quest system end to end — map, tracker, objective wayfinding, and quest trails — plus a dungeon interior with independent progression.
  • Designed a second-generation puppet system for character creation, wardrobe, and appearance customisation, rendering procedural voxel fallbacks or optional Blender GLB puppets under a versioned contract.
  • Built enemy AI with steering pathfinding, aggro, pack pull, and flee behaviour, and an inventory/gear system where stats affect damage and movement.
  • Split game state deliberately — Zustand for UI-visible state (phase, HP, XP, toasts), a mutable runtime module for high-frequency per-frame state (mob positions, projectiles, VFX, facing) — to keep the render loop off the reactive-state path.

Root system

How it works

A single Vite + React app renders through @react-three/fiber with @react-three/rapier reserved for player/environment physics, while player and mob blocking runs through soft collision rather than full rigid bodies. The world combines baked per-seed voxel heightfields with authored landmarks over procedural placement; mobs steer with local pathfinding plus detour avoidance, and environmental VFX are instance-capped to hold the frame budget. A roughly twenty-minute day/night cycle and weather system run alongside the zone and quest layers. Correctness is enforced by scripted verification — zones, capitals, population, world, weather, day/night, water, character rigs, and performance — gated in CI alongside typecheck, lint, build, and bundle checks, rather than by eye.

Harvest

Outcomes

  • Eight-plus zones, four class kits, a 60-level progression system, and a full quest and dungeon layer shipped and playable at the live URL.
  • A verification suite covering world, weather, rigs, and performance runs in CI as a hard gate, not an afterthought.
  • Some zone capitals exist as content stubs pending further work, and a planned multiplayer simulation package has not been started.
  • No players or usage metrics — this is a technical prototype, not a released product.

Herbarium

The work itself

Twin City plaza overview: the player character Bram, an Embermage, standing near a fountain and waystone circle in a red-roofed town square, with named NPCs Elder Maren, Captain Li and Warden nearby, a minimap top-right, the region label 'Twin City', HP/XP bars, and the four-slot ability bar.
Fig. 1Twin City, one of eight-plus handcrafted zones over baked per-seed heightfields with authored landmarks and NPCs.
Grove Tyrant world-boss encounter at Sanctuary Ruins: a purple boss unit standing among stone pillar ruins, a boss unit-frame top-right reading 'LV 8 · BOSS Grove Tyrant' with HP at 391 of 477 from real combat damage, the player's own HP/XP bars, a minimap, and the region label 'Sanctuary Ruins'.
Fig. 2A world boss at Sanctuary Ruins mid-fight, tracked through the same boss unit-frame and HP system as every other landmark encounter.
River Warden boss fight at Ember Shore, seen from a closer orbit camera: the player engaging a purple River Warden boss alongside an Ember Imp, a Moss Slime and two Grove Beetles on a sandy shoreline with water tiles behind, a boss unit-frame top-right correctly reading 'LV 8 · BOSS RIVER WARDEN', and the region label 'Ember Shore'.
Fig. 3A pack fight at Ember Shore — one world boss plus four mobs pulled and engaged at once, framed close enough to read the action.
Character sheet and equipment paperdoll open over live Twin City gameplay in the background: a 3D character model of Bram, level 1 Embermage, centered, with equipment slot grids for Head, Shoulders, Back, Chest, Hands, Waist, Legs, Feet and Trinkets on both sides, Main Hand and Off Hand slots, and Wave, Sit and Dance emote buttons below.
Fig. 4The equipment paperdoll — gear slots that feed the stat system driving damage and movement, plus the puppet's emote set.
Mist Peak vista: the player character on a stone path overlooking a wide grassy highland with a lake to the left, encountering the Peak Sentinel boss alongside an Ember Imp and a Grove Beetle, all with visible nameplates and HP bars, and the region label 'Mist Peak'.
Fig. 5Mist Peak, a landmark encounter framed as a vista rather than a corridor fight — one of the eight-plus zones built on the shared terrain and mob-AI systems.
Pressed leaf — what it taught
Splitting UI-reactive state from per-frame simulation state early is what keeps an open-world voxel game's frame budget intact — retrofitting that split later is far more expensive than designing for it up front. Scripted verification over gameplay systems (zones, rigs, performance) catches regressions that visual inspection alone misses in a project this large.