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

Acc. XXIV · Frons octoclada — ECS-driven roguelike brawler, cultivated 2026

Conquer Brawl — eight-class roguelike browser brawler

Systems R&D engineer · 2026 · Independent studio

An eight-class roguelike browser brawler with P2P multiplayer, built on a Miniplex ECS simulation backbone — a direct architectural contrast to Emberkeep's split store/runtime approach.

Frons octoclada — ECS-driven roguelike brawler, cultivated 2026

Field notes

The context

After Emberkeep's split store/runtime approach to simulation state, the studio wanted to test the alternative architecture — an entity-component-system as the simulation backbone — against a different genre: an eight-class roguelike brawler with P2P multiplayer.

Cultivation

What I built

  • Built eight class kits on top of a Miniplex ECS driving simulation state.
  • Implemented P2P multiplayer alongside Rapier physics for combat and movement.
  • Built the audio and post-processing layers for combat feedback.
  • Set up an automated Blender + GLTF asset-optimisation pipeline, verified with Vitest.

Root system

How it works

Simulation state runs through a Miniplex ECS rather than the split store/runtime pattern used in Emberkeep, with Rapier physics and React/Three.js rendering layered on top. Assets move through an automated Blender-to-GLTF optimisation pipeline. Built primarily with Claude Code, with Fable 5 brought in for part of the work.

Harvest

Outcomes

  • Eight class kits and P2P multiplayer working on an ECS-driven simulation backbone.
  • Validated ECS as a viable alternative to the split store/runtime pattern for a different genre of real-time browser game.
  • The working repository is not currently available for inspection, so this entry is intentionally scoped tighter than the others in the catalogue.

Herbarium

The work itself

