Thing Under Glass

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.

Thing Under Glass — Trailer
Trailer — May 2026

How we got here

The winding road from "feed words to a slime" through combat, AI experiments, and one full pivot. This log tracks it.

Symbiotic Voxel Card Battle AI = fancy bot Mindbreaker right idea, wrong body Back to Voxel still split ...what if... Word Devourer Unity Build Combat Nurture pivoted Element Cycle Under Glass
Origin

Symbiotic Voxel

Symbiotic Voxels
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
Prototype 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.

Card battle UI mockup
Shroomking card battle UI mockup
Card battle gameplay demo
Gameplay demo
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
Prototype 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.

Player Belief Word + Card AI Judge hit / miss Guard "clue" Hidden word attitudes = genuinely AI-only mechanic
Lesson: hidden word attitudes were genuinely AI-only. But too text-heavy — lacked physical game feel. Right idea, wrong body.
Demo
Exploration

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.

Creature Body word-blocks on it Combat separate system The body and the weapon were still two separate things
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.
The Insight

What if you feed words to an Intellect Devourer?

Intellect Devourer reference
D&D Intellect Devourer
Eats Words Words = Body Body = Weapon

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.

Design

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 UI mockup
Tile-based word creature mockup
Word connection mockup
Word adjacency sketch
Demo
Building In 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.

Grid + Move Word Blocks Combat Edit Mode Internalize Micro-behav. Taste Sys. Fusion Evolution Done Next

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.

References

Game References

Suggested by lab members — games that share a design axis with what we're building.

Kotodama Diary Mobile / 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.

Carcassonne Board 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 / Together Action / 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.

Besiege Physics / 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.

Pivot

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.

Route A: Combat Sandbox (v9) Core verbs: Hit · Loot · Build · Place Creature = weapon carrier Directional attacks, enemy AI Functional zones (limbs) Validation: "did they optimize?" Status: shelved Route B: Nurture Game (v10) Core verbs: Feed · Watch · Breed · Collect Creature = pet with personality Micro-behaviors, taste system Multi-creature + breeding Validation: "what does it like?" Status: current direction
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.

Building In 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.

Attached "Rot" internalize Core absorbs HP + ATK + rules Core +1 cell irreversible
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.
Roadmap

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.

Micro-behaviors it looks alive Taste system it has preferences Word refresh no need to fight Min. loop
This roadmap was superseded by the "Radical Simplification" session on Apr 15, which restructured priorities around the element cycle + semantic identity framework.
Design

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.
  • Needs triple: hunger → craving → curiosity. Drives early/mid/late gameplay.
  • 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).
Design

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.

WORD DEVOURER Feed words. Raise life. 1. DISCOVER Fire Tree Moon 2. FEED Moon 3. ... ? What will yours grow into? Fire Tree Moon Light Stone Snake Poison Supercell AI Innovation Lab 2026
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.
Playtest

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.
Design

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.
Design

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).
Build

P1: Element System Data Layer

Implemented the element + semantic identity data layer in one session. Data model shifted from numeric stats to elemental identity.

  • WuxingElement.cs — 5-element enum, relationship types enum, synergy/conflict cycle utilities, relationship calculator.
  • 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.
  • CombatManager simplified — 12 hardcoded rules cleared. Shell compiles but inert.
  • 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.
Build

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.
Week 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

PIVOT 12 Direction Shift Combat → Nurture DESIGN 13 Full Blueprint v12 + God Hand + SDF Shader TEST 14 First Playtest ✓ Crafting hooks ✗ Combat distracts RETHINK 15 Framework Element Cycle + Semantic Identity BUILD 16 Core Loop Drag-Feed + AI

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.

Layer 1: Element Cycle (Grammar) 5 elements, 2 relationship cycles. Players learn the rules within a few feedings. Wood Fire Earth Metal Water Wood... (synergy cycle) Layer 2: Word Semantics (Vocabulary) AI-driven micro-content. Same element relationship, different words = different outcomes. e.g. Fire+Tree vs Fire+Grass — both synergy, but tree burns slowly, grass flares Layer 3: Creature Identity (Consumed Words) Words ARE the creature. No stat abstraction layer. Snake + Fire + Poison = 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
Long
sessions
Multiple creatures element relationships bonding / rivalry / breed offspring

Core Game Flow (Apr 16 lock)

Hatch Pick first word = core element Feed (6-8 words) Drag to mouth → devour Accepts everything Evolve AI generates form + personality + likes Keep Feeding Now picky! Has likes and dislikes Excretion New word (via /fuse) → hungry Preference Choice At word #3 and #5 Hunger Don't feed → shrink / lose words Key Simplifications All words ATK=2, HP=4 (uniform) • New words only from excretion • No player personality choice (AI decides) • Element type is the only differentiator

