The Unfinished  ·  Dev Log
Day 3 · Tuesday, September 29, 2026

Creatures, a camera, a team structure and an interface

Five creatures and the Seed-Bot through a new character pipeline (Glimmer Grazer, Skyweaver, Vinebloom Stalker, Luminbloom and Moss), a first/third-person camera switch, the project organized for many agents at once, and an interface cut from Jeremy's own sprite sheets.

17entries38screenshots3agents
historymossterrain
00:51history

The Glimmer Grazer, the first polished creature

characterscreaturesshader
Day look in the showcase: pale plates, light through the leaf wings
Day look in the showcase: pale plates, light through the leaf wings
Night: the herd's courtship display, with the test panel open
Night: the herd's courtship display, with the test panel open

The creature rigged the evening before (a Tripo model with broken weights and an unrigged fifth leg) turned out to be the Glimmer Grazer, and Jeremy asked to polish it to its concept sheet: "the first polished game asset, so make it count". He chose about 1.4 m tall, keeping the fifth leg, and a look that follows the light where each grazer stands.

  • Look: a new creature shader with two states. By day, pale pearl and sage plates whose thin leaves let light through; at night, amber light organs pulse nose to tail and blue nodes glow at the joints.
  • Behaviour: herds graze together, stand tall and watch within about 8 m, and bolt as a herd after one alarm chirp within 3.5 m.
  • Test bench: GlimmergrazerShowcase with a panel for light, behaviour, herd size and an intruder.
  • Fixed on the way: the first version followed the player's area, so every grazer lit up while the Seed was underground.

All ten grazers in VerdantSpire now use it (commit bf57f86).

01:39history

The Skyweaver, and a pipeline skill for every character

characterscreaturesskillworkflow
A Skyweaver drifting past the floating islands in its showcase
A Skyweaver drifting past the floating islands in its showcase
At night the tendrils glow full cyan
At night the tendrils glow full cyan

Jeremy asked for the Grazer process to become a reusable skill, since more Tripo characters were coming. tripo-character-pipeline writes it down as phases (intake, rig audit and repair, IK, animation, look, Unity import, behaviour, showcase, placement), each ending with a render, a number or a Play test. It ships a Blender helper module and Unity scripts, and was tested by repairing a copy of the original broken rig in about 4 seconds.

The Skyweaver was its first test, and Jeremy expected it to show the skill was too Grazer-specific. It was:

  • The jellyfish came with no bones at all, so the skill gained a build-a-rig-from-scratch branch: a spine, a pulsing bell bone and five tendril chains.
  • Movement is waves, not legs: Hover, Drift, Swim and Communicate. CreatureGait no longer needs a NavMesh agent.
  • One shared PlantGame/Creature shader and CreatureLook replace per-species copies.

About 8 m long, glowing tendrils, curious: three drift over VerdantSpire and come down to look at the player. The Grazer showcase was re-checked after the shared changes (41a678f, 5fbaa6f).

02:33history

The Seed-Bot: the player gets a real body

charactersplayeranimation
The Seed-Bot in its test course, rooting, with the station panel
The Seed-Bot in its test course, rooting, with the station panel
Canopy Glide off the test tower, leaf wings open
Canopy Glide off the test tower, leaf wings open

Next, the main character, from four concept sheets. The Tripo model was an unrigged 1 m mesh, so it got a humanoid skeleton where each bark plate and leaf follows its own bone rigidly, and 19 in-place clips: locomotion, jump, fall, land, glide, swim, dodge, a three-hit combo, hurt, and one for each ability (Connect, Sense, Rooting, Threadroot swing, pull and yank).

  • Body-change parts are real meshes now: leaf wings for the glide made from the model's own leaves, a root coiled round the arm for Threadroot, glowing fibres down the legs for Root Sense.
  • Canopy Glide: hold Jump while falling. From the 14 m test tower it covered about 42 m. How it unlocks is still Jeremy's call.
  • Size: 1.6 m; the capsule kept its old width, because a narrower one failed a ledge-climb test by 3 cm.
  • Test course: SeedBotShowcase, one station per interaction, with a panel to grant abilities and preview every clip.

VerdantSpire's player uses the shared prefab, so it changed with no scene edit. All 18 PlayMode tests pass (3b86710, 749a1c0).

