A cozy single-player vivarium where you raise a strange creature in a glass tank. What you feed shapes its body; the words you teach shape its voice. No combat, no win condition — just a slow bond with something a bit weird.
The winding road from "feed words to a slime" through combat, AI experiments, and one full pivot. This log tracks it.
2025Origin
Symbiotic Voxel
Co-build with an AI agent — each voxel has a name (Wood, Stone, Leaves...)
Minecraft-like building where you and an AI agent co-create structures. Every voxel is named — Wood, Rock, Flower, Ruins Stone — and the AI understands what they are, suggests changes, and reasons about the scene in natural language.
Demo
Apr 3, 2026Prototype 1
Card Battle
First buildable thing: async two-phase card combat with an AI dungeon master (Shroomking). Players and AI commit cards blind, then react. AI generates bluffs and taunts.
Lesson: AI was a sophisticated bot here. A good rule-based system could do the same. Didn't exploit LLM reasoning in a unique way.
Demo
Apr 7, 2026Prototype 2
Mindflayer / Mindbreaker
Text-first pivot. Player declares a belief. A hidden Guard has a contrasting one. You build word + card combos to shake its worldview. AI judges impact and writes Guard dialogue as your only clue.
Lesson: hidden word attitudes were genuinely AI-only. But too text-heavy — lacked physical game feel. Right idea, wrong body.
Demo
Apr 8, 2026Exploration
Back to pixel / voxel
Came back to the original image. Tried combining word semantics with a top-down dungeon and a voxel creature. The roguelite structure gave each run a different vocabulary.
Still felt disconnected — the creature had word-blocks on it, but combat wasn't the words themselves. The body and the weapon were still two separate things.
Apr 8, 2026The Insight
What if you feed words to an Intellect Devourer?
D&D Intellect Devourer
The creature eats words. The words become its body. The body is the weapon. Semantic relationships between adjacent word-blocks determine combat — AI generates those rules once, permanently, from language.
Words are not labels. Words are physics.
Apr 9, 2026Design
Word Devourer
Real-time tile-based combat. Two creatures made of word-blocks move toward each other. Contact triggers damage every 2.5s. Adjacency creates permanent semantic rules — Moon next to Rot amplifies it, because that's what a language model understands Moon and Rot to mean.
Tile-based word creature mockup
Word adjacency sketch
Demo
Apr 9, 2026BuildingIn progress
Unity Frontend
Porting the design into Unity 2D URP. Grid-based movement, word-block creatures with 3-7 expandable slots, real-time contact combat settling every 2.5s. 14 words so far (Grass, Stone, Apple, Snake, Moon, Rot...) each with base stats and distinct colors.
Adjacency modifiers already work: Poison buffs Snake, Moon multiplies Rot, Ice reduces attack. Player defeats 3 enemies per run, absorbing their blocks to grow. Edit mode (E key) lets you rearrange your creature between fights.
Apr 10, 2026References
Game References
Suggested by lab members — games that share a design axis with what we're building.
Kotodama DiaryMobile / Virtual Pet
Feed words to a creature and it evolves based on what you feed it — cute words produce cute forms, aggressive words produce aggressive forms. Built on the Japanese concept of kotodama (words carry spiritual power).
Why relevant: Direct precedent for words-as-mechanic. Word choice produces branching, measurable outcomes — not narration.
CarcassonneBoard Game / Tile Placement
Draw and place terrain tiles that must match adjacent edges. Place followers on completed features (cities, roads) to score. Adjacency and enclosure drive all strategy.
Why relevant: Proves that edge-matching placement rules create deep emergent strategy. Our word-block adjacency system is the same principle — what you place next to what determines everything.
Captain Forever / TogetherAction / Ship Builder
Freeform spaceship construction in real-time. Scavenge parts from destroyed enemies and bolt them onto your own vessel. In co-op mode (Captain Together), multiple players build a shared ship piece-by-piece while flying and fighting.
Why relevant: Build-from-loot loop matches our absorb-enemy-blocks mechanic. Structure of your ship directly determines combat capability — same as our word-block creature topology.
BesiegePhysics / Siege Builder
Build medieval siege machines from modular blocks — wheels, blades, hinges, bombs — each physically connected to a core. A poorly balanced machine collapses; a well-designed one is lethal.
Why relevant: Validates that topology of construction (what connects where) drives combat effectiveness. Arrangement matters, not just inventory — same principle behind our adjacency modifier rules.
Apr 12, 2026Pivot
Combat Sandbox → Nurture Game
Major direction shift recorded in design docs v9 (v3.0) and v10 (v4.0). The creature stops being a combat vehicle and becomes a pet. The word "fight" disappears from the core loop; "feed" and "watch" take its place.
Why pivot: Combat sandbox is dev-heavy, balancing-hard, and sits in a crowded roguelite space. Nurture game is faster to build, mobile-friendly, has clearer monetization (gacha + decoration + social), and "feed words to an AI pet" is a near-empty niche. AI becomes the core of the feedback loop, not just a rule generator.
What stays: grid system, core/shell structure, internalization, fusion, expression system, evolution. Same foundation — different interaction posture.
What's new: micro-behaviors (idle bob, blink, curiosity lean, recoil), taste/preference system (like / neutral / reject that sharpens over time), and a commercialization path (rare word packs, decorations, seasonal words).
Dropped: directional attacks, enemy AI, combat UI, functional zones. All remain as future expansion if needed.
Apr 12, 2026BuildingIn progress
Internalization in Unity
Added the internalize feature to the Unity build. An attached word-block adjacent to the core can now be permanently absorbed — it disappears from the shell, becomes a new core cell, and its stats + rules merge into the core pool. The operation is irreversible, matching the design doc's "every decision permanently shapes the creature" philosophy.
This is the first nurture-direction feature in the engine. With internalization working, the creature can now grow — setting up the path toward fusion, evolution, and eventually the taste/preference system from v10.
With internalization, the creature grows for the first time. Next up: fusion (merge core words) and the micro-behavior system to make it feel alive.
Apr 13, 2026Roadmap
Codebase Audit + First Roadmap
Engine is 100% combat-oriented — GameManager tracks kills, SpawnManager generates enemies, main loop is fight → loot → equip. Nurture direction has zero code presence. Planned 3 steps to minimum viable nurture: micro-behaviors → taste system → word refresh.
This roadmap was superseded by the "Radical Simplification" session on Apr 15, which restructured priorities around the element cycle + semantic identity framework.
Apr 13, 2026Design
v12: The Full Nurture Blueprint
Wrote the comprehensive design document (22 sections, ~4k words) that crystallizes every system in the nurture direction. The creature is now a slime with a stomach — eaten words physically appear inside its translucent body, reshaping it. The player is an invisible "God Hand" that clicks, drags, and nudges — no avatar, no WASD.
Key leaps from v10:
Digestion pipeline: stomach → digestion → absorption (core grows) + excretion (new word). Excretion is the only source of new words.
Regurgitation: creature spits out words it dislikes. Personality expression, not punishment.
Evolution: internalize enough words → AI generates 2 directions → player picks → new form + bigger stomach.
Scope: hatching → first evolution, ~15 min session. Success metric: "Can the player tell you what their creature likes to eat?"
Later superseded in several areas by the Apr 15 radical simplification (mutation, needs triple, and island system cut from initial scope).
Apr 14, 2026Design
One-Pager: Feed Words, Raise Life
A printable game introduction card for playtests. Three-panel visual narrative — pick a word, feed the creature, wonder what it becomes. No stats, no combat, just the core nurture loop in one glance.
Printable one-pager for playtest sessions. The three-panel flow: discover words in the world, feed them to your creature, wonder what it becomes. Third panel deliberately left ambiguous.
Apr 14, 2026Playtest
First Playtest: Crafting Hooks, But "So What?"
Ran the first external playtest — earlier than ideal (no tutorial, nurture loop incomplete). Had to explain verbally throughout. Several clear signals emerged.
What worked: The word crafting/fusion concept itself resonated. Multiple testers were drawn to combining words and wanted to see what would come out. The core premise — feeding words to a creature — landed as intriguing.
What didn't:
Fusion feels meaningless: players craft a new word but don't know why they should care. No visible consequence, no payoff.
Combat steals attention: it's the most complete system, so players gravitate toward it instead of nurturing. Need to suppress combat UI in the nurture build.
No agency in word generation: a tester said the single AI-generated fusion result felt like losing control. Wants to pick from 2–3 candidates — choice = ownership.
Want visible evolution: players want to see the creature change appearance continuously. The promise of transformation is a major draw.
Word relationships too abstract: ATK/HP modifiers from chain rules went unnoticed. Players don't care about +2 ATK from adjacency. But intuitive elemental interactions (water beats fire, poison + plant = toxin) make immediate sense. The relationship system needs radical simplification — drop stat math, lean into obvious cause-and-effect.
Fusion flow too many steps: internalize (manual select) → wait → fuse (select pair) is too much cognitive overhead. Players want the process to feel more automatic or streamlined.
Drag-and-drop is the natural instinct: testers tried to drag words directly onto the creature instead of click → select from menu. The God Hand fantasy maps to drag-and-drop, not click-and-confirm.
Hard to understand without tutorial: mouse-only "God Hand" input confused PC testers (likely fine on mobile/touch). Zero-learning-curve goal not met yet.
Design implications:
Priority shifts to making feeding consequential: visible body change, taste reactions, digestion → excretion loop.
Fusion multi-choice (2–3 candidates) to give players agency.
Word relationship system overhaul: replace ATK/HP chain rules with intuitive elemental interactions (synergy/conflict cycles). Players understand "water extinguishes fire" instantly; they don't notice "+2 ATK from adjacency."
Hide combat, surface nurture. Tutorial before next playtest.
Core validation: the creature-feeding concept and word crafting are interesting. The gap is meaning — players need to see and feel the consequences of their choices. The chain rule / stat system is a relic of the combat era and needs to be rethought for nurture.
Apr 15, 2026Design
Element Cycle + Semantic Identity: A New Core Framework
Post-playtest design session. Three attempts to replace ATK/HP with something that makes feeding meaningful:
Attempt 1: Essence Axes. 4 continuous axes (Heat, Life, Light, Fury). Failed — "Mirror" has no meaningful position on a Heat axis. Just stat math in a new costume.
Attempt 2: Element typing. 5 elements (Wood / Fire / Earth / Metal / Water) with synergy and conflict cycles — like Pokémon types, every pair has a defined interaction. Problem: Apple and Tree are both Wood, so the creature can't tell them apart. Words become empty shells for element tags.
Attempt 3: The breakthrough — words ARE the creature's identity.
Key insight: don't abstract words into numbers at all. The creature that ate Snake + Fire + Poison IS a venomous fire serpent. Three layers make this work:
Elements = grammar. Learnable macro-rules. Players figure out "Wood feeds Fire" and "Water beats Fire" within a few feedings. Gives predictable reaction types.
Word semantics = vocabulary. Same element relationship, different outcomes. Apple fed to a fire creature → "Cider"; Tree fed to the same → "Charcoal". AI generates specific results from the creature's full word identity.
Creature identity = consumed words. Not a stat summary. Snake gives scales, Fire gives flickering particles, Poison gives a corrosive drip. Every word leaves a real mark on appearance, personality, and evolution.
The creature's first word sets its core element. Subsequent words relate to that core: nurturing, reinforcing, creative, challenging, or prey. Each type shapes the creature differently — nuanced tradeoffs, not binary like/dislike.
Replaces: ATK/HP stats, 13 hardcoded rules, tag-based affinity, flat numerical stats. Preserves: word crafting/fusion, feeding as core verb, visual transformation, God Hand, digestion pipeline.
Most significant design shift since the combat → nurture pivot. The game moves from "numbers hidden behind words" to "words ARE the substance." The element system makes it designable rather than chaotic.
Apr 15, 2026Design
Radical Simplification: Feed, Evolve, Collect
Same session, second breakthrough. Still designing too many systems. Kept cutting until only the fun parts remained.
Cut: adjacency strategy (cosmetic only), map ecology (deferred), complex combat (autobattle: element matchup + size), per-word HP (creature is one being), excessive player choices.
What remains — three loops:
Short (seconds): feed word → creature reacts (expression, body change, speaks with personality). Most AI-native moment. The thing players will screenshot.
Mid (minutes): ~8 words → evolution. New body plan (serpentine / biped / quadruped), movement style, personality. Player picks from AI-generated options.
Long: raise multiple creatures. Element relationships determine bonding (synergy) or rivalry (conflict). Compatible creatures breed offspring inheriting traits from both.
Element system simplified to three jobs: feeding reaction type, creature-to-creature relationships, and hidden ecosystem balancing (world spawns what the creature needs).
Fusion redesigned: two words "birth" a new word. AI generates a child influenced by the parents' element relationship — synergy = smooth birth, conflict = surprising/rare result.
Key design detail: pre-evolution creature is formless slime. Evolution gives it a body plan. Shape comes from word semantics (what it IS), material/texture from element balance (what energy it carries). Same serpentine body + fire vs water = completely different creature. Each word leaves a mark where it was absorbed.
The game is now: tamagotchi meets Pokémon daycare, powered by language AI. No strategy required to start. Depth comes from the creature's personality (word choice) and the multi-creature ecosystem (element relationships).
Apr 15, 2026Build
P1: Element System Data Layer
Implemented the element + semantic identity data layer in one session. Data model shifted from numeric stats to elemental identity.
14 words assigned elements: Wood (Tree, Grass), Fire (Fire, Snake, Light), Earth (Stone, Apple, Rot), Metal (Bone, Mirror, Poison), Water (Ice, Moon, Dark). Old ATK/HP marked [Obsolete].
Creature identity — core element set from first word. Each internalized word tracked with its element relationship to the core.
AI semantic reaction — Python /react endpoint: creature's word list + new word + relationship type → reaction + excretion word + intensity via Claude Haiku. Local stub fallback.
UI — blocks show element type + relationship when stat display is hidden (now default).
Data foundation for all nurture gameplay. Next: wire element relationships into actual creature behavior, expressions, and body changes.
Apr 15, 2026Build
Rendering Overhaul: SDF Slime Fusion
Rewrote the creature rendering from scratch. The old 3-layer system (back outline → tile sprites → front jelly overlay) was visually disjointed — edges and fills were separate objects that didn't know about each other. Replaced with a proper SDF approach using smin smooth minimum fusion.
How it works:
SDF + smin fusion — Each cell is a signed-distance rounded box. smin() smoothly merges adjacent cells, creating organic bridging between tiles instead of hard grid edges. _Smooth parameter controls how much cells stick together (0 = independent, 0.5 = water-drop bridging, 1.0 = blob).
Per-cell color blending — Each cell carries its WordBlock's color. Colors blend by distance-weighted exponential falloff (_ColorBlend), so neighboring cells smoothly transition instead of hard-cutting at tile boundaries.
Single quad per creature — One material, one draw call. Tile sprites hidden for attached blocks. Fixed/Loose blocks use a new soft-edge SDF shader too.
Deleted ~150 lines of outline infrastructure — neighbor masks, core glow, property blocks, per-tile outline setup. All replaced by two clean SDF shaders.
Also wired up the DitherRendererFeature that was coded but never added to the URP Renderer. Bayer 8×8 ordered dither post-process is now active on PC_Renderer.
Apr 12–16, 2026Week 3
Week 3: From Combat to Nurture Core
Five days: one pivot, one playtest, one framework breakthrough, and the first buildable nurture loop.
Progress Timeline
The Pivot: What Changed
Playtest confirmed: word fusion is the hook, combat steals the focus. Creature should be a pet, not a weapon.
Before: Combat Sandbox
Core verbsfight, loot, equip
InputWASD + click
StatsATK / HP / 13 rules
AI rolechain rule generator
Goaloptimize build
"Did they optimize their production line?"
→
After: Nurture Pet
Core verbsfeed, watch, breed
InputGod Hand (drag & drop)
StatsElement cycle / identity
AI rolereaction + evolution
Goalemotional bond
"Can they tell you what their creature likes to eat?"
What stays: grid system, core/shell structure, fusion, word crafting, expression system. The foundation is the same — the interaction posture changes.
New Framework: Element Cycle + Semantic Identity
Three failed attempts at replacing ATK/HP. Breakthrough: don't abstract words into numbers at all. The creature that ate Snake + Fire + Poison IS a venomous fire serpent.
Three Loops
Cut everything else. Map ecology, adjacency strategy, per-segment combat — all deferred. Only the fun parts remain.
Short seconds
Feed word →creature reacts→ expression change, body grows, speaks
Mid minutes
~8 words absorbed →evolution→ new form + personality + starts picky eating
AI-generated excretion words (/fuse), hunger state + shrink mechanic, preference choice nodes at word #3 and #5.
2P2: Evolution
~6-8 words triggers evolution. AI generates new body plan (serpentine/biped/quadruped/blob), personality, and food preferences. The big milestone.
3Grid → Free Movement Refactor
Free world movement + internal local grid. Creatures move continuously instead of chess-piece hops. Required for post-evolution body plans.
Apr 17, 2026R&D
Spine Sandbox: Rethinking the Body
The Week 3 plan had a hole. Evolution turns a blob into a serpent or a crab — but the current body is a bag of grid cells with no topology. You can't point to "segment 3" of a bag. Adjacency strategy, local mutation, per-part decoration — all of them assume a body plan that doesn't exist yet.
Opened a new scene, BodyPlanSandbox.unity, with zero dependencies on the main game. Goal: find one data structure that can describe every body we might want to evolve into, and make "segment N" an addressable thing.
The current main scene — the starting point we’re diverging from:
Main scene, Apr 17 — grid-cell bodies, drag-feed bar, multiple creatures. No addressable topology.
The Spine Abstraction
Every body plan I cared about collapses into three parameters: spine length, appendage pattern, chain length.
Blob = 1-node spine + N−1 leaves
Serpent = long linear spine, no appendages
Crab = 1-node spine + 4 leg chains
Octopus = 1-node spine + 3–8 tentacle chains
Centipede = long spine + equidistant leg pairs
Built all five as parametric plans under an IBodyPlan.BuildSkeleton() interface returning a BodyNode tree. Physics assembly (Rigidbody2D + HingeJoint2D chains) is shared; the plan only returns topology. Keys 1–5 swap plans live. Gait templates drive each node with a sin-wave torque keyed by gaitPhase + gaitAmplitude — serpent undulates, crab alternates diagonal legs, centipede ripples metachronally.
Decoration = Semantic Slots
Second insight, once topology was addressable: decorations should hang off semantic slots, not coordinates. The body mutates; horns, fins, claws can’t anchor to absolute positions.
Locked a small slot vocabulary: HEAD, TAIL, LIMB_TIP[i], SPINE_MID[i], BACK/BELLY, SURFACE. Each body plan declares which slots it exposes. Parts declare which slots they can attach to (horns→HEAD|SPINE_MID, fins→BACK|TAIL). When the body evolves, parts re-resolve — matching slot survives, otherwise graceful fallback to SURFACE or suspension.
Same protocol covers both grown (earned by eating) and worn (player-attached) decorations. Delta between the two is two fields: source and detachable. One system, two content pipelines.
References Pulled In
Lesson: "Segment N is addressable" turns local mutation from a future feature into a side effect of the architecture. Worth building the sandbox to get this right before migrating the main scene.
Apr 18, 2026Build
Verlet + Head-Seek: Locomotion That Actually Works
The Apr 17 ragdoll prototype looked plausible for ten seconds, then fell apart. HingeJoint2D chains wobbled unpredictably under torque, legs spun into knots, tuning one plan broke the other four. Physics joints are not the abstraction this game wants.
Scrapped it. Rebuilt locomotion from two pieces: Rain World’s position-based Verlet for the body, flOw’s MoveTowards head-seek for steering.
Body — Verlet, Tree-Shaped
Each node holds pos / prevPos. No joints, no forces. Distance constraints between parent and child are solved iteratively each frame — trivially handles branching topology (octopus, crab, spider all fall out the same way). The head is pinned (invMass = 0) and everything else is pulled along by constraint propagation.
Steering — flOw Head-Seek
Head does MoveTowards(moveTarget, speed * dt) every frame. It deliberately under-shoots the cursor — so when you circle the mouse, the head traces an arc, and the Verlet body ripples behind it. The entire "swimming" feel comes out of that one line.
Target-Pull: Zero Drift
The first gait attempt rotated each edge by (sin(time + phase) * amplitude) in place. Drift compounds: nodes accumulate tiny rotation errors every tick, and within 30 seconds a centipede twists into spaghetti.
Fix: every node stores restAngleInParentFrame. Each iteration, the target position is recomputed from scratch — parent’s current heading + stored rest angle + gait sin offset. Nothing persists between frames. No drift possible.
Anchor vs Gait — Two Layers
Not every node wants the same stiffness. Limb roots snap rigidly to their mount point (anchorStrength, high) so legs don’t collapse into the body. Mid-segments pull softly toward the gait target (gaitPullStrength, low) so they lag and swing naturally.
Collisions: Smarter Than They Need To Be
Same-creature parent/child pushout skipped — distance constraint already handles it.
Two anchored siblings skip each other too — they trust their canonical positions. Otherwise a blob’s tightly packed leaves jitter against each other.
Non-anchored siblings do push out — otherwise centipede legs overlap.
Head participates in collision too — hits a wall, the body’s Verlet constraints drag it back in line.
Blob fill uses Vogel’s sunflower spiral instead of concentric rings — arbitrary N becomes a uniformly packed disc with no visible concentric banding.
BodyLimbs: One Plan, Three Sliders
Late in the day a further collapse. All five parametric plans from Apr 17 are actually one plan with three dials: (blockCount, limbCount, bodyRatio). limbSegs auto-distributes from the remainder.
Blob → limbCount = 0
Serpent → limbCount = 1, bodyRatio = 0
Crab → limbCount = 4, bodyRatio = 0.25
Octopus → limbCount = 8, bodyRatio = 0.1
Evolution animation is now "interpolate three numbers + rebuild skeleton on topology change" — which is a thing I can actually implement, not a hand-wave. That’s the payoff of the whole spine abstraction chain.
Apr 20, 2026Build
Envelope Renderer + Chibi Face
Verlet gave us skeletons. Now they need a body. Wrote Custom/VerletEnvelope, a shader derived from SlimeBody that SDFs every spine/limb node as a circle and smins them into one continuous surface. Per-node radius + color pushed into a float4[] each frame; one quad sized to the AABB renders the lot.
Step 1 (blob-only smin) is in. Step 2 (per-group smin so limbs read as distinct) left for later — the _Nodes[i].w slot is already reserved. E key cycles Debug / Envelope / Both so I can see what’s happening underneath.
Debug + envelope together — raw Verlet nodes visible through the smin surface
Envelope-only, BodyLimbs tuning panel on right
Chibi Character: Face, Mouth, Bubble
Three components, all parented to the Verlet head node, Inspector-tunable without entering Play mode:
VerletFace — 2 eyeballs + 2 pupils. Pupils offset proportional to head velocity (smoothed), snap back to center on idle. Random blinks.
VerletMouth — default-hidden black ellipse. SetEating(true) opens it, Speak(seconds) runs a sin pulse + phase-offset wobble so it looks like actual talking.
VerletBubble — Say(text, duration) pops 1–3 trailing bubbles. Main bubble is a 9-slice that auto-fits the TextMeshPro label; trailing bubbles space along the direction vector by bubble-edge distance so long text can’t push them outward.
Face/mouth heading — alignToHeading + reverseFaceAxis parameters let me set "eyes-front" or "eyes-back, mouth-leading" per creature. Current default is the fish/slime style: mouth leads, eyes trail.
BodyLimbs Gets a Spine
BodyLimbs got upgraded until it could replace all five legacy plans on its own. Added spineLength (extends a -X chain from the head with soft gait = serpent undulation) and per-limb limbAttachSpineIndex (mount a limb on any spine node = centipede). Sandbox GUI got a "Distribute on spine" preset: click once, 2N limbs pair across the spine at 90°/270°, instant centipede.
Further refinements the same day: split limbCount into headLimbs + spinePairs, added spineSpread (how tightly spine pairs pack), headLimbSpread (insect antennae vs starfish arms), spineThickness (radiusScale on head/spine so smin reads a chunky torso vs thin legs). Pink/cream head limbs vs cyan/orange spine limbs for visual disambiguation during tuning.
Same plan, same sliders: centipede. Red head, purple thickened spine, pair-mirrored limbs. The full tuning panel lives on the right.
Collision Groups Fix the "Only Head Turns" Bug
Had a persistent issue: centipede head would turn sharply but the spine stayed pointing the wrong way. Root cause: head limbs collision-pushing against the spine on tight turns. Fix: every node gets a collisionGroup (0 = head cluster, 1 = spine cluster), and same-creature cross-group pushout is skipped. smin’s natural fusion handles the visual overlap. Spine now turns with the head.
Live Tuning Panel
All BodyLimbs fields moved off the Inspector onto an OnGUI panel (G toggles), with ApplyPlanLive doing in-place param updates when topology matches and a full rebuild only when the skeleton changes. Mouse-over-panel suppresses world-click so I stop accidentally sending the creature walking when I’m just sliding a slider.
The visual gap from Apr 17’s debug circles to Apr 20’s readable creature is the one that unblocks playtesting. You can’t get feel feedback on gray debug dots.
Apr 21, 2026MilestonePlaytest pending
Phase A MVP: Feed → Choose → Grow
The Week 3 plan ended at "drag word into mouth, creature internalizes it." That’s feeding, but it isn’t nurture. The first playtester’s complaint was sharp: "I fed it, but nothing happened that was up to me."
Phase A is the minimum loop that answers that complaint. Every word eaten triggers a choice bubble with 3 growth options. Pick one — the creature visibly changes. That’s the loop. Running in the sandbox, compiles clean, awaiting playtest validation.
The Loop
Five Axes of Growth
Five orthogonal dimensions of BodyLimbs become five player-facing choices, never mixed:
SpineLength — serpent: extend spine by one node
HeadLimbs — crab: +1 head limb
SpineLimbs — centipede: +1 spine limb pair. Auto-adds a spine node if none exists.
Thickness — chunky: bump spineThickness one tier (chunkier torso)
HeadMass — blobby: +1 body-cluster node around the head
Hardcoded lookup table — 14 words, 3 GrowthOptions each. Deterministic, testable, easy to rebalance. AI replaces this later via /grow_options(word, state), with the hardcoded table staying as fallback.
The Choice Bubble
Reused VerletBubble’s 3-bubble AskChoice pattern. Main bubble widens to fit 3 TextMeshPro icon glyphs; hover scales each glyph; left-click selects, right-click cancels. Edge case that bit me: on the frame the bubble dismissed, the sandbox’s click-to-move picked up the same click and sent the creature walking. Fix: IsAsking stays true for one extra frame (Time.frameCount == _askEndFrame).
What Snap-Rebuild Looks Like
Chose spine-length? Topology changed — need to rebuild the skeleton. That’s an instant snap, which is ugly. SandboxPoof plays a gradient circle over the head during the swap — covers the snap long enough to read as a growth flash. Placeholder; Phase B replaces this with real skeleton-diff interpolation (new nodes scale up from parent position, deleted nodes scale down out).
Two Small But Worth-Recording Bugs
F-key eating was calling SetEating(true) every frame while held, which overwrote the Speak() pulse from Q-feed. Changed to KeyDown/KeyUp transition — external callers can now run their own mouth animation without contention.
The VerletBubble upgrade to TextMeshPro revealed an offset drift: child bubbles were spacing by text-center distance, so a long word pushed trailing bubbles off to infinity. Rewrote spacing as edge-to-edge projection along direction vector; text length no longer escapes.
Where we are: Phase A compiles and runs. Next session is playtest the loop — does the 3-choice moment feel like a real decision, or does every option feel equivalent? Phase B (real growth interpolation, not poof-and-snap) waits on that answer. Phase C (AI-generated options) waits on Phase B.
Apr 17–23, 2026Week 4
Week 4: From Body Plan to Vivarium
Two acts: body got a topology, then the grid got replaced.
What the Game Is Right Now
Thing in a Jar
A vivarium keeper. The creature grows from what you feed it — its body remembers every bite in color.
META-LOOP — HOW THE ECOLOGY EXPANDSPLANNED
The creature isn’t just a pet — it’s a tool for the tank. Evolution unlocks abilities that let the keeper tend new substrates, which produce new food, which seeds new evolution paths.
This Week’s Hypotheses
Framing questions for Friday’s Show & Tell — both emerged from the Apr 22 pivot and shape what the rest of this summary answers.
HYPOTHESIS 1
“How to make feeding playable”
Word-feeding was a riddle. Does swapping to sensory food + substrate turn the core verb into a loop the player actually wants to repeat?
HYPOTHESIS 2
“How to make AI-driven evolution”
Forced chain-rule generation felt like homework. Can AI earn its keep by naming + flavoring food and seeding evolution forks instead?
Prior week asked “how to make word playable”. The answer turned out to be: stop trying — make the thing playable, let the word gate it later.
Progress Timeline
Act 1 — Body Gets a Topology (Apr 17–21)
Problem: grid-cell blob — no addressable parts, couldn’t point at "segment 3"
Body R&D survives the pivot intact — the 5 axes still drive mutation, just picked by food axisBias instead of player quiz.
Why Word → Food
The biggest cut, and the whole reason for the pivot. A word is a riddle; a food is a thing.
Legible without text: shape + color + glow tells you what it is faster than any label
Creature can physically react: sniff, recoil, chase — gestures that make no sense toward the abstract word "MOON"
AI gets an honest job: naming a weird berry is discovery (No Man’s Sky); generating chain rules for words was forced homework
Food diary beats word list: discrete sensory items become memorable collectibles; a list of absorbed words never was
How the Word Earns Its Weight
The word doesn’t vanish — it gets gated. As the creature evolves, its palate widens and preferences sharpen. Rare foods become long-term goals: "raise a creature that can eat diamond" is a multi-fork play, not a first-day option.
Each evolution widens the palate (stone-path creature tolerates minerals; swamp-path handles toxins)
Preferences sharpen with age — likes / neutral / rejects, logged in the food diary
Rare food names become goals: "eat diamond" is play across multiple forks, not a menu choice
Concept Mockups
The stage: single-screen tank under a lamp cone. Glowing motes = ambient food cues.
Populated: a substrate (rock + growing plant) produces food; creatures live in the tank.
Creature lifecycle: eat → grow → evolve (forks at milestones).
The Creature’s Loop
The mockups show what it looks like; this pictogram shows what moves. Creature’s side only — the keeper layer is deliberately left as a ghost at the bottom.
Live today: Substrate → Food → Eat + grow (left three stages). Evolve fork is wired (AskChoice exists) but not yet triggered by a bite counter. AI naming is the next endpoint to ship.
Build Status
Body R&D (Verlet + BodyLimbs + Envelope)
100%
Substrate → Food spawn
70%
Eat + per-bite grow
80%
Evolution milestone (AskChoice fork)
15%
AI food naming (endpoint + wiring)
10%
Tank visual (glass frame, lamp cone)
0%
Next
1Evolution fork wiring
Bite counter → AskChoice, every N bites.
2AI food naming
New endpoint, cached per substrate.
3Tank visuals + visible substrate
Glass frame, lamp cone, substrate on-screen.
4Player layer (first pass)
Intro ritual + recipe book. Fills the ghost in the loop diagram.
Apr 2026Pitch
Pitch deck — Thing in a Jar
Eight-slide cold-context introduction. The game, two pivots, the ecosystem loop, what you do, the AI architecture, who it's for, where this goes, open questions. Click Launch for full-screen presentation (arrow keys, ESC to close).
8 slides · ~16 min
01The game
02The pivots
03The loop
04Three verbs
05AI
06Who it's for
07Outlook
08Questions
01 — The game
Thing in a Jar
Raise a creature that only speaks the language you teach it.
Jiayi Li · Apr 2026
02 — Two pivots in
How we got here.
Combat sandbox"Word Devourer"2024 — early 2026
→
Feed-words"nurture pivot"Apr 2026
→
Tank ecosystem"Thing in a Jar"now
Each pivot moved AI from decoration toward the creature's actual mind.
03 — The loop
A self-contained ecology. You're outside the glass.
The cycle runs itself. You add inputs — substrate, food, words, attention — and watch.
04 — What you do
Three verbs.
Eat
Food's geometry becomes the creature's body.
Speak
Your words. AI generates concepts, you name them.
Bond
Affection unlocks new teaching moments.
05 — AI
The creature's mind, end to end.
Your words go in. The creature speaks them back — never anything you didn't teach.
06 — Who it's for
Casual. Patient. Often female.
A 25-year lineage with a proven path to scale.
Tamagotchi91M+ units · since 1996
The egg pet that started the genre.
Tomodachi Life2026 reissue · OG 6.7M units
Strange, tender, audience leans heavily female.
Animal Crossing: NH47M+ units · 2020
Calm games can hit billion-dollar scale.
07 — Outlook
A shared mind. Private voices.
Now — P1Vocabulary skeleton
Words you teach
Babble built only from those
Naming rituals
Next — P2Multiplied
Cloud-shared concept corpus
Chase / pet / talk interactions
Many creatures, one mind-map
Then — P3+Pictographs
Language ↔ body coupling
Self-invented script
Pictures replace words
08 — Open questions
Two things I'd love your read on.
01
Targeting casual / female-leaning audience — the Tamagotchi/Tomodachi/Animal Crossing lineage. How does that end of the genre spectrum sit in 2026? Has the market matured, gotten quieter, or shifted entirely?
02
Distribution — this is a slow, quiet, emotionally-driven game. Different playbook from action / competitive titles. What marketing approaches have you seen work for niche-with-emotional-pull games?
1 / 8
← → arrow keys · ESC to close
Apr 24–30, 2026Week 5
Week 5
Two main pieces this week: food now spawns on substrate as a Verlet patch with shape-typed particles, and the creature can speak using only the words the player has taught it. A playtest at end of Apr 29 flagged three readability issues for next session.
Teach (T+click), speak, mood overlay — running, readability still rough
Poop → substrate, evolution fork — not yet wired
This Week’s Hypotheses
Last week ended on "how does AI earn its keep?" and "how to make AI-driven evolution?" — this week kept both alive and added a third about whether the food layer reads as a system.
HYPOTHESIS 1
“Does the creature feel like a mind?”
If you teach a word and the creature parrots it back — with a mood on its face when it eats — does the loop start to feel like relationship, not slot-filling?
HYPOTHESIS 2
“Does food-as-Verlet read as a system?”
Last week food was a glowing orb. Now it’s a patch of particles anchored to substrate. Does the visual language carry — spine-shaped Moss, cluster Berry, three-limb Fungi?
HYPOTHESIS 3 · carried from last week
“How to make AI-driven evolution?”
Body shape now records what was eaten — spine, cluster, limb. But the food→axis mapping is still rule-based. Open question: where does AI actually drive the evolution, vs. preset rules dressed up as it?
Progress Timeline
Food and body shape
Food now spawns on substrate as a small Verlet patch — particles anchored to a stone. Each particle has a shape role: spine, cluster, or limb. Eating a spine particle grows the creature’s spine; cluster grows body count; limb grows head limbs. So different food mixes grow into different shapes.
Just starting to grow
Fully grown
Same skeleton, different diets — the silhouette records what was eaten:
Creatures grown from different food mixes
The loop
Three of four quadrants are running in code. Poop → new substrate is still on paper.
The pink "TEACH" arrow is the new piece this week — the keeper’s words feed the creature’s vocabulary, separate from the food loop.
The AI flow
End-to-end: player teaches a word, AI runs /babble using only the player’s vocab, creature speaks it back with a mood.
REFERENCE · CHANTS OF SENNAAR
In Chants of Sennaar the player deciphers an unknown glyph language by collecting context clues. Here it’s flipped — nothing is pre-written. The creature’s vocabulary starts empty and only contains words the player has taught. Same mental model (language as evidence-built understanding), reversed direction.
Verified end-to-end: vocab.Teach("Moss"/"Eat"/"Good") × 3 → pluck a Moss patch → eat → bubble shows "Eat Moss. Good." + face shows happy mood. Tier-based fallback if vocab thin: full sentence → food + 1 word → food alone → pure babble ("ba lu mm").
Mood expressions
Each utterance comes back with a mood; the face overlays it. Three states wired so far — happy, excited, curious. Playtest revealed the deltas are too subtle to land in 1.6s, so tuning is still in progress.
Design intent above; in-build screenshots TBD pending the readability fixes from playtest.
Playtest feedback
Played the build at end of Apr 29. Three issues to address next session:
CRACK 01
Mood not visible
Programmatic test (60s mood) showed the squint. At 1.6s in real play, no one saw it. Either the duration is too short, the blink is eating mood frames, or the deltas are too subtle.
"Eat Moss. Good." is grammatical but not meaningful. Templates slot-fill nouns; they don’t read state. Repeated same-food eats should escalate — "Yum!" → "More?" → "Full."
Fix: LLM-first /babble (richer than templates can scale to).
CRACK 03
Naming flow missing
She expected: feed unfamiliar food N times → creature pops a "?" question → player picks a word → binds. Currently teach is purely player-initiated. The creature should ask.
Fix: recentEats tracker + AskChoice /wonder analog client-side.
All three are visibility / readability problems — the underlying mechanics work, the surface needs tuning.
Next phases
NOW — P1
Vocabulary skeleton
Words you teach
Babble built only from those
Naming rituals (creature asks)
LLM-first /babble (next week)
NEXT — P2
Multiplied
Cloud-shared concept corpus
Chase / pet / talk gestures
Many creatures, one mind-map
Affection currency (Bond verb)
THEN — P3+
Pictographs
Language ↔ body coupling
Self-invented script
Pictures replace words
Creature’s shape encodes meaning
Open questions
01
The parrot/baby register feels right but the templates flatten it. Has anyone shipped baby-talk dialogue that scales past 8 words and still reads as a personality? Examples?
02
For mood signals on a small face: which physical readouts land fastest in 1–2 seconds? Eye shape? Mouth? Body posture? Something else? — the readability budget is tiny and the playtest just confirmed it.
03
The casual / patient / often-female lineage (Tamagotchi → Tomodachi → AC) — how does that end of the genre spectrum read in 2026? Has the market matured, gotten quieter, or shifted entirely?
May 1–8, 2026Week 6
Week 6
The week the loop closed on paper. Universal poop currency replaced typed poop; three bottle channels (substrate / food / tank expansion) spec’d for the spend side; the demo got a real ending — the creature asks “Who am I?”, the player names it, then it sings happy birthday to itself. Singing system shipped, art direction locked after seven prompt rounds, backend got a Path A reorg.
May 8 — organic substrates, light shafts, ambient dust, matte porcelain art direction
A week of art-direction work between the two: seven prompt iterations (May 3–7), the Moebius-soft material lock on May 7, then the atmosphere layer (back gradient, dust, three light shafts) on May 5–8.
Atmosphere — back gradient, ambient dust, three independent light shafts — running
Singing — CreatureSinger + LLM-composed phrases via /compose-song — running
Universal poop currency + 1-counter HUD — running
Three bottles, language progression, demo terminus — designed, build next week
This week’s hypothesis
Last week ended on three readability cracks (mood not visible, utterances feel hollow, naming flow missing). Playtest at the start of this week added a fourth, larger one: the player has no clear goal in five minutes. This week’s hypothesis asks whether closing the cycle actually answers that.
HYPOTHESIS
“Does the loop close visibly?”
Eat → poop → three bottles → new substrate / food / wider tank → eat again. The whole cycle is now on paper. The question is whether the bottle metaphor reads as one continuous loop in play, or as four disconnected vending machines.
Progress timeline
The loop, on paper
Last week the loop had three live arms and one dashed arm (poop). This week the dashed arm got a concrete spec: poop is a single universal currency, and three bottles inside the tank consume it — one for new substrate, one for cultivating new food, one for widening the tank. Output is randomized; allocation is automatic. The loop closes — on paper. The bottle mechanic itself is build-next-week.
All four arms point to live or designed. Three of four are running in code; the bottle channels and tank expansion are spec’d for next-week build.
The three bottles
Each bottle is a poop counter sitting inside the tank. Poop drops auto-allocate across the three. When a bottle fills, an animation plays and the bottle yields its output before resetting. Substrate and tank-expansion outputs are random from a small pool. The food bottle has soil inside — new food visibly grows in it before it’s released into the tank.
Singing + atmosphere
The singing system runs end-to-end now. Client posts vocab + mood to /compose-song; the LLM (Claude Haiku) returns nursery-rhyme phrases composed only from words the player has taught; the creature sings them at C-major scale, semitone-quantized. Each note has an Animalese-style consonant onset followed by a held vowel sustain — “happy” reads as h+a, “you” as a held vowel without onset.
Atmosphere got a layer too: a vertical back-gradient (warm top / cool bottom), ambient dust particles confined inside the tank by collision, and three independent diagonal light shafts on staggered fade cycles. The empty tank now reads as a place, not a stage.
Art direction locked
Seven prompt iterations on substrate art (May 3–7) converged on a Moebius-soft direction: matte porcelain / frosted sea glass / jade family, full value range with strong directional light defining volume, no cel-shade hard edges. The full iteration history is in log/art-style-mockup-refinement-2026-05-07.md.
Mockup — v5 prompt: form preserved, material swapped. Stone = matte porcelain, driftwood = frosted sea glass
In engine — direction applied to substrates + shaders: contact shadows, sand caustics, water reflection, atmosphere
Earlier rounds chased semi-realism and landed in the uncanny valley. v5 keeps the silhouettes of stones and driftwood but replaces their surface with non-photoreal materials — making them feel like objects in a glass cabinet, not unconvincing simulations of nature. The two shots above are timestamped the 7th and 8th, but the actual implementation work landed across May 6–7: organic substrate sprites swapped in, soft contact shadows under each, sand caustics on the floor, water-surface planar reflection, and the simplified single-tone poop visual.
Playtest feedback
A playtest at the start of the week and a 1:1 follow-up surfaced four overlapping concerns. Not separate complaints — the same gap viewed from different angles. The build was technically working but missing a sense of purpose for the player.
FEEDBACK 01
No emotional connection
Players didn’t care about evolution results, didn’t treat naming as meaningful, clicked around without forming a relationship with the creature. Mechanics worked; the feeling didn’t land.
FEEDBACK 02
Loop reads as infinite
Five minutes of feeding gives no sense of progress. What is the player trying to achieve? When does anything end? Without a target, it reads as “just doing things.”
FEEDBACK 03
Creature changes too quietly
Differences after each evolution are real but visually subtle. Players don’t notice unless they know what to look for.
FEEDBACK 04
Game loop hard to read
Feed, watch, evolve — what’s connecting these pieces? The poop → substrate cycle wasn’t built yet, and that absence was felt.
All four point to the same root: the creature has no visible intent and the player has no clear goal. The week 6 design pivots target this directly — the bottle loop closes the cycle visibly; the “Who am I?” ritual gives the demo an emotional terminus.
Next phases
Demo day is May 18 — ten days out. The build window targets two main pieces: the bottle mechanic (closes the loop in code) and the language progression with a real ending (gives the demo purpose). Decoration mode and substrate–food decoupling are deferred — designed but post-demo.
NEXT — P1
Three bottles + auto mode
Substrate / food / tank channels
Auto-allocate poop drops
Bottle fill — reset animation
First tank widening
NEXT — P2
Language progression
Tier 1 mumble → Tier 2 broad words
Ritual 1: name a favorite food
Ritual 2: “who am I?”
Owner-acknowledgment moment
NEXT — P3
Demo terminus
Happy birthday self-sung
Save the creature to a slot
Email signup (paper / QR)
Open questions
01
Does the bottle metaphor read as a single closed loop, or as three separate vending machines? Auto-allocation assumes the player wants the simulation to handle distribution — but if it’s too automatic, the cycle may not feel like the player’s.
02
Is “Who am I?” followed by happy birthday too on-the-nose? The risk is melodrama. The bet is that with the right pacing — pause, look, mood shift, then the song — it lands as tender rather than performed.
03
In a 5-minute demo with strangers, will the player stay long enough to reach the second evolution and the “Who am I?” moment? The cadence has to hit ~4 minutes — tight if the player hesitates in the first minute.