Then and now
The same kind of shot — the default match, about thirty seconds in — from builds of old commits run again for this page. Scroll sideways: oldest on the left.
The eras
Each step of the roadmap lives in PLAN.md, the project's source of truth; these sections group them by what they set out to do.
The first playable prototype
In one evening the project went from an empty scaffold to a complete core loop: select, move, fight, harvest, build, produce, and beat a scripted AI. The simulation was kept free of rendering from the first commit so that networking could come later without a rewrite.
Terrain, roster and generated maps
The next day turned the prototype into a game with depth: elevation that matters, a bigger roster behind a classic sidebar, crystal fields, seeded procedural maps with a setup screen, and cities that could appear in real matches.
The playtest, and six fix phases
A full playtest found that combat did not actually happen on its own, the default opening earned nothing and the board was hard to read. Six phases fixed what it found, then added the frame around a match: pause, menus, a minimap and settings.
The look, and nine worlds
With the game working, attention turned to how it looks: proper lighting, shadows and post-processing, then the Alien Worlds pack, nine selectable biomes, fog of war, a restyled UI and alien cities. Almost every phase here began as a short request from the user.
Showcase, imports and playtest rounds
A showcase that parades every model, a documented import pipeline, and three rounds of the user playing the build and sending back annotated screenshots: much bigger maps, a calmer AI and a stack of rendering bugs.
A faction roster, and making it fast
A three-faction art direction and the first rigged Directorate models arrived alongside four performance rounds that measured before changing anything: draw calls, triangles, scene walks and level of detail. A worker move was deferred on its numbers, and a WebGPU renderer was added behind a flag.
The classic RTS feel
Asked why it did not feel like a classic RTS, the project answered with a playtest-driven feel pass, a sculpted and painted ground, organically grown cities and the full Directorate roster, now built procedurally in code rather than generated.
Round two, with parallel agents
Work moved to parallel agents on their own branches, each verified in a real headless-GPU match: eight look streams in phase 58, then a free-rein push for the best RTS it could be, then up to four players with alliances.
Faction specials
The Directorate gets its own layer on top of the shared roster: a Field Commander hero, a Recovery Crawler, walls and a Transit Relay, while the Swarm's visual style is set for the next phase.
Going live, and the long roadmap
The game gets a public address, the models move to Blender, a second playtest list is split over parallel agents, and a second developer joins with an eighteen-phase roadmap for the Vesper Reach.
Four factions and a living world
Two days with two agents working side by side on one machine: the Swarm and Umbra got whole rosters and their specials, the non-playable Harrow arrived with a world of their own, each faction got a homeworld, world events started falling out of the sky, and the late-game frame got a performance plan with its first steps landed.
A living game, overnight
One night, many branches in parallel: the game got its name, a map that fights back, a tutorial and a thirteen-mission campaign, new ways to play, a world with water, night and minor factions, and bases that run on power and can pack up and move.
A new look, and playtest round three
The new interface landed in the morning; the rest of the day followed a long playtest: bigger experimentals, a proper anti-air defence, power you can read and protect, units that stop chasing, AIs that finish their matches, and a fix for the late-game slowdown. The game also ran as a desktop app for the first time.
Why it slowed down, and why phones crashed
Two reports from the playtest needed digging rather than guessing: a match that became unbearably slow after ten minutes, and iPhones that reloaded the page just before a match began. Both were measured first, then fixed, and the numbers are below. Along the way came a question worth answering properly: would a desktop app, a store app or a native rewrite make the game faster?
Endgame, a wider world, and 2v2 online
The rest of playtest round three landed overnight: matches that end when the bases are gone, a much tougher HQ, units that see further, cover and suppression for infantry, minor factions that fight back, side objectives all over the map, the invaders' own music, and online play for four.
What's next
What the roadmap holds next, from the latest playtest and the launch plan. Nothing here is promised or dated.
The first playable prototype
In one evening the project went from an empty scaffold to a complete core loop: select, move, fight, harvest, build, produce, and beat a scripted AI. The simulation was kept free of rendering from the first commit so that networking could come later without a rewrite.
- 0 17 Sept
Repo scaffold
doneAn npm-workspaces monorepo with a Vite + Three.js client and an empty simulation package; an orthographic RTS camera you can pan, zoom and rotate.
The founding requirement: a browser RTS whose simulation never touches rendering, so networking can be added later without a rewrite.
67a51b9The first frame: an empty grid, four marker boxes and an orthographic camera that pans, zooms and rotates. From a chat · 17 Sept - 1 17 Sept
One controllable unit
doneClick to select a unit, click to move it; it finds its way around obstacles with A* on a grid.
Roadmap: prove the command pipeline (input produces commands, the sim applies them) on the smallest possible slice.
50ffcabOne unit (the cone), a wall to path around, and the enemy marker at the top: click-to-move on an A* grid. From a chat · 17 Sept - 2 17 Sept
Selection and combat
doneDrag-box multi-select, simple formation moves, and basic combat: attack-move, health bars and death.
Roadmap: the core loop needs fighting before it needs anything else.
bfa01abTwo selected units ordered across the wall; the dashed lines are their planned paths. From a chat · 17 Sept - 3 17 Sept
Harvesting
doneResource nodes and a harvester that gathers, returns and earns credits on its own.
Roadmap: the economy half of the core loop.
5ae9a41A harvester heads out to a resource node (the yellow dot) on its gather-and-return loop. From a chat · 17 Sept - 4 17 Sept
Base building
donePlace buildings, watch them construct, and queue units at a factory.
Roadmap: base building and production.
3a45d2d - 5 17 Sept
A scripted AI
doneAn AI opponent that runs its own economy, builds a factory and sends attack waves.
Roadmap: single-player versus a simple AI was the proof-of-concept opponent.
50595b0 - 6 17 Sept
Real models
donePlaceholder boxes become stock low-poly models loaded through an asset registry, tinted per team, with a distinct model set per faction.
Roadmap: swap primitives for free CC0 art without gameplay code ever naming a file.
1399e0a - 7 17 Sept
Touch input
doneEvery interaction gets a touch equivalent: multi-touch camera, tap to select, cancel placement.
Requirement from the start: mouse first, but touch must be additive, not a rewrite.
b5b364d - 8 17 Sept
Polish and win/lose
doneA HUD, a win/lose condition, sound stubs and environment polish: the proof of concept is complete.
Roadmap: close out the first playable milestone.
98bcfcbTime machine, phase 8 (98bcfcb): the finished proof of concept 30 s into the default match: stock models, a wall, two HQs and their units. Time machine · 17 Sept Same build zoomed out: the whole 40x40 test map under a starfield. Time machine · 17 Sept
Terrain, roster and generated maps
The next day turned the prototype into a game with depth: elevation that matters, a bigger roster behind a classic sidebar, crystal fields, seeded procedural maps with a setup screen, and cities that could appear in real matches.
- 9 18 Sept
Elevation that matters
doneHeight tiers that change pathfinding and give the higher unit a damage bonus; later, ramps became the only way up.
Confirmed with the user up front: elevation is gameplay, not decoration.
d5e2266 - 10 18 Sept
A bigger roster
doneMore unit and building types from the full Space Kit, plus world decoration props.
Roadmap: the first "next level" expansion after the prototype.
bb68235 - 11 18 Sept
The build sidebar
doneA right-hand build panel covering the whole roster, with icons rendered from each model.
Reordered ahead of resource fields: a roster nobody can reach through the UI is not done.
5f97cc2 - 12 18 Sept
Resource fields
doneThe single crystal becomes a field of many crystals that deplete as they are harvested.
Roadmap: make harvesting look and play like a classic RTS.
8f7449f - 13 18 Sept
Generated maps and setup
doneSeeded, symmetric procedural maps and a pre-game setup screen (size, resources, credits, seed), built on the planet-select menu.
Roadmap: replayability beyond one hand-made map.
892a821The menu side-track that phase 13 grew from: a first planet select with Testgrid and two locked worlds (17 Sep). From a chat · 17 Sept - 14 18 Sept
World decoration
doneRocks, craters, containers and barriers scattered over both the static and generated maps.
Roadmap: the board looked empty.
2df09a7 - 15 18 Sept
Terrain visual pass
doneThe debug grid goes, the ground gets a painted texture and real rock cliffs around every height change.
“Are you able to make the ground for the map more visually appealing…”
43c31f5 - 16 18 Sept
Showcase diorama
doneA separate, non-playable showcase map: two bases, rock formations, a monorail and a mixed city built from stock tiles.
A direct ask from the user: a purely visual map using every available asset.
7a35ddf - 17 18 Sept
Cities in real matches
doneGenerated maps can include mirrored cities whose buildings block movement and whose roads are open ground.
“Can the game engine now use this to generate semi-random cities for the maps?”
28808dfTime machine, phase 17 (e22bc16): the classic sidebar with generated icons, resource fields and scattered props on a textured ground. Time machine · 18 Sept Same build zoomed out: the whole map. Time machine · 18 Sept
The playtest, and six fix phases
A full playtest found that combat did not actually happen on its own, the default opening earned nothing and the board was hard to read. Six phases fixed what it found, then added the frame around a match: pause, menus, a minimap and settings.
- 18 19 Sept
Combat that happens
doneUnits acquire targets by themselves, attack-move and stances, muzzle flashes and explosions, real audio and under-attack alerts.
The first full playtest found two armies could stand inside each other forever: nothing ever set an attack target.
63d5955 - 19 19 Sept
The first 60 seconds
doneA default opening that actually earns money, right-click orders, and on-screen control hints.
Playtest finding: the default start had zero income and no way to learn the controls.
cc77868 - 20 19 Sept
A readable board
doneTeam-colour decals, crystals that no longer look like scenery, shadows and legible elevation.
Playtest finding: you could not tell whose base was whose, or what was a resource.
2d4fc95 - 21 19 Sept
Camera and commands
doneEdge scrolling, zoom toward the cursor, pan bounds, selection modifiers and rally points.
Playtest finding: the camera and ordering felt unfinished.
63b6a32 - 22 19 Sept
Balance and AI
doneThe roster is re-costed, resources scale with map size, buildings have a build radius, and the AI defends and diversifies.
Playtest finding: economy and AI were flat.
484d674 - 23 19 Sept
The frame around the match
donePause, a pause menu and end screen, elimination victory, a responsive layout, a minimap, settings and key remapping.
Playtest finding: the match had no frame around it.
5994b1eTime machine, phase 23 (47ba84d): after the playtest fixes: team decals, crystals that read as resources, control hints and a minimap. Time machine · 19 Sept Same build zoomed out: stepped elevation and the map edge. Time machine · 19 Sept
The look, and nine worlds
With the game working, attention turned to how it looks: proper lighting, shadows and post-processing, then the Alien Worlds pack, nine selectable biomes, fog of war, a restyled UI and alien cities. Almost every phase here began as a short request from the user.
- 24 19 Sept
Make it look good
doneImage-based lighting, a low sun with visible shadows, ambient occlusion, bloom and anti-aliasing, and units that face where they move.
“the graphics of the game are very basic… how do we go to the next level.”
19714fb - 25 19 Sept
Alien world dressing
doneTrees, spires and ground cover from the Low Poly Space Alien Worlds pack, and a mountain horizon outside the map.
“can we use these assets for world building — the bases and buildings can stay as they are”
d4ff20c - 26 20 Sept
Biomes
doneThe first level becomes the night Glacier world: indigo ground, glowing flora and a real planet behind the menu.
“make the game's first level look more like this style… really try your best”
868f546 - 27 20 Sept
Mountain edges
doneEvery plateau edge grows rocky outcrops, so raised ground reads as a ridge instead of a stamped step.
“Please also make the edges of elevated parts of the map look like mountains using the assets”
22428eb - 28 20 Sept
Nine worlds
doneAll nine biomes become selectable planets, and the menu restyles itself to the world you pick.
“this is the art style I want to work towards, different biomes etc.”
a3e3716 - 29 20 Sept
Ground, edges and derelicts
doneEach biome's ground slabs become floor patches and ledge caps, scree gathers under drops, and alien structures stand as landmarks.
“can we look at potential floor tiling in the biome's asset packs too? I think that might take it to the next level.”
1cf67bcTime machine, phase 29 (558b6bd): the night Glacier world from the Alien Worlds pack, with glowing flora, spires and rock outcrops. Time machine · 20 Sept Same build zoomed out: the whole map dressed in the biome. Time machine · 20 Sept - 30 20 Sept
Fog of war
doneYou only see what your units see; unexplored ground is black, explored ground dims, and enemy buildings are remembered.
The last item from the original playtest that changed the game itself: the enemy base was visible from frame one.
d293453 - 31 20 Sept
The render, sharpened
doneReal MSAA, a subtle rim light, per-biome colour grading and moving cloud shadows.
“are there easy ways to make it a bit more nice looking? Eg post processing, edge smoothing…”
45f68a9 - 32 20 Sept
A contour on what you command
doneA subtle outline around your units and buildings only, so they separate from the scenery.
“Outlines for player interactive stuff might be good. Make it subtle.”
7c086be - 33 20 Sept
Tilt-shift and lit windows
doneA miniature-style tilt-shift band and lit windows on buildings; a softer-shadow experiment was tried and rejected.
“As for the rest of the style improvements: let's do it.”
c2642a4 - 34 20 Sept
The in-game UI
doneOne biome-driven skin across the HUD, and a sidebar that shows cost, what a thing does, and why you cannot build it yet.
“Would be good if it follows the style of the rest of the game.”
83e193c - 35 20 Sept
Alien cities
doneGenerated cities are built from the alien pack's structures, tinted to each world, instead of stock city blocks.
“Lets use the buildings from this asset pack for the city generation.”
be3d057 - 36 20 Sept
Tone mapping, and the glacier floor
doneA tone-mapping bug that made every biome's exposure setting inert is fixed, and the glacier ground gets contrast.
“The colors of the ground match everything else too closely… Maybe make it slightly lighter?”
8b98ef3
Showcase, imports and playtest rounds
A showcase that parades every model, a documented import pipeline, and three rounds of the user playing the build and sending back annotated screenshots: much bigger maps, a calmer AI and a stack of rendering bugs.
- 37 20 Sept
The showcase, expanded
doneThe showcase becomes a set of biome-aware maps with a labelled parade of every model in the game and a citadel map around a user-supplied hero asset.
Neither presentation map showed the roster the game actually uses.
b75d1b3 - 38 20 Sept
The citadel factory, and an import pipeline
doneThe citadel becomes both factions' Vehicle Factory, and model importing becomes a documented tool with a cameo generator.
The user asked for the citadel as the Vehicle Factory, and for the next linked model to take an hour rather than a day.
159b465 - 39 20 Sept
Big maps and a calmer AI
doneLarge maps 2.9x bigger, a Relaxed AI that is actually relaxed, units that defend nearby allies, and crystal fields that regrow.
“the maps are way too small. A large map should actually be large. Like really large.”
edbccce - 40 20 Sept
Six follow-up fixes
doneNo more units spawning stranded, a home-based turret for Relaxed, longer turret range, faint range rings, and shorter decorative rocks.
Direct feedback after playing the phase 39 build.
7e5a53bEmber world during the phase 39/40 feedback round: a harvester returns to its refinery past the lava-red flora. From a chat · 20 Sept Screenshot the user sent from their own playtest of the phase 39 build. From a work session · 20 Sept - 41 21 Sept
Bigger again, and a better opening
doneMaps grow again, models are rescaled against each other, and the camera opens tilted over your own base.
“maps should be way bigger. A small map should be the current large.”
b8eab0eTime machine, phase 41 (b462800): fog of war, the tilted camera opening on your own base, a subtle outline on what you command. Time machine · 21 Sept Same build zoomed out: everything you have not explored is black, and maps are much larger now. Time machine · 21 Sept - 42 21 Sept
Combat rules and render bugs
doneVehicles fire on the move, outposts work anywhere, fields spawn near every base, and phantom shadows from off-screen objects are fixed.
A large round of direct feedback with three annotated screenshots.
8276e3bOne of the user's annotated screenshots behind phase 42: dark patches with no visible source, later traced to the shadow camera. From a work session · 21 Sept Another annotated report from the same round: more stray dark shapes next to units and buildings. From a work session · 21 Sept Playing the phase 41 build on a teal world just before the phase 42 fixes. From a chat · 21 Sept
A faction roster, and making it fast
A three-faction art direction and the first rigged Directorate models arrived alongside four performance rounds that measured before changing anything: draw calls, triangles, scene walks and level of detail. A worker move was deferred on its numbers, and a WebGPU renderer was added behind a flag.
- 43 21 Sept
Performance, round three
doneAbout 6,000 draw calls down to 1,114, with no shader recompiles during play and an identical frame; plus a render-scale setting.
Measured: two-thirds of all JavaScript time was the renderer recompiling shaders.
fb2e5c7 - 44 21 Sept
Three factions: art direction
doneA roster plan for Directorate, Swarm and Umbra; Meshy-generated models first, then a switch to units and buildings built entirely in code.
“Let's make a style for each roster/faction. So each faction gets their own buildings and units.”
654f30cThe Directorate trooper as Meshy first generated it (image to 3D), for the three-faction roster. From a chat · 21 Sept The Swarm trooper from the same Meshy pass. From a chat · 21 Sept Concept review: Directorate, Swarm and Umbra troopers side by side in the model viewer. From a chat · 21 Sept The turn away from generated models: the Directorate heavy tank built entirely in code, firing in the procedural viewer. From a chat · 23 Sept Review sheet of the first procedural Directorate buildings: HQ, Barracks, Vehicle Factory, Airbase. From the repo · 23 Sept - 45 21 Sept
The first rigged unit
doneA Meshy-generated, animated Directorate trooper replaces the stock soldier, after two skeleton-cloning bugs were fixed.
The first model from the new art direction to reach a match.
ad301d2 - 46 21 Sept
The Directorate roster
doneDirectorate vehicles, factory and harvester plus a Heavy Infantry mech; the Barracks and Vehicle Factory split production.
Continuing the phase 44 roster; found a rotation bug that had silently done nothing for units since phase 38.
651ad19The Directorate roster in a match: Barracks and Vehicle Factory reskins, Heavy Infantry in the sidebar. From a chat · 21 Sept - 47 21 Sept
Performance, round four
done5.49M triangles down to 745K: the new trooper went through the import pipeline, and unseen skeletons stopped animating.
Measured: 86% of the frame's triangles were 43 soldiers.
2cf6200Time machine, after phase 47 (ce7b93b): the Directorate roster on Glacier after the triangle-budget performance round. Time machine · 21 Sept Same build zoomed out. Time machine · 21 Sept - 48 22 Sept
The static world, unwalked
doneAbout 8.5 ms a frame recovered by culling the static world ourselves instead of walking 12,000 objects every frame.
Measured: 12,072 of the scene's 12,243 objects never change.
a6f61e6 - 49 22 Sept
Level of detail
doneThe model pipeline emits simpler versions and the game swaps them by on-screen size: 62% fewer model triangles at default zoom.
Measured: a 40-pixel soldier was drawn with 7,109 triangles.
8ed4658 - 50 22 Sept
Simulation in a worker
deferredDesigned, measured and deferred: moving the sim to a Web Worker would cost more per frame than the sim itself.
Measured before building: a 1.13 ms round trip against a sim that costs under 1 ms.
9494fdc - 51 22 Sept
The detached dark shadow
doneA reported dark mass beside buildings turned out to be ground plants under newly placed buildings; they are now cleared.
The user reported it with an annotated screenshot.
dbc1791The user's report of a "detached dark shadow" next to buildings, which turned out to be clustered ground plants. From a work session · 22 Sept - 52 22 Sept
A WebGPU backend
doneAn opt-in WebGPU renderer behind a flag, with a parity mode for fair comparisons.
three.js already shipped WebGPU sharing the same scene classes, so it could be tried without forking the scene graph.
b415525 - 53 22 Sept
One renderer, TSL everywhere
in progressThe five custom shader patches move to TSL so WebGPU can become the only renderer.
The user reported that WebGPU was "rendering just fine, fps seems stable".
4e86f8d
The classic RTS feel
Asked why it did not feel like a classic RTS, the project answered with a playtest-driven feel pass, a sculpted and painted ground, organically grown cities and the full Directorate roster, now built procedurally in code rather than generated.
- 54 23 Sept
The feel pass
doneReal idle and run animation, a weapon and sound per role, muster points, randomised starts, a bigger economy, the Directorate HQ and an announcer.
“It looks okay but I have no feeling like I do using [a classic RTS].”
8c58f90The planet select after phase 54, with the Shoal as the default world. From a chat · 23 Sept Time machine, phase 54 (b1c5be0): the Directorate HQ in the game on the Shoal, the new default world. Time machine · 23 Sept Same build zoomed out: the start area under fog. Time machine · 23 Sept - 55 23 Sept
The ground becomes a place
in progressOne sculpted heightfield with natural plateaus and cliffs, a painted classic ground, and crystal fields that grow organically.
“See how this world feels? The elevations feel natural, structures feel natural…”
67cd9c4Phase 55.2: noise-shaped plateaus with smooth cliff lines instead of stepped tiles. From a chat · 23 Sept The same terrain pass on Ember: winding ravines through the lava flora. From a chat · 23 Sept - 56 23 Sept
Cities, rebuilt
in progressCities grow organically over flat ground with irregular blocks, parks and car parks, drawn from a new procedural civilian building set.
“I don't like rectangle/square blocks of cities only. It should be more dynamic.”
ae9f920The rebuilt city generator in its sci-fi theme: an organic street plan, towers, parks and car parks. From the repo · 23 Sept A generated city in a real match. From the repo · 23 Sept A city whose outline follows the flat ground the map offers. From the repo · 23 Sept - 57 23 Sept
The whole Directorate roster
doneSix new units (artillery, APC, railgun skimmer, Colossus, gunship, bomber) and eight buildings, including aircraft, anti-air, repair, walls and an orbital superweapon.
“Each of the units that's not yet in the roster should be buildable/trainable.”
38b2abdTime machine, phase 57 (38b2abd): the procedural HQ on the painted classic ground, with the full Directorate sidebar. Time machine · 23 Sept Same build zoomed out. Time machine · 23 Sept A base using the whole roster: annex, airbase, repair bay, rail spire, AA and aircraft. From a work session · 23 Sept The Orbital Lance superweapon firing. From a work session · 23 Sept Sidebar cameos rendered from the procedural models. From a work session · 23 Sept The Colossus, a reverse-jointed walker built in code, firing in the viewer. From the repo · 23 Sept
Round two, with parallel agents
Work moved to parallel agents on their own branches, each verified in a real headless-GPU match: eight look streams in phase 58, then a free-rein push for the best RTS it could be, then up to four players with alliances.
- 58 23 Sept
The look, round two
doneEight parallel streams: fewer living cities, procedural world props, per-biome haze, bigger models, the menu as front door, aiming turrets, mountain edges and RTS camera controls.
Direct, with eight reference screenshots.
88f4fdbTime machine, end of phase 58 (314770b): procedural world props, haze and the mountain edge. Time machine · 23 Sept Same build zoomed out: the map edge rising into procedural mountains. Time machine · 23 Sept Phase 58.4 on Ember, before and after: per-biome haze and glow. From a work session · 23 Sept Phase 58.7: fewer but bigger cities, with some life in them. From a work session · 23 Sept Phase 58.8: a Vehicle Factory assembling piece by piece. From a work session · 23 Sept Phase 58.6: procedural alien world props replacing the asset-pack scatter. From a work session · 23 Sept - 59 24 Sept
The best RTS we can make
doneLayered combat effects, a living battlefield, a classic command interface, a perspective camera, veterancy, garrisons, new infantry, a smarter AI and several performance rounds.
“I'm giving you free reign… make it the best RTS you can imagine.”
e13d459Phase 59.1: layered explosions, tracers and burning wrecks in a battle on Ember. From a work session · 24 Sept Phase 59.2: working buildings, with moving parts and parked vehicles. From a work session · 23 Sept Phase 59.8: a garrisoned city building collapsing under fire. From a work session · 24 Sept Phase 59.3: the classic command interface, with selection brackets and sidebar tabs. From a work session · 23 Sept Phase 59.13: skirmish setup with a live map preview. From a work session · 24 Sept - 60 24 Sept
More players, and alliances
doneUp to four players (2v2, free-for-all) with an alliance table, shared vision, per-player colours and AIs that defend their allies.
“Would it be possible (also for performance) to have more than 2 players? And teaming?”
bbee8abSkirmish setup for 2v2: player slots, teams and colours. From a work session · 24 Sept The minimap of a four-player free-for-all on a Large map. From a work session · 24 Sept Six minutes into a 2v2 with AI allies. From a work session · 24 Sept A match with an ally (phase 60): allies share vision and are drawn in their own colour. From a work session · 24 Sept
Faction specials
The Directorate gets its own layer on top of the shared roster: a Field Commander hero, a Recovery Crawler, walls and a Transit Relay, while the Swarm's visual style is set for the next phase.
- 61 24 Sept
Faction specials: the Directorate
in progressEach faction gets its own passive, upgrades, buildings, units and powers; first the Field Commander hero, the Recovery Crawler, walls and the Transit Relay.
“What kind of upgrades/buildings/units/powers would you implement?… Write to a plan.”
7acd161The Field Commander, a procedural armoured mech, leading an attack. From a work session · 25 Sept The Field Commander in the viewer. From a work session · 25 Sept The Recovery Crawler towing a wreck home for salvage. From a work session · 25 Sept The Transit Relay: a squad arriving in a flash. From a work session · 25 Sept - 62 25 Sept
Swarm style baseline
in progressThe Swarm's look is set with two procedural creatures (Larvum skirmisher and Bio-launcher), shown in the showcase only for now.
Phase 61's plan puts the Swarm, its core roster and its regrowth specials next.
6636239Time machine, current p59 head (ab88ddd): the same 30-second opening today, with the classic sidebar and the perspective camera. Time machine · 25 Sept Same build zoomed out. Time machine · 25 Sept Swarm style baseline: the Larvum skirmisher, built in code. From a work session · 25 Sept Swarm style baseline: the Bio-launcher. From a work session · 25 Sept
Going live, and the long roadmap
The game gets a public address, the models move to Blender, a second playtest list is split over parallel agents, and a second developer joins with an eighteen-phase roadmap for the Vesper Reach.
- CI 25 Sept
Hosted on Cloudflare Pages
doneEvery push is type-checked, sim-checked, built and held to an asset budget (74 MB, 683 files; the raw Meshy exports stay out). Pushes to p59 deploy a preview at a preview address; master will be production.
“Say i want this hosted somewhere else.. what would you propose?”
be6abdeThe live preview: the menu at a preview address, loaded with no console errors. headless Chrome · 26 Sept - 62 26 Sept
The Swarm, remade in Blender
doneThe Larvum is no longer cute: a lean, spiky four-legged hunter with a tusked jaw and green eyes, 7.7k triangles, four animations, team-coloured plates. The Bio-launcher is on its last bake.
“they need to be more fear-inducing. Especially the slug looks kinda cute.”
The final Larvum (round 6) in the game renderer; the blue plates take the team colour. From a work session · 26 Sept - 61 26 Sept
The Field Commander, from a base model
doneAfter a first all-Blender armour body (below), the user found a free hand-modelled, rigged cyborg soldier; it is being cut from 337k to about 12k triangles, repainted in team colours and wired in. Only the reduced game model goes into the repo.
“It still looks a bit messy for me. Would it help if you could download a base model and work from there?”
Round 1 of the from-scratch Blender Commander, before the switch to a base model. From a work session · 25 Sept - PT 26 Sept
Playtest round, 2026-09-26
doneEight fixes on three branches: garrisoned buildings glow in the occupant's colour, harvesters prefer fields over 100 credits, huge artillery and Rail Spire range, building repair for credits, a hover fix, railways that follow slopes, and homeworld resupply when every harvester is gone.
user's playtest list; homeworld resupply is the one exception to "no free income for whoever is behind".
1584af5 - 64+ 26 Sept
The Vesper Reach roadmap, 64–81
plannedEleven research documents became eighteen phases: foundations, world events, a living map, economy, tech structures, map types, Boot Camp, the Harrow invaders, modes and replays, spectacle, water and air, a thirteen-mission campaign, minor factions, Conquest, and last, abilities and bases that move. The work is split into a world-and-rules track for the second developer and a factions-and-presentation track.
“It should become a full game in the end. You are the creative mind behind this.”
89da3d2The roadmap on highlights.html, with the proposed owner on every phase. docs/gameplay/highlights.html · 26 Sept Who builds what: the two tracks and the ground rules. docs/gameplay/highlights.html · 26 Sept
Four factions and a living world
Two days with two agents working side by side on one machine: the Swarm and Umbra got whole rosters and their specials, the non-playable Harrow arrived with a world of their own, each faction got a homeworld, world events started falling out of the sky, and the late-game frame got a performance plan with its first steps landed.
- 61.2 26 Sept
The faction framework
doneEvery slot picks a faction; Command Points earned in combat pay for powers; Powers and Upgrades tabs in the sidebar; share codes carry the setup.
The plan for faction specials needed one frame all three factions plug into.
- 62 26 Sept
The Swarm roster
doneSeventeen creatures sculpted in Blender, from the Larvum to the Hive Titan, plus fifteen buildings grown in code: hive, pools, spines and resin walls.
“The more elite units should be more fear inducing like giants. Or elite soldiers. Not all 4/6 legged same body creatures.”
The Swarm roster lined up in a match, small to giant. From a work session · 27 Sept - 63 27 Sept
The Umbra roster and the Veil
doneThirty-one sleek black-and-magenta models, and the Veil: Umbra units that stand still cloak, and only detectors see them.
“Please do not make it too trashy and rusted. It is still a high tech game.”
The Umbra roster: dark glass, magenta light. From a work session · 27 Sept - 61.5b 27 Sept
A unique defence per faction, and painted icons
doneThe Aegis Pylon dome, the burrowing Sinkmaw and the Shade Obelisk; then 96 painted classic sidebar icons, one per slot per faction, from model screenshots.
“Something else I'd like in the roster is a unique defensive building per faction." And: "The icons should pop…”
The Aegis Pylon's dome taking hits. From a work session · 27 Sept The Directorate's painted icon sheet. From a work session · 27 Sept - M 27 Sept
The mech, rebuilt
doneThe Directorate mech rebuilt in Blender on the infantry's own body: bulkier armour, an arm cannon and a shoulder cannon, a stomping walk.
“Probably base it on the infantry, just make it a bit more bulky. The current model is not it.”
The new mech beside Troopers and a heavy tank. From a work session · 27 Sept - 71 27 Sept
The Harrow
doneThe non-playable invaders: faceted ivory and quartz constructs with a gold glow, from the Gleaner to the Tiller titan, now real units in the sim with seams and Anchors you can tame. The wave director followed that evening (see the next page).
“In game it could do with some kind of golden glow or accents so it stands out.”
A Harrow Thresher in a fight on Ember. From a work session · 27 Sept The Tiller, the Harrow titan. From a work session · 27 Sept - 82 27 Sept
Faction homeworlds
doneFour new worlds: Meridian (the Directorate's Earth), Hivemere (Swarm), Penumbra (Umbra) and Fallow (Harrow), each with its own civilian buildings, props and dormant structures. Fallow is guarded by dormant Harrow wards and a Bastion that sends waves.
“I'd like to also have a few faction specific worlds… Also civilian/noncombat buildings.”
Meridian: a modern Earth city in a match. From a work session · 27 Sept Hivemere: a titan's carcass on the creep fen. From a work session · 27 Sept Fallow: a dormant Harrow colossus. From a work session · 27 Sept - 65 27 Sept
World events
doneA director that rolls events on a budget, with Calm, Normal and Chaotic presets. The Cant Storm grounds aircraft and kills the minimap; the Meteor Shower leaves new crystal; a derelict crashes midway between the bases for anyone to claim.
“Would you also be able to start on a first world event? E.g. [a storm] or something.”
A Cant Storm over Glacier. From a work session · 27 Sept Meteors falling on their warning rings. From a work session · 27 Sept A claimed derelict: strip it or reactivate it. From a work session · 27 Sept - 61.3–63 27 Sept
Faction specials, and a new AI
doneUpgrades, passives and four powers per faction (the Directorate's Rapid Deploy drops a squad from a dropship), the Sensor Array, the Swarm's Clutch Well and larvae, the Umbra Infiltrator and Hologram Projector, and a classic skirmish AI with a new Easy level.
The phase 61 plan, built mostly by the second agent while this one made the art.
Rapid Deploy: a dropship lowers its squad on tethers. From a work session · 27 Sept Swarm larvae from the Clutch Well in a fight. From a work session · 27 Sept - PT2 27 Sept
Playtest round two
doneDefences build 2.5× further out, a match-end rule: lose your bases, lose the match, enemy pings, superweapon timers, diagonal walls, units that hold at weapon range, bomber sorties, faster crystal regrowth and a Drill per faction.
The user's playtest feedback, split between the two agents.
Diagonal walls with their own 45° pieces. From a work session · 27 Sept - 83 27 Sept
Performance: the late-game frame
progressA replayable late-game bench, then no shader churn (83.1) and a shadow pass on a budget (83.2): cached static shadows and one simple shadow shape per unit, about 5–7 ms off a busy frame.
A late-game four-player match ran at 47–58 ms a frame; the target is 25.
The bench's own-base stop, the frame it measures. From a work session · 27 Sept
A living game, overnight
One night, many branches in parallel: the game got its name, a map that fights back, a tutorial and a thirteen-mission campaign, new ways to play, a world with water, night and minor factions, and bases that run on power and can pack up and move.
- Name 27 Sept
A name: Cantorite: Harrowfall
doneThe project gets its own name, after the crystal everyone fights over and the invaders who come to reap it. Names borrowed from older games were replaced with our own (the Swarm's Clutch Well and Sinkmaw, the Cant Storm), and a Credits screen lists what the game is built with and under which licence.
A game that might one day be sold needs a name and an identity of its own.
- 66–71 27 Sept
A map that fights back
doneWatchtowers to hold, salvage crates, guardian lairs of native creatures, rocks and spires you can bring down, and crystal fields that grow when nobody mines them. Tech structures to capture: a Cant Siphon for income, a Relay Mast for vision, a Field Clinic and a Motor Pool to heal and repair. And the Harrow's wave director: mining too much draws them, seams tear open in the crystal, and their waves come mirrored so no side is favoured.
The Vesper Reach roadmap, phases 66 to 71.
- 69, 72 27 Sept
Map types, modes and replays
doneCrater Arena, Crystal Rush, King's Hill and Twin Rivers, each checked for fairness with a badge on the preview. Six quick modes (King of the Crystal, Regicide, Superweapon Race, Treaty, Frenzy, Sudden Death), a long list of mutators, and replays you can scrub and watch from any side.
Variety between matches, without a map editor yet.
- 70, 75 28 Sept
Boot Camp and the Directorate campaign
doneFive short lessons for new players, then Hold the Light: thirteen Directorate missions across the nine worlds on a star map, with a fork in the road, a choice that changes who fights beside you, veterans who carry over, and upgrades between missions. After the first playtest, every mission marks the units and places its orders are about, on the ground and with a ping on the map.
The first fifteen minutes decide whether someone keeps playing.
The campaign star map: thirteen missions over the nine worlds. From a work session · 28 Sept Mission nine's choice: open a channel to the Swarm, or carry out the strike. From a work session · 28 Sept - 73, 79, 80 28 Sept
Every unit a decision
doneEach Directorate role gets an ability on one key: frag grenades, smoke, jump jets, star shells, a field hub on the APC. Units take more damage from behind and can retreat. Around it: a slow-motion final blow, music that follows the fight, named veterans, and a profile with commander levels, 28 medals and cosmetics you earn.
Depth per unit, and a reason to come back.
- 74, 76, 77 28 Sept
Water, night and the neighbours
doneShallows, deep water, tidal flats, ice and lava, crossed by bridges and by hover units. Day turns to night, the Saltmarsh tide rises, Ember's vents erupt, and the Apex sleeps in its den until something wakes it. Six minor factions of the Vesper Reach live in settlements with their own moods; win them over or make them enemies.
The world, round two.
- 81 28 Sept
Bases that run on power, and move
doneEvery base now runs on lumen: generators power it, and too little power slows production and drops the defences, so generators become worth raiding. Buildings can be sold for part of their price, and the HQ can fold up, drive somewhere else and unfold.
Bases that are more than a wall of turrets.
A new look, and playtest round three
The new interface landed in the morning; the rest of the day followed a long playtest: bigger experimentals, a proper anti-air defence, power you can read and protect, units that stop chasing, AIs that finish their matches, and a fix for the late-game slowdown. The game also ran as a desktop app for the first time.
- Bezel 28 Sept
The new look
doneA new interface called Bezel: a quiet graphite frame, your faction's accent colour, and one typeface throughout. A new main menu around a turning cantorite crystal, a loading screen, a skirmish briefing, a pause sheet and a debrief. The build menu moved into a tray at the bottom, and phones and tablets get their own layouts, with a compact action bar and a More button.
Designed as mockups first, then approved by the user before a line of it was built.
The new main menu. From a work session · 28 Sept A Swarm base under the new interface: the build tray, the command card and the minimap. From a work session · 28 Sept The same interface on a phone held sideways. From a work session · 28 Sept - 78a 28 Sept
The Harrow, round two
doneThe rest of the Harrow roster, and the Tiller: a walking titan with three phases, Tines that lock onto a target, a sweep you can see coming, and a boss bar. Fallen Chaff rise again, and elite Harrow carry marks that show what makes them dangerous. A sandbox page lets anyone try the fights.
The invaders needed a proper boss.
The Tiller, with its boss bar at the top of the screen. From a work session · 28 Sept - 78b 28 Sept
One experimental per faction
doneThe Colossus, the Hive Titan and the Effigy: one giant each, announced to every player when it is being built. After the playtest they are about a third bigger and a quarter stronger, while a fully promoted one is no longer close to unbeatable.
“The strongest unit - the giants - … all the way upgraded to the highest rank … It's almost unbeatable.”
The Directorate's Colossus shooting down incoming missiles. From a work session · 28 Sept - 77.2 28 Sept
Night, and the light tower
doneAt night only your own base lights the ground around it, and each faction can build a light tower that shows the dark around it. After the playtest its light reaches twice as far.
Night should hide things, and you should be able to fight that.
A Directorate base at night, lit by its own buildings. From a work session · 28 Sept - World 28 Sept
Map sizes and world fixes
doneSmall maps are now 128 cells across and Medium 256 (they were 88 and 176), so Medium sits between Small and Large. Bridges were rebuilt so units cross them properly, camp militias defend themselves, Harrow pylons under a dome can be brought down, units stop firing at what they cannot hurt, the Refinery's build area grows with the map, and the Drill pays a little more.
“A medium map should be a tad bigger. The difference between large and medium is huge.”
A bridge over a lava river on Ember. From a work session · 28 Sept - Power 28 Sept
Power you can read, and protect
doneA base short of power now shows which buildings stopped and what to build to fix it. Each faction can also protect its generators with an upgrade: the Directorate's Generator Aegis puts a shield on each one, the Swarm's Deep Roots let its glands burrow out of sight, and the Umbra's Phantom Reliquaries raise a hologram twin beside each generator.
“can we have a way to protect power a bit more?”
Directorate generators under their Aegis shields. From a work session · 28 Sept - Air 28 Sept
Air defence
doneA bomber run now hurts a base instead of deleting its HQ, and each faction gets a heavy anti-air defence after research: the Skyguard Battery, the Hailspore Colony and the Nightfall Choir, about five times as deadly to bombers as the old turret. Detectors also notice a cloaked unit only closer in than they can shoot it.
“1 or 2 bombers can destroy an HQ.”
The Directorate's Skyguard Battery. From a work session · 28 Sept - Units 28 Sept
Auto-repair, and units that come back
doneBuildings can repair themselves five seconds after a fight, for 10 % more than a manual repair; switch it on for the whole base or per building. And units no longer chase a fast raider across the map: past a generous leash they give up and walk back to where they stood.
“Units will infinitely follow attacking units from their starting point.”
- AI 28 Sept
AIs that finish their matches
doneAI matches that ended in a draw two times out of three now do so a quarter to two fifths of the time. The Umbra AI, which never won, now wins about a third of the matches that are decided; the Aggressive AI beats the Standard one; and every AI answers an enemy experimental.
A skirmish should end.
- Mobile HQ 28 Sept
The Mobile HQ, and more painted icons
doneThree new models, one per faction, for an HQ on the move: it folds up, drives and unfolds on the spot. Painted icons for the Drills, the light towers, the Black Market, the Morphling and the Devourer.
The HQ that moves needed a body of its own.
The Directorate's Mobile HQ. From a work session · 28 Sept - Speed 28 Sept
The late-game slowdown, fixed
doneThe cause: every wreck stayed in the scene as its full, unmerged model (about 500 parts for a harvester) until it sank, so a few fights doubled the work of every frame. Wrecks off camera are now skipped like live units, and they merge back into one piece once they settle: twelve wrecks cost 3.9 ms a frame instead of 15.1 off-screen, and 9.2 instead of 20.5 in view. A slow machine now plays a little slower instead of freezing. Earlier that day, cloak detection got faster too, taking a late-game simulation step from 20.9 to 12.6 ms.
“It becomes unbearably slow after a while.”
- Desktop 28 Sept
A desktop app, as a preview
doneCantorite now also builds as a Windows app. On a laptop with two graphics chips it picks the fast one by itself, which made frames 3.5 to 4 times faster than in the browser on the built-in chip, and it saves to files. A preview for now; not released yet.
The first step towards a store release.
Why it slowed down, and why phones crashed
Two reports from the playtest needed digging rather than guessing: a match that became unbearably slow after ten minutes, and iPhones that reloaded the page just before a match began. Both were measured first, then fixed, and the numbers are below. Along the way came a question worth answering properly: would a desktop app, a store app or a native rewrite make the game faster?
- Measure 28 Sept
Measuring the slowdown first
doneThe match from the report was replayed at real speed for sixteen game minutes, in the browser and in the desktop app, with every part of a frame timed. The simulation turned out to be cheap: under 2.5 ms a step all match long, with nothing in it growing. Nothing leaked either. The problem was the work of preparing each frame for drawing: the main thread ran at 100 % while the graphics card sat nearly idle at 1 %. That is why lowering the quality from High to Medium hardly helped: pixels were never the bottleneck. From minute 6 frames took 33 ms (30 fps), and in the big fight at minute 15 they took 50 ms (20 fps).
“It becomes unbearably slow after a while.”
- Wrecks 28 Sept
The culprit: wrecks
doneWhat grew was the number of things in the scene, and it jumped after every fight. A destroyed vehicle left its whole model behind, broken back into its separate parts so it could fall apart (about 500 for a harvester, 491 for a heavy tank), for around 50 seconds. And unlike living units, wrecks were never skipped when they were off screen. Twelve wrecks took a frame from 11 to 20 ms. Now a wreck merges back into one piece three seconds after it falls, and wrecks off camera are skipped: twelve of them cost 3.9 ms instead of 15.1 off screen, and 9.2 instead of 20.5 in view. In the desktop app over the full sixteen minutes, minutes 6 to 14 went from about 30 fps to a steady 60, and the big fight at minute 15 went from 20 to 30 fps.
Found by counting what was in the scene every thirty seconds.
- Bake 29 Sept
Fewer draws: 3 932 down to 454
doneEvery separate thing the game hands to the graphics card costs time on the main thread, so the game "bakes" models: parts that never move relative to each other are merged, and identical models are drawn in one batch. A new switch turns all of it off, to show what it is worth. A late-game base costs 3 932 draws and 78 ms a frame without it, and 454 draws and 31 ms with it. On a phone-sized screen it is 5 839 draws against 350. After the wrecks, the largest remaining cost was the scenery: rocks and plants were drawn once per part in every patch of the map. They are now merged per part across everything in view, which took a late base from 638 to 433 draws with an identical picture. Health bars now take two draws in total instead of one each, and the fog-of-war check went from about 2 ms a frame to under 0.1.
Every change was checked against a pixel-by-pixel comparison, so nothing looks different.
- Pacing 28 Sept
Slower, never frozen
doneOn a machine that cannot keep up, the game used to try to catch up by running more and more simulation steps each frame, which made the next frame even later. Now it runs at most four steps a frame and lets the game slow down a little instead, with a small "SIM BEHIND" tag in the corner while that happens. Phones and other low-memory devices draw at 30 fps, which cut the main thread's load from 77 % to 46 % without slowing the game. On Medium, unit shadows update every second frame (4.7 ms down to 2.1 to 3.0), and on Medium and Low the resolution steps down a little only when the graphics chip is what holds the frame back.
A slow device should play slower, not stop.
- iPhone 28 Sept
Why iPhones crashed while loading
doneOn an iPhone, a web page that uses too much memory is simply closed by the system, and Safari reloads it. The loading screen built and uploaded every model before the match, which peaked at 1 023 MB. A new low-memory mode switches on by itself on iPhones, iPads, phones and devices with little memory: Medium quality, smaller textures on units, no copies kept of images once the graphics chip has them, fewer helper threads, and only the models each faction in the match actually needs. The peak is now 445 MB. Measuring it also turned up 1.2 GB of throwaway data created while working out the size of animated models; that is now computed without it, with identical results, on every device. Desktops look exactly as before.
“On iOS phones the game seems to crash before loading completes often.”
- Threads 28 Sept
A second thread, measured
doneA common suggestion for speed is to move the simulation to its own thread. Measured on the late game: the simulation and the AI together take 0.7 ms a step, and copying the whole game state across to another thread costs about 1 ms. On a desktop that would gain almost nothing. On a slow phone, where a step takes around 30 ms, it will matter, so it is planned for phones, sending a compact 3 KB summary each step instead of the whole state.
Measure before moving work around.
- Apps 28 Sept
Desktop app, store apps, or native?
doneThe research question: would wrapping the game in an app, or rewriting it natively, make it faster? Mostly no. App wrappers are packaging: they bring files, store listings and a proper window, but they run the same browser engine, and the desktop app measured exactly the same as the browser. The one real gain is on laptops with two graphics chips, where the desktop app always picks the fast one (3.5 to 4 times faster frames than the browser on the built-in chip). On iPhones every app that shows web content runs on the same engine as Safari, with the same memory limits, so no wrapper could have fixed the crash; only using less memory could. A native rewrite would take months for problems the fixes above already solve. The plan that came out of it: keep the desktop app for the PC release, bring Android first through a light wrapper that runs the live site in the phone's browser engine (the project for it is ready), and follow with iOS once the memory fix has passed on a real iPhone.
“Research our options to wrap this game in an app wrapper and to use more resources like a native app would.”
Endgame, a wider world, and 2v2 online
The rest of playtest round three landed overnight: matches that end when the bases are gone, a much tougher HQ, units that see further, cover and suppression for infantry, minor factions that fight back, side objectives all over the map, the invaders' own music, and online play for four.
- Endgame 28 Sept
Win by taking bases
doneA side is out once it has no base left: no HQ, no production or economy buildings, no Mobile HQ on the road. Turrets, walls and stray units no longer keep a beaten player alive; they self-destruct, so the map is clean when the match ends. A side down to its last base building has it revealed on everyone's map, so there is never a hunt for one hidden refinery. AI test matches that used to run to a draw now all finish, in about 16 minutes on small maps.
“I destroyed everything. Nothing was left as far as I could see and still didn't win.”
An HQ with its free guard beside it. From a work session · 28 Sept - HQ 28 Sept
A tougher HQ, with a guard
doneThe HQ has three times the health (3 000), and a free guard turret that hits both ground and air and rebuilds itself 45 seconds after it falls. Losing the HQ no longer ends everything: production and research run at half speed until you rebuild it, for the price of a Mobile HQ.
“HQ should be way tougher. Like 3x … maybe a free turret/anti air next to it that rebuilds automatically.”
The HQ is gone: everything runs at half speed until it is rebuilt. From a work session · 28 Sept - Sight 28 Sept
Units see further
doneUnits now see half again as far: a soldier 19.5 instead of 13, a scout 25.5, a gunship 27. Enemies no longer vanish the moment they step out of range. Buildings, night and cloak detection are unchanged.
From the playtest: units saw less than the camera shows.
- Cover 29 Sept
Cover, suppression and thickets
doneThree new World options for infantry fights. Light cover: soldiers beside rocks, walls, rubble or a wreck take 30 % less from direct fire. Suppression: machine-gun fire pins infantry down, halving their speed and slowing their fire until it stops. Thickets: patches of brush on the forest and ice worlds hide soldiers from anyone not close by, until they fire; tanks flatten a path through, and bombs burn them away.
Infantry needed more to do than stand in the open.
Riflemen pinned down by machine-gun fire. From a work session · 29 Sept - Minors 29 Sept
Minor factions with teeth
doneCamps start with three defenders and grow to six over the match, refilling their losses. The armed camps now raid players they are hostile to with war bands sized by the match time and the map, one band at a time, and a warning on the ticker. Peaceful camps never raid. Still an idea for later: one or two walled strongholds per map to win over.
From the playtest: two or three soldiers per camp is nothing in this game.
A war band from a hostile camp at the gates. From a work session · 29 Sept - Map 28 Sept
Tech sites all over the map
doneCapturable tech structures and minor-faction camps used to pile up in the middle of the map. They are now spread in every direction, near and far from each base, and still mirrored so every player gets the same chances.
From the playtest: everything clustered in the centre.
The same four-player map before (left) and after: the white markers are tech sites. From a work session · 28 Sept - Music 28 Sept
Real music, and the Harrow's own
doneThe music is now composed and rendered in advance instead of synthesised live: one crystal motif in every faction's voice, with calm, tension and combat loops, a menu theme and victory and defeat cues. When the invaders arrive, their own theme of choir, crystal and drums takes over, and a quiet hum rises as your mining draws their attention. Fallen Chaff now visibly climb back to their feet.
The Harrow should sound as alien as they look.
- Online 29 Sept
Online play for four
doneOnline play now does two against two: the host picks 1v1 or 2v2, each player picks a team, and the match starts when everyone is ready. Tested with four browsers playing a full minute in perfect step. Built, but not live yet: it switches on once its server is.
The simulation was kept deterministic from day one for this.
A 2v2 lobby: four players, two teams. From a work session · 29 Sept - Devlog 28 Sept
This devlog, on its own site
doneThe devlog moved out of the game into a site of its own, so its screenshots no longer weigh on the game's download. Old links still lead here.
Keeping the game lean.
- Cities 30 Sept
Cities that belong to their world
doneOn the alien worlds the cities are now the ruins of an ancient civilisation, built in code from the world's own stone and growth: causeways that crumble toward the edge, walled precincts, fallen blocks. The earth-like worlds keep the European city, now marked by the war (burnt-out cars, craters, checkpoints, rubble), and every city's edge wears into the land around it. Fallow and Penumbra got calmer, more readable looks, and street lamps pool light at night.
The owner's ask: cities should fit the map they stand on.
Thornveil: the ruins of the ancient works. cityshot · 30 Sept - Cities 30 Sept
City plans: courts, old towns, ruins and roads out
doneCities are laid out to a plan that suits their world. The ancient ruins centre on a paved court with an obelisk and monuments facing it, and an avenue running toward the middle of the map. European towns have a tight old core round a market square with its church. Courtyards fill the insides of blocks, some lots are bombed-out ruins, and the roads out of town lead to a resource field or up a ramp.
The owner took four of five proposed generator changes and asked for them as the default, with no new menu option.
Glacier: the court of a formal city, with its obelisk and a monument beyond. cityshot · 30 Sept - Voice 30 Sept
Short voice lines end cleanly
doneShort lines like "Yes, sir" and "Mustering" were recorded inside a longer carrier sentence and cut out of it, and most kept the first sound of the next word. All 209 of them are re-cut in the pause before that word, from their original takes, and a new check listens to the last moment of every shipped line.
The owner heard "Yes, sir. Thhh".
- iPhone 30 Sept
No more reload after a graphics reset on iPhone
doneWhen iOS takes the graphics memory back (often while Safari is in the background), the game now restores the match in place in a few seconds instead of asking for a reload: textures are redrawn, lighting, shadows and the minimap rebuilt, and the match is paused and saved while the graphics are gone. Phones also use less memory while loading.
The owner, playing on an iPhone: "That needs to go asap."
What's next
What the roadmap holds next, from the latest playtest and the launch plan. Nothing here is promised or dated.
- Phones Later
Phones, round two
in progressFrom an iPhone playtest: no accidental page zoom, a building panel you can close, a compact view of a large selection, one button for all powers, autosave with a Continue button, and a filter that selects only fighting units.
In progress.
- Stores Later
Android first, then iOS
in progressAndroid in Google Play through the light wrapper, which is ready; the iOS app follows once the low-memory mode has passed on a real iPhone. A desktop release is prepared alongside.
User: release on the App Store and Google Play.
- Threads Later
The simulation on its own thread
plannedFor phones: the simulation and the AI move to a second thread and send a small summary each step, so drawing gets the main thread to itself. Drawing on its own thread may follow.
From the research above.
- Voices Later
Recorded voices
in progressEvery spoken line as recorded audio, then an announcer of its own for each faction.
The voices have been chosen.
- Cursors Later
Cursors and targeting
in progressCursors in the game's style, a marker on the ground while you aim a power or an ability, and a gold button for superweapons.
From the playtest.
- World Later
World events your way
plannedA grid in the World options to switch each world event on or off. On the table as an idea: one or two walled minor-faction strongholds per map to win over.
The rest of the world, round two.
- AI Later
Sharper AIs
plannedThe standard AI keeps its power up instead of running its base dim, and the aggressive AI plays as the harder opponent for every faction.
From test matches between the AIs.
- Art Later
A proper HQ guard
plannedA guard model of its own for each faction, a gun and a missile pod, instead of the basic turret it borrows now.
The guard hits air and ground and should look it.
- Harrow Later
The Harrow's endgame, and Conquest
plannedSurvival, Last Stand and Crisis modes around the invaders, then Conquest: a campaign across some two dozen territories against rival commanders.
The rest of the long roadmap.
- L2 Later
An AI commander over the API
plannedA Claude model plays against you: it sets strategy every 10-20 s from a fog-of-war report, and the scripted AI carries it out.
“would integrating an AI agent in the game itself be an option to let it play against me?”
The game now
Where it stands today: the showcase first published on 24 September, kept as it was.
Combat
Pooled particles and lights, so a 40-unit fight adds about a millisecond. Units earn veterancy, artillery has to deploy, and wrecks burn before they sink.
Bases
Build-then-place: a structure builds in the sidebar, then you place it. Placed buildings assemble piece by piece, and once finished they visibly work.
Cities you fight in
Cities grow over whatever flat ground the map offers, with irregular blocks, T-junctions and roads out into the countryside. Hover traffic runs the streets. Infantry can garrison a building, and buildings collapse into rubble you can walk over.
Nine worlds
The same generator on every world, with per-world ground, props, lighting and atmosphere. Hazy worlds get their tint in post-processing, and the map edge rises into procedural mountains.
World props and ancient landmarks
29 procedural props in earthy and alien sets, grouped into sites like container yards, checkpoints and pylon lines. Rare ancient megastructures stand on alien maps and go unexplained.
Interface
A sidebar with category tabs, and a perspective camera you can rotate and tilt.
Screenshots are from the game itself, captured headless in Chrome on an RTX 4090, from earlier chat sessions, or from builds of old commits run again for this page ("time machine"). Nothing is retouched. Reference images from other games are left out.