# BLOBBO — Game Design Document

**v0.1 — draft for John's review, 2026-07-17.**
Raw idea capture: [docs/IDEA.md](docs/IDEA.md). Everything below is proposed-for-review;
⚠️ marks decisions that need John's sign-off before Opus 4.8 execution lanes are written.

---

## 1. Pitch

**Fall Guys × Splatoon × Micro Machines.** Up to dozens of friendly white blobby
dudes race giant absurd Rube-Goldberg obstacle courses. Paint cannons along the
course spray colour — whatever sticks to your body is your loadout: **the relative
% coverage of each colour is your buff kit.** The course paints you; being painted
changes how you race the course.

**The invention nobody else has:** paint coverage measured *on your own body* as
the skill system, inside a physics-comedy racer where the course is one giant
player-triggered machine.

## 2. Pillars

1. **Comedy through physics** — soft wobbly blobs, out-of-scale props, telegraphed
   chain reactions. Funny beats fair; fair beats random.
2. **Paint is everything** — identity, buffs, weight, size, strategy all read off
   your painted body. No HUD-first design: your state is visible on you.
3. **Readable chaos** — every contraption telegraphs ~0.5s before it fires.
   Getting flattened must feel earned/funny, never random (random = ragequit).
4. **One goo universe** — players are goo; the world fights back with other goo
   (paint, honey, oil, mud, water, bubbles). Viscosity playground, not gimmick pile.

## 3. The Blobbo

Friendly white soft-body blob — Michelin-man silhouette, fewer rolls, big eyes.
Starts every race clean/white. Accumulates paint as a visible skin layer.
Soft-body wobble is cosmetic (shader/spring jiggle over a rigid physics proxy —
see §9); the comedy is in the wobble, the determinism is in the capsule.

## 4. Core loop

Race an obstacle course → paint cannons/zones spray colour → manage your coverage
mix (seek, avoid, cleanse, smudge) → coverage grants buffs that change traversal →
buffs + weight + size interact with the course machinery → finish placement →
next round / next course.

## 5. Feature list

Tiers: **[MVP]** first playable · **[V1]** launch · **[V2]** post-launch/stretch.

### 5.1 Paint system (the core)
- **[MVP]** 7 main colours; per-player texture-space coverage mask; live % per colour.
- **[MVP]** Buff activates at threshold (⚠️ proposal: ≥20% coverage), strength
  scales with %; dominant colour drives visual/audio identity.
- **[V1]** **Secondary blends**: two adjacent colours both ≥20% → blend effect
  replaces/joins the pair (see §6 table). Way more permutations, mastery =
  deliberately building a mix.
- **[V1]** **Super-state**: ≥70% one colour = amped version of the buff **with a
  drawback** — you glow, you're a target, one detergent bubble wrecks you.
- **[MVP]** **Cleansing**: detergent bubbles on course (full or partial cleanse ⚠️),
  water rinses gradually.
- **[V1]** **Contact smudging**: bumping other blobs *transfers* paint both ways
  (⚠️ transfer vs. plain removal — transfer is funnier and more strategic).
- **[V2]** Paint flaking: growing stretches/cracks paint off in pickup-able flakes.

### 5.2 Weight (paint = mass)
- **[MVP]** Coverage adds mass: heavy blobs sink pressure plates, tip see-saws,
  wobble slower, launch shorter; clean blobs are light and flingable.
- **[MVP]** Detergent bubbles double as tactical weight-drops.
- **[V1]** Buoyancy inversion underwater: clean floats (fast surface lane),
  painted sinks (slow bottom lane, better pickups).

### 5.3 Scale (environment scale as mechanic)
- **[V1]** Colour-driven size: ⚠️ purple = grow, pink = shrink (see §6). Big =
  heavy/blocks/easy target; small = pipe shortcuts/hard to hit/flung far.
- **[V1]** Paint dilution: growing increases surface area → your % coverage drops.
  Size trades directly against your buff loadout.
- **[V1]** Scale zones: shrink sections racing *inside* the machine (marble runs,
  domino chains, gear guts); giant sections stomping over a model town while tiny
  racers dodge your feet.
- **[V2]** Players as course furniture: a giant blob is a platform/counterweight
  for tiny blobs — the machine incorporates the players.