03:11history

Seed-Bot polish: plant-like motion, symbiotic strikes, living vines

charactersplayeranimationvfx
The new rooting roots, by day and by night
The new rooting roots, by day and by night
Rooting, Connect, a vine lash, the root eruption, Root Sense and the Threadroot swing
Rooting, Connect, a vine lash, the root eruption, Root Sense and the Threadroot swing

Jeremy's notes after playing: rooting should start later, the walk and run were too mechanical (it should move like a plant), the vines needed a better look, and the punches didn't feel symbiotic. He gave free rein to keep polishing.

  • Movement: weight shifts side to side and the motion travels up the body with a lag, like a stem in wind; arms swing like branches.
  • Vines: one vine renderer and shader for every vine: bark, a glowing spiral vein, travelling pulses, leaf buds. Connect now creeps from the hand along the ground to the node.
  • Rooting: starts after 3.5 s still (was 1.2 s); roots spread from both feet and sink into the soil.
  • Combat: strikes 1 and 2 are whip-like vine lashes; the finisher plunges both hands down and a fan of root spikes erupts.
  • Also: leaves that grow over the body with each bond, the head turning toward points of interest, seedlings in its footprints.

A bug in the skill's import helper (re-imports silently dropped materials) was fixed along the way. 18/18 tests (d28333c).

09:20history

Sunken Grove polish pass

worldlevelworkflow
Before: the Canopy Gate as a blockout
Before: the Canopy Gate as a blockout
After: roots, vines, the machine door and a waterfall from the wall
After: roots, vines, the machine door and a waterfall from the wall
The Flooded Engine's water wheel and cyan core
The Flooded Engine's water wheel and cyan core

Jeremy asked for the Grove to be polished toward its concept, run as a multi-agent workflow: 17 agents, never more than 5 at once and only one in the Unity Editor.

The art is an add-on layer under a single "Grove polish" root (Plant Game → Scenes → Apply Grove Polish), so it can be reapplied without touching layout, gameplay objects or colliders:

  • Canopy Gate: buttress roots, a bronze collar and a machine door on the hearttree.
  • Central Basin: waterfalls off the ruin walls, light shafts, varied lily pads, a paved causeway.
  • Flooded Engine: a paddled water wheel with a glowing cyan core.
  • Hidden Cavern: a rock-roofed grotto with glowing mushrooms and crystals.
  • Ruins: arcades of broken arches.

About 385 new renderers, no shadowed lights, 18/18 tests (ce7435c). The art review scored the first round 3-6 out of 10; the fix round was not re-scored. Honest read: richer, but still a polished blockout - primitive props, mushroom-disc canopies, flat lighting. Real hero assets and a lighting pass are the next steps.

10:05history

Organizing for many agents

projectworkflowscenes
New Game through the Bootstrap scene: the Seed in the Vault with HUD and objective
New Game through the Bootstrap scene: the Seed in the Vault with HUD and objective

With several sessions now working at once, Jeremy asked for the project to be organized so any agent can find things and work safely.

  • Guides: a project map (every folder, scene, system, generator and test), a working guide with an Editor lock for the one shared Editor, and a decisions record.
  • Cleanup: everything no longer useful was removed after a reference check - the first prototype scenes, raw Tripo imports, template leftovers (24 items, about 153,000 lines). The design bible moved to Docs/.
  • Design site: the living design document is now linked as the source of truth, with a digest of its status labels.
  • Scene standard: after research on current Unity 6 practice, every scene has the same top level (_Systems, _Lighting, _Environment, _Gameplay, _Zones). The research also found about 600 components silently dead because several classes shared one file. Each now has its own.
  • Bootstrap: the game now runs as a Bootstrap scene (session, Seed, cameras) plus the region loaded next to it, so new regions can be added as their own scenes. 18/18 tests (a3247b1).
10:41history

The Vinebloom Stalker, now able to climb walls

charactersenemiesai
Patrol by day and night, charge glow, climbing over a wall, hidden in ferns
Patrol by day and night, charge glow, climbing over a wall, hidden in ferns
Coming down a wall head-first after the Seed
Coming down a wall head-first after the Seed