Build Status

P1: Feed + Excrete
60%
P2: Evolution
12%
P3: Alive Feeling
0%
P4: Multi-creature
0%

Next Week

1 Finish P1: Feed + Excrete Loop
AI-generated excretion words (/fuse), hunger state + shrink mechanic, preference choice nodes at word #3 and #5.
2 P2: Evolution
~6-8 words triggers evolution. AI generates new body plan (serpentine/biped/quadruped/blob), personality, and food preferences. The big milestone.
3 Grid → Free Movement Refactor
Free world movement + internal local grid. Creatures move continuously instead of chess-piece hops. Required for post-evolution body plans.
R&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 game scene before spine migration
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

Everything is Crab evolution roguelite • affinity feedback loop • additive visual stacking • pick at every few levels = Five Elements is our affinity flOw (Jenova Chen) position-history worm • head MoveTowards target • body samples head history • no hinges, no physics = locomotion tech A Tomodachi Life quirks, not stats • walk / greet / catchphrase • zero mechanical impact • pure bond aesthetic = parallel to evolution
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.
Build

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.
Build

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.

Verlet segments with envelope overlay
Debug + envelope together — raw Verlet nodes visible through the smin surface
Pure envelope blob with chibi face
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.
  • VerletBubbleSay(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 headingalignToHeading + 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.

BodyLimbs centipede mode with spine thickness
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.
Milestone Playtest 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

Feed word Q: cycle 14 words creature says name 3 growth options spine / head-limbs / spine-limbs thickness / head-mass hover=pop, click=choose Body changes BodyLimbs param +1 poof + rebuild Feed again loop continues creature accretes

Five Axes of Growth

Five orthogonal dimensions of BodyLimbs become five player-facing choices, never mixed:

  • SpineLengthserpent: extend spine by one node
  • HeadLimbscrab: +1 head limb
  • SpineLimbscentipede: +1 spine limb pair. Auto-adds a spine node if none exists.
  • Thicknesschunky: bump spineThickness one tier (chunkier torso)
  • HeadMassblobby: +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.
Week 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.
PARTIAL Spawn food substrate grows it LIVE Approach sense · head-seek LIVE +1 Color grow body = food diary PLANNED Evolve fork AskChoice at milestone PLANNED AI moss-stone Name + diary AI flavor · collectible
META-LOOP — HOW THE ECOLOGY EXPANDS PLANNED

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.

Evolved creature gains an ability helps keeper tend New substrate unlocked or upgraded grows “moon-quartz” New food type feeds rarer evolution each loop → richer tank

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

R&D 17 Body Sandbox spine + limbs plan BUILD 18 Verlet + Head-Seek locomotion works BUILD 20 Envelope + Face SDF smin + chibi MILESTONE 21 Phase A MVP Feed→Choose→Grow PIVOT 22 Word → Food grid dropped v13 doc BUILD 23 TerrariumScene substrate + food

Act 1 — Body Gets a Topology (Apr 17–21)

  • Problem: grid-cell blob — no addressable parts, couldn’t point at "segment 3"
  • Fix: Verlet skeleton + flOw head-seek + envelope SDF + chibi face
  • 5 growth axes cover serpent / crab / centipede / chunky / blobby
  • Phase A MVP ran: feed → 3-choice bubble → body visibly mutates
? ? Bag of cells no addressable parts Apr 17–20 head spine limbs Verlet skeleton every node addressable 5 GROWTH AXES serpent crab centipede chunky blobby

Act 2 — Grid Gets Replaced (Apr 22–23)

  • Playtest: "fusion is neat, but what’s it for?" — same note as Week 3
  • Insight: abstract-word feeding was a workaround to stuff AI into the loop
  • Three pivots once the thread unravels: word → food, god hand → keeper, grid → vivarium
  • Per-bite quiz dropped too: every bite paints the body silently; AskChoice reserved for evolution forks
“The fusion is neat… but what’s it for?” — playtest, again word-feeding was an AI workaround not a naturally fun verb A word → food god hand → keeper grid → vivarium

What Survived, What Got Cut

Before: grid-based Word Devourer scene
Before — grid world, word bar, combat HUD
After: TerrariumScene build, April 24 — multi-colored creature in single-screen tank with substrates
After — TerrariumScene (Apr 24 build): color-diary body, substrate obstacles, drag-food

Cut / Shelved

Grid worldtiles, spawns, zones
Combatenemies, HUD, managers
Word barbottom DragFeed strip
Per-bite quiz3-choice every feed
Abstract words"feed MOON"
"Workarounds to justify the AI."

Kept / Repurposed

Body stackVerlet + BodyLimbs (5 axes)
EnvelopeSDF smin shader
Face + bubblechibi, speak, AskChoice
5 Elementspromoted to grammar
AI rolefood name + flavor
"A tank the keeper tends."
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.

MOON abstract word "reads like a riddle" becomes "moonberry" AI sensory object "reads like a thing" legible without text creature can react AI AI gets honest job food diary collectible
  • 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.

newborn 2 basic foods evolve mature more foods, prefs sharpen many evolutions requires lineage (stone / crystal path) eat diamond long-term goal
  • 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

Empty terrarium under a lamp cone with glowing particles and one small creature
The stage: single-screen tank under a lamp cone. Glowing motes = ambient food cues.
Terrarium with a plant growing on a rock substrate and two small creatures
Populated: a substrate (rock + growing plant) produces food; creatures live in the tank.
Evolution loop sketch: creature eats, grows, branches at evolution forks
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.

FIVE ELEMENTS threaded through every step below Substrate “moss-stone” Food +1 Eat + grow body = color diary ~ N bites ~ Evolve pick a fork loop continues in new form AI names & flavors food player = keeper (not drawn — TBD)
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

1 Evolution fork wiring
Bite counter → AskChoice, every N bites.
2 AI food naming
New endpoint, cached per substrate.
3 Tank visuals + visible substrate
Glass frame, lamp cone, substrate on-screen.
4 Player layer (first pass)
Intro ritual + recipe book. Fills the ghost in the loop diagram.
Pitch

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
01 The game
02 The pivots
03 The loop
04 Three verbs
05 AI
06 Who it's for
07 Outlook
08 Questions
Week 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.

Current state

Current build — TerrariumScene with substrate, food patches, creature
Apr 29 build — substrate-anchored food patches, 2.5D camera, mood-reactive face
  • Substrate, food patches, eat-and-grow — running
  • 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

BUILD 24 Feed = hold click-to-summon DESIGN 27 Direction sealed drop 五行 · Flow ref DESIGN 28 AI cognition + Pitch teach-to-speak loop MILESTONE 28 Food = Verlet patch substrate-anchored MILESTONE 29 Language MVP teach · babble · mood + playtest NEXT 30 Backend reorg + playtest fixes

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.

Food patch just starting to grow on substrate
Just starting to grow
Food patch fully grown — particles dangling from anchor stone
Fully grown
Moss spine particles → spine length +1 Berry cluster particles → body count +1 Fungi limb particles → head limb +1

Same skeleton, different diets — the silhouette records what was eaten:

Various creature shapes — serpent, chunky, crab, centipede — from different food mixes
Creatures grown from different food mixes

The loop

Three of four quadrants are running in code. Poop → new substrate is still on paper.

SUBSTRATE stones, wood, soil LIVE FOOD PATCH grows on substrate LIVE spine / cluster / limbs EATS & GROWS + speaks · + reacts LIVE POOP becomes new substrate PLANNED YOU the keeper TEACH (NEW)
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.

Chants of Sennaar — glyph notebook with unknown symbols
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.
YOU teach a word for it: "Moss" T+click on patch AI DETERMINISTIC Vocabulary + familiarity scores RESTRICTED GEN /babble /wonder tier-based templates CREATURE eat moss. good. happy mood
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.

happy squint + flat smile excited wide eyes + round O curious tall eyes + small "o"
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.

Fix: bump duration, log SetMood calls, crank deltas.
CRACK 02
Utterances feel hollow

"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

moss
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?

Week 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.

Current state

Apr 29 build — placeholder substrates, basic moss rectangles, flat lighting
Apr 29 — placeholder stones, rectangular moss, flat lighting, no atmosphere
May 8 build — atmosphere with light shafts, dust, organic substrates, matte porcelain shading
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

FOUNDATION 30 Lang MVP base teach · babble · mood MILESTONE 3 Pou-style hum Mumble + companion voice PLAYTEST 4 Tutorial + playtest 12-step + 1:1 MILESTONE 5 Singing + atmosphere backend Path A MILESTONE 7 Text Animator + art typewriter · wiggle · locked DESIGN 8 Demo arc locked 3 bottles + ritual NEXT 18 Demo day 10 days out

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.

SUBSTRATE stones, wood, soil LIVE FOOD PATCH grows on substrate LIVE EATS & GROWS + speaks · + sings LIVE POOP → BOTTLES 3 channels: substrate / food / tank DESIGNED YOU the keeper
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.

SUBSTRATE 5 poop → new tile FOOD 5 poop → grow → release TANK 10 poop → widen 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.

v5 prompt mockup — matte porcelain stones, frosted-sea-glass driftwood, soft directional light
Mockup — v5 prompt: form preserved, material swapped. Stone = matte porcelain, driftwood = frosted sea glass
In-engine build with locked art direction applied: organic substrates, soft contact shadows, light shafts, sand caustics
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.