### 5.4 Course-as-machine (Rube Goldberg)
- **[MVP]** Contraption toolkit: see-saws, boots, buckets, conveyors, dominoes,
  gears, catapults, fans — **triggered by players, not timers**. Everyone upstream
  rigs the course for everyone downstream.
- **[MVP]** Telegraph rule: every chain reaction winds up visibly ~0.5s before firing.
- **[V1]** Colour-keyed machinery: mechanisms respond only to blobs of their
  colour (green valve needs a mostly-green blob → shortcut opens for them + any
  tailgaters). Emergent alliances, zero UI.
- **[V1]** Persistent course state: triggered contraptions stay tripped/reset
  slowly; sprayed paint lingers on surfaces as slip/grip zones. Back of the pack
  races a messier course — chaos as natural rubber-banding.
- **[V2]** Gravity switches as contraption outputs: a lever flips gravity for a
  zone; heavy blobs slam, light blobs drift. Ceiling-runs through upside-down rooms.

### 5.5 Physics zones & surfaces
- **[V1]** **Underwater**: buoyancy lanes + gradual paint rinse (shortcut costs loadout).
- **[V2]** **Zero-g**: momentum pinball; paint floats as wobbly globs mid-air —
  fly through one to wear it.
- **[V1]** **Honey**: slow but sticky — climb walls/ceilings. Traversal tool.
- **[V1]** **Oil**: fast, no steering, luge; fire-buffed blob ignites a trail
  behind them (emergent trap-laying).
- **[V1]** **Mud = anti-paint**: coats brown, masks colours, suppresses buffs until
  washed — makes water double-edged.
- **[MVP]** Surface material framework (friction/stick/flow per material) so all
  of the above are data, not code.

### 5.6 World & tone
- **[MVP]** Out-of-scale everyday settings (Micro Machines DNA): giant kitchen
  tables, gardens, bathtubs, desks; comically huge and tiny props.
- **[V1]** Course sections themed as rooms of one absurd oversized house.

### 5.7 Format & multiplayer
- **[MVP]** Local-feel party size first: 8-player online rooms, single race.
- **[V1]** 30–40 player fields, multi-round elimination show (Fall Guys format).
- **[V1]** **Server-authoritative simulation + anti-cheat from day one** — cheating
  is what soured Fall Guys; non-negotiable design constraint, not a patch.
- **[V2]** Spectator/replay clips (the game is a clip generator — lean in).

## 6. Draft colour/buff table ⚠️ (the big review item)

7 mains on a wheel; adjacent pairs blend. All names/effects are proposals.

| Colour | Buff | Effect | Drawback / texture |
|---|---|---|---|
| **Red** | BURN | Speed-boost flame trail; ignites oil; melts wax/ice barriers | Slowly burns itself off (self-consuming coverage) |
| **Orange** | BOUNCE | Rubberized — higher bounces, contraptions launch you further | Harder to stop precisely |
| **Yellow** | ZAP | Trigger colour-keyed machinery at range; static bump-stun | Attracts to metal (yanked toward rails/magnets) |
| **Green** | GRIP | Sticky feet — immune to oil/ice slip, climb like honey, hold on through gravity flips | Slower top speed |
| **Blue** | SLICK | Waterproof (no rinse), swim jets, leaves a slippery trail | Your own trail is slippery to you too |
| **Purple** | MEGA | Grow big + heavy — plates, see-saws, shoving, blocking | Paint dilutes as you grow; huge target |
| **Pink** | MINI | Shrink small + light — pipe shortcuts, hard to hit, mega-flung | Can't trigger plates; gusts/fans own you |

Example blends (adjacent, both ≥20%) — final list needs a full pass:
- Red+Orange **METEOR** — flaming cannonball launches, smash light barriers.
- Orange+Yellow **PINBALL** — each bounce zaps nearby machinery.
- Yellow+Green **MAGNET** — stick to metal surfaces/rails, ride them.
- Green+Blue **SNAILGOD** — climbable slime trail others can also use.
- Blue+Purple **TSUNAMI** — heavy water cannonball; splash rinses nearby players.
- Pink+Red **ROCKET** — tiny + flaming = fastest projectile in the game.

## 7. Courses (initial set sketch)

1. **Breakfast Rush** [MVP greybox] — giant kitchen table; toaster launchers,
   cereal avalanches, milk river (water zone), butter pat (oil).