Top-down 3D gameplay capture, 1600 by 1000, of a dimly lit brick arena courtyard rendered in warm brown and terracotta. Low segmented walls with red-brick top faces run diagonally down the left side and across the upper middle of the frame, each casting a long hard shadow across the grey-brown paving. Slightly left of centre stands the player's character, a small red-robed figure holding a staff, encircled by a bright gold selection ring and topped by a short full green health bar; a white damage number "84" floats just above their head. Painted flat on the ground around and below the player is a translucent blue-grey disc outlined in bright red with a solid red dot at its centre — an ability ground indicator. To the upper right, a wide sweeping gold arc curves around two enemy figures: one in blue wearing a conical straw hat with a mostly-empty red health bar above it, and one in teal beside a hanging red banner on a pole. A small teal "+7" healing number floats to the right of that pair. A third enemy in dark clothing lies lower-left in the courtyard, and a round wicker barrel sits at lower right. The HUD overlays the scene: at top left, small grey text reads "WASD move · hold ability = aim · release = cast · Tab scoreboard"; a dark rounded banner at top centre reads "ROUND 1", the timer "2:35", and "JadeFang 2/10" in gold; a small outlined "LEAVE" button sits at top right, below which a kill feed stacks two dark pills reading "JadeFang ✕ Miguel" and "JadeFang ✕ StormZhao". Along the bottom edge, a red circular orb reads 870, a row of ten square orange-red ability icons showing flame and claw glyphs is keyed LMB, RMB, Q, E, R, F and 1 through 4, and a green circular orb reads 140. Faint text at bottom left reads "Enter to chat".
Fig. 1A live combat frame from the browser build: floating damage and healing numbers, per-entity health bars and a ground ability indicator all read out of the ECS simulation each frame while the ten-slot class kit sits under the player's hands.
Top-down 3D gameplay capture, 1600 by 1000, of the same dim brick courtyard, dominated by a very large translucent red circle outlined in bright crimson painted flat across the lower-right two thirds of the paving — an area-of-effect telegraph. The player's red-robed character, ringed in gold with a full green health bar above them, stands just outside the circle at centre-left. Inside the telegraph stand two enemy figures in conical straw hats, one in orange-tan with an almost fully depleted red health bar and one in blue slightly behind it; a third enemy in dark red stands at the circle's right edge with a partly drained red bar. A round wicker barrel sits inside the lower-right of the circle. Segmented walls with red-brick tops run diagonally along the left edge and across the upper middle, throwing long shadows, and a red banner on a pole hangs above the scene. HUD overlays: top-left control hint "WASD move · hold ability = aim · release = cast · Tab scoreboard"; a dark banner at top centre reading "ROUND 1", timer "2:23", and "JadeFang 3/10"; an outlined "LEAVE" button at top right; a kill feed below it stacking three dark pills, "JadeFang ✕ Miguel", "JadeFang ✕ StormZhao" and "JadeFang ✕ AshChen". Along the bottom, a red orb reads 705, the ten-slot ability bar of orange-red flame and claw icons is keyed LMB, RMB, Q, E, R, F and 1 through 4, and a green orb reads 140. Small text at bottom left reads "Enter to chat".
Fig. 2A wide ground telegraph resolved against three clustered bots — the shared decal-and-hitbox path that lets area abilities be read by the player before they land and evaluated by the physics layer when they do.
Top-down 3D gameplay capture, 1600 by 1000, showing the hold-to-aim targeting system mid-cast in a dark brick courtyard. The player's red-robed character with a gold selection ring and a full green health bar stands right of centre; projecting up and to the right from them is a large translucent dark-red wedge outlined in crimson — the ability's directional ground telegraph — which spills over a terracotta-topped wall running diagonally down the right side of the frame. A second, larger gold circular reticle is drawn on the paving to the lower left, its ring encircling an enemy figure in blue wearing a conical straw hat with a mostly-empty red health bar above them. Scattered props include a wicker barrel at upper left and another at lower left, a red pole lying on the ground below the enemy, and a red banner on a pole at the top of the frame beneath a glowing yellow lantern orb, which is the brightest light in an otherwise near-black upper region. The floor is grey-brown brick and every wall throws a long directional shadow. HUD overlays: top-left control hint "WASD move · hold ability = aim · release = cast · Tab scoreboard"; a dark banner at top centre reading "ROUND 1", timer "2:52" and "Miguel 0/10"; an outlined "LEAVE" button at top right. Along the bottom edge a red orb reads 730, the ten-slot ability bar of orange-red icons is keyed LMB, RMB, Q, E, R, F and 1 through 4, and a green orb reads 140. Faint text at bottom left reads "Enter to chat".
Fig. 3The hold-to-aim, release-to-cast input model captured mid-aim — a directional cone telegraph and a separate enemy-target ring drawn simultaneously so aiming state is fully legible before the ability commits.
Top-down 3D gameplay capture, 1600 by 1000, of a broad sand-coloured brick plaza at the start of a round, lit warmer and brighter than the other frames. The player's red-robed character stands at centre inside a gold selection ring with a full green health bar above them. Props sit around the plaza: a wooden market stall with a yellow thatched canopy at upper left, small wooden crates at upper left and mid-left, a round-topped wooden post to the right of the player, a tall thin wall slab running vertically down the right third of the frame casting a long shadow, and a red-tiled roof at lower left. Across the lower third of the screen sits the roguelike draft interface: a small gold letter-spaced heading reads "CHOOSE AN UPGRADE" above three dark rounded cards side by side. Card one is labelled "[1]", titled "Chi Flow", rarity "COMMON" in muted green, effect "-10% ability cooldowns". Card two is "[2] Keen Edge", "COMMON", "+10% ability damage". Card three is "[3] Iron Body", "COMMON", "+150 maximum health". HUD overlays: top-left control hint "WASD move · hold ability = aim · release = cast · Tab scoreboard"; a dark banner at top centre reading "ROUND 1", timer "3:00" and "Miguel 0/10"; an outlined "LEAVE" button at top right. Along the bottom, a red orb reads 950, the ten-slot ability bar of orange-red flame and claw icons is keyed LMB, RMB, Q, E, R, F and 1 through 4, and a green orb reads 140. Small text at bottom left reads "Enter to chat".
Fig. 4The round-intro roguelike draft offers three rarity-tagged modifiers — cooldown, damage and maximum health — that mutate the running simulation's stat components rather than swapping the class kit underneath them.
Pressed leaf — what it taught
Comparing an ECS-driven simulation against a split store/runtime approach across two different projects surfaces trade-offs — in state locality, testability, and per-frame cost — that neither architecture reveals on its own.