The Stalker enemy replaces its primitive placeholder with the Tripo model from its concept sheet. Jeremy chose about 1.3 m, amber eyes (the model's bake had lime) and wall climbing on top of the existing AI.

  • Rig and clips: a body bone, four three-bone legs with IK, the bloom and crown; 16 clips covering walk, run, climb and every AI state (hidden, spot, crouch, leap, swipe, stunned, death).
  • Look: amber eyes and knee lights that brighten while hunting; the bloom flares pink as a leap or swipe winds up, the warning the AI already had.
  • Climbing: climb links on the navigation mesh that only Stalkers use. A tool finds walls 1.2-7 m tall with walkable ground on top; VerdantSpire got 25 on the 5 m ruin walls. In the arena one climbed 5 m down head-first in about 1.6 s, then chased and leapt.
  • Gameplay: a 0.5 s rear-up and hiss when it spots the Seed; no climbing while backing off.

All 7 placed Stalkers updated through the prefab. 18/18 tests (ff79257).

12:16history

The Luminbloom: Vitality Blooms that wake up

charactersplantsworld
Dormant bud at night, in the test scene
Dormant bud at night, in the test scene
Full bloom with the Seed close by
Full bloom with the Seed close by
In VerdantSpire's Crystal Basin, stem turned toward the Seed
In VerdantSpire's Crystal Basin, stem turned toward the Seed

The plant from the flora concept sheet becomes the model of the existing Vitality Bloom (the in-game name stays the same). The Tripo plant had no rig and was almost one connected mesh.

  • Rig: 32 bones - roots, trunk, flower head, crystal core, 8 petals, 3 leaf branches. Clips: Dormant, Idle, Bloom, Absorb.
  • Behaviour: the bud wakes within 13 m, is fully open by 4.5 m, turns its stem up to 70° toward the Seed and chimes softly. When absorbed it flares, snaps shut and sinks into the ground before disappearing.
  • Look: blue-violet petals and cyan trunk nodes. The petals first rendered washed-out white, and needed two material passes.
  • Fixes: a skinning helper sent leaf tips to the flower core; a separate code review found 5 bugs, the worst being a test scene that would have overwritten the real save file.

All 6 placed blooms updated through the prefab. The work waited for the Editor lock while the Moss session held it. 20/20 tests (c62d637). Jeremy's standing rule from here: always commit your own work.

12:23moss

Moss, the companion, joins the game

charactercompanionface
Moss's face: the 12 expressions, each with its own eyes, lids, brows and mouth
Moss's face: the 12 expressions, each with its own eyes, lids, brows and mouth
The first meeting, beat by beat, ending on the introduction card
The first meeting, beat by beat, ending on the introduction card
Moss waiting in the Seed Vault
Moss waiting in the Seed Vault

Moss is in, built from the Moss - Companion NPC concept sheet: the Tripo model rigged and animated in Blender (23 clips), about 0.6 m tall, with a drawn face that can show 12 expressions, blink, and look at things. The face is there because Moss is meant to be someone the player connects to, not only a body that moves.

  • Where: waiting in the Seed Vault, tinkering beside a pod. The first time the Seed comes close, a short scene plays (Moss peeks, hides, looks up and lights up), then a card introduces them.
  • What they do: follow the Seed, stay or come on command (R / d-pad up), and go look where the Seed aims (G / d-pad down).
  • Test bench: MossShowcase has a panel for every expression, clip and command, plus a button to replay the meeting.
12:38history

Keep getting better: practices, trials and a commit gate

projectworkflowtools
Before: the Basin's far bank missing its shore rocks
Before: the Basin's far bank missing its shore rocks
After the rebuild: shore rocks and reeds back along the far bank
After the rebuild: shore rocks and reeds back along the far bank

Jeremy asked for the project to improve its own workflow: what agents repeat becomes a best practice, what must be followed becomes a standard.

  • Process (IMPROVING.md, PRACTICES.md): observations become candidates, then best practices or standards; a manual routine done a third time becomes a tool. Every task ends with a close-out: docs, a short retro, check_project.py.
  • Trials: practices from outside research start as trials with a hypothesis and a kill signal, and need 3 real rounds before adoption. Three started, each aimed at a failure this project had already hit.
  • ContentValidator: its first sweep found 7 Grove shore pieces pointing at meshes never committed. The cause was the Grove tool's cleanup deleting meshes after a failed run; it now never deletes a mesh a scene uses, and the shores were rebuilt (1814aed).
  • Commit gate: the pre-commit hook now blocks commits with assets that exist only on disk, missing .meta files or missing scripts. Sessions can also claim a scene they're editing.

Held back for Jeremy: splitting VerdantSpire into smaller scenes, and a second project copy for tests (505192f).

13:32moss

Characters stand on the ground now (and the tests that prove it)

animationtestscharacters
The Seed running in the grounding test: the planted foot meets the ground
The Seed running in the grounding test: the planted foot meets the ground
The test's survey of placed characters: Moss in the Seed Vault
The test's survey of placed characters: Moss in the Seed Vault

Jeremy noticed models not sitting right on the ground and moving strangely, and couldn't tell if the ground or the models were wrong. The new CharacterGroundingTests measure it for every character standing, walking and running: the gap between the lowest point of the visible, animated mesh and the real ground, and how far planted feet slide.

  • Verdict: the ground was fine; the models floated. The navigation surface sits up to 20 cm above the colliders it was built from, and the Seed's controller hovers by its skin width. Stalkers and Grazers floated 8-20 cm, the Seed 5 cm.
  • Fix: GroundSnap lowers each model onto the real ground while it is grounded. The walk-to-run blend was also redone so feet stop skating at in-between speeds, and the Seed's lean now pivots at the hips.
  • Still open: the old Root Guardian placeholder (no real model yet), and toes dipping 4-5 cm on the Seed's and Grazer's run cycles.
17:42history

First person, and a steadier third-person camera

cameracontrols
Third person in the Moss test bench
Third person in the Moss test bench
Same spot in first person: eye level, body hidden; the green shapes are the spawn bed's petals
Same spot in first person: eye level, body hidden; the green shapes are the spawn bed's petals

Jeremy asked for a switch between third and first person and for the camera to feel smoother; the game didn't feel quite right.

  • The switch: V or a right-stick click, or scroll the wheel all the way in. A 0.3 s eased move to the eyes; both views share one aim, so the camera moves straight in instead of swinging round. In first person the body is hidden (its shadow stays), turns with the view, and the field of view is 8° wider.
  • Measured before changing anything: no judder while running. But the camera rose 1.51 m on the Seed's 1.64 m jump, so every hop bobbed the view; it now holds its height through a normal jump. Respawns swept the camera across the level for about half a second; now they cut.
  • Smaller: zoom and field of view were updating in the same step as Cinemachine, sometimes after it; the controller auto-follow waits 1.5 s (was 0.9).

New CameraViewTests; a review found 4 bugs, all fixed. PlayMode 28/28. Not yet played by hand. Commit c8bf8cf.

18:59history

A first interface pass, drawn by code

interface
The drawn version: new-symbiosis card, connect prompt and vitality gauge
The drawn version: new-symbiosis card, connect prompt and vitality gauge
Drawn pause menu and journal
Drawn pause menu and journal

Jeremy shared his UI concept sheets and asked for an interface that fits the game: unique, not flashy. The sheets were low resolution with the background baked in, so this first pass didn't cut from them. Tools/generate_ui_art.py drew 28 sprites in their style instead: bronze frames around dark teal glass, round medallions, vine sprigs, a leaf slider knob and 14 icons.

  • HUD: vitality gauge under the Seed's emblem, the key in a medallion whose ring fills while you hold to connect, ability medallions with recharge rings, framed new-ability cards, a boss bar.
  • Menus: medallion lists for title and pause, bronze-edged settings rows and tabs.
  • Not built: inventory, map, ability wheel, growth tree, scan screen, dialogue portraits. No systems behind them yet, and an inventory goes against the design's "world interaction over inventory" rule.

PlayMode 28/28; a review found 2 minor bugs, fixed. Commit be4a711. Jeremy's verdict came a minute later (next entry).

19:26history

Jeremy's own sprite sheets instead

interface
The card in the sheet's frame, with the leaf medallion set into the top
The card in the sheet's frame, with the leaf medallion set into the top
Pause menu with the sheet's medallion buttons and vine frame
Pause menu with the sheet's medallion buttons and vine frame

Jeremy: the code-drawn UI doesn't look as good; use the sprite sheets he sent. The sheets are 1536×1024 with no transparency, and automatic detection of the pieces was too noisy, so the crop boxes were picked by hand. A new Tools/extract_ui_sheet.py cuts each piece from its box, removes the sheet background around it and keeps the dark glass inside frames. The drawn pieces are now only a fallback.

  • Where they went: medallion menu buttons (cyan glow when selected), the vine frame for menus and journal, the large dialogue frame for cards, bronze bars, tabs and a leaf knob in settings, the leaf emblem and gauge tube for vitality, toasts, marker and reticle, and the icon sheet's medallions for abilities.
  • Problems: stretched vine edges smeared, so they repeat now; tiled glass showed seams, so the glass inside is plain. The pieces are small in the sheets (a toast is about 210×40 px) and look a little soft at 1080p.

Jeremy asked to note missing or low-res art rather than block on it: Docs/UI_ART_NEEDS.md started. Commits de2b4e9, ee6406b.

20:15history

Three more sheets: key bar, frames and gauges

interface
The key bar with the bound key written on its disc
The key bar with the bound key written on its disc
A sound caption in the cyan speech bubble
A sound caption in the cyan speech bubble
Boss bar: amber fill, pale damage trail, phase gems, medallion in the ring (test values)
Boss bar: amber fill, pale damage trail, phase gems, medallion in the ring (test values)

Jeremy sent more sheets over the next hour, each covering items on the art-needs list. The pieces were bigger, so they didn't need upscaling.

  • Key-prompt sheet (957c4d7): the interaction prompt is now his key bar. The baked "Y" is painted out and the real bound key is written on the cream disc (E, A or Cross); the bar glows cyan while you hold to connect. Also ready/recharging ability medallions, the gauge tube, a gold pin, an amber reticle and a bronze mouse cursor.
  • Frame sheet (b53e012): menu buttons with an empty ring, so each entry's icon sits in it instead of covering a baked one; a card frame with a ring slot for the ability medallion; a cyan speech bubble for sound captions. The captions first didn't show in captures: the Editor ran at about 8 fps in the background, and the 2.2 s caption had expired.
  • Bar sheet (0760748): his green, cyan and amber fills for vitality, sliders and a new boss bar.

Then an image prompt for the rest, asking for a flat background: the blurred ones were the hardest to cut.

21:41history

The requested sheet: ability icons, key caps, menus

interface
Area banner, message plate, Seed emblem and the seedbed toast
Area banner, message plate, Seed emblem and the seedbed toast
Final pause menu: lit medallion on the selected entry, gem-cornered panel
Final pause menu: lit medallion on the selected entry, gem-cornered panel
Settings: row states, folder tabs, cyan slider fills and key caps in the hints
Settings: row states, folder tabs, cyan slider fills and key caps in the hints

The sheet Jeremy made from the prompt had a flat background, so its pieces were found automatically (3728684).

  • Abilities: all eight have their own medallions now (Threadroot, Root Sense, Dodge, Connect, Rooting, Moss, Seedbed, Vitality Bloom), bright when ready, dim while recharging.
  • Key caps: a tool writes each key's label onto about 12 blank caps, making 283 icons (letters, F-keys, mouse, Xbox, PlayStation, sticks, d-pad). The free generic set is now the fallback.
  • Also: a banner for area names, a plate for messages and behind the title tagline, a tall gem-cornered panel for pause and settings, a seven-frame loading ring.

Jeremy asked whether each key needs its own sprite. The big HUD prompt already writes its letter in code; the sprites are for prompts inside a sentence ("Press [E] to connect"), where the text system can only place an image. They cost one ~2 MB texture.

A last menu sheet (93f91e9) gave settings rows in three states, folder tabs and seven menu medallions, with only the selected one lit. UI_ART_NEEDS.md now lists nothing missing for the current screens. PlayMode 28/28.

22:09terrain

Where the world started

worldresearch
The Sunken Grove before the world research
The Sunken Grove before the world research
The approach to the Verdant Spire
The approach to the Verdant Spire

Jeremy asked to tackle the terrain: it did not look like the finished game should. Before changing anything, ten baseline captures of the current world, measured: median brightness 0.04 and 63% near-black - only 2 of 10 pass the value screens we later set from 89 reference screenshots. Four research agents then read all 26 design-site pages and the concept art.