2. **The Machine** [V1] — you shrink and race *through* the Rube Goldberg engine
   that powers the house: marble runs, dominoes, gears.
3. **Bathtime** [V1] — bathtub ocean, soap-bubble cleansers everywhere, honey
   (shampoo) walls, mud garden outside the window.
4. **Model Village** [V2] — grow-shrink alternating; giants stomp the village
   while minis race through it.

## 8. Asset plan (MODELBEAST — local, free)

- **Concept wave (queued now)**: blobbo character sheet, painted variants, course
  vistas, contraption props, paint cannon, bubble zone, logo explorations —
  `flux_local` on the m3ultra farm.
- **Mesh wave (after concept review)**: hero props + blobbo base mesh via
  image→GLB (`hunyuan3d_mlx` / `trellis_mac` / `sf3d`), Blender finish on ultra.
- Blobbo is a **bespoke simple mesh** (sphere-blob + blend shapes), not a
  character_kit humanoid — the 2-base-mesh fleet rule doesn't apply, but clips/
  rigs stay out of web builds per licensing zones (all generated = 🟢 web-ok).
- Paint itself is **procedural** (shader + splat decals), not generated art.

## 9. Tech stack ⚠️ (recommendation, needs sign-off)

**Recommend: web-first, three.js + Rapier (WASM), server-authoritative Node room
server, docker-deployed to the games VPS (partly.party) like the other games.**

- Fits the existing pipeline: GLB assets, browser distribution, docker deploys,
  MRPGI/character-kit tooling knowledge.
- **Soft-body is faked**: rigid capsule/sphere physics proxy + cosmetic jiggle
  (vertex springs/shader). Real soft-body × 40 players × netcode is not shippable;
  fake wobble is indistinguishable in comedy terms.
- **Paint = Splatoon technique**: per-player UV-space mask texture, splats
  rendered into it, GPU mip/reduction pass → live coverage %. Cheap, exact.
- Server runs headless Rapier as authority; clients interpolate. MVP at 8 players,
  architecture sized for 40.
- **Decision gate**: if browser perf caps out at M1 milestone, port call to
  Godot 4 (native) — flagged early, evaluated with data.

## 10. Milestones

- **M0 — Playground**: one greybox course, blob movement + jiggle, camera. Feels funny to walk.
- **M1 — Paint MVP**: splat pipeline, coverage %, 3 colours + buffs (Red/Green/Blue), bubbles, weight. *Decision gate on stack.*
- **M2 — The Machine**: contraption toolkit, telegraphs, surface materials, Breakfast Rush course.
- **M3 — Multiplayer**: 8-player rooms, server authority, smudging, race format.
- **M4 — The Show**: all 7 colours + blends, scale system, 2nd course, juice/VFX/audio, 40-player test.

## 11. Opus 4.8 execution lanes (preview — full instructions after this doc is approved)

- **Lane A — Engine/feel**: bootstrap, blob controller, camera, jiggle, greybox playground.
- **Lane B — Paint**: splat pipeline, coverage compute, buff/threshold/blend framework.
- **Lane C — Machine**: contraption toolkit, triggers/telegraphs, surface materials, gravity/zones.
- **Lane D — Netcode**: room server, authoritative sim, interpolation, anti-cheat posture.
- **Lane E — Art**: MODELBEAST asset flow → GLB integration, paint shader look-dev, VFX.

Lanes A–C can start in parallel worktrees; D after A stabilizes the sim contract;
E continuous. Each lane gets its own instruction doc + acceptance criteria.

## 12. Risks

1. **Netcode × physics** — the classic killer. Mitigation: fake soft-body, authoritative server, small MVP player count.
2. **Readability under chaos** — mitigation: telegraph rule as a pillar, paint identity visible on bodies.
3. **Scope** — this doc is huge. Mitigation: tiers are real; MVP is one course, 3 colours, 8 players.
4. **Cheating** — server authority from day one; never trust client physics.

## 13. Open questions for review ⚠️

1. Buff table (§6) — right 7? right effects? purple/pink as the size pair?
2. Thresholds: 20% activate / 70% super — feel right?
3. Smudge = transfer (steal paint) or removal only?
4. Detergent bubbles: full cleanse or dominant-colour-only?
5. Tech stack sign-off (§9) — web-first OK?
6. Name check: BLOBBO vs. globbo (folder says globbo, repo says BLOBBO).
