7.5 KiB
7.5 KiB
memory — JANKENBOTS
Durable memory for this project. Read at session start, update before session end. Date format: YYYY-MM-DD. Deep design detail lives in DESIGN.md (the full record carried over from the idea's plan.md); this file is the distilled decisions + live work.
Location: this project lives at
/mnt/f/jankenbots/jankenbots(WindowsF:\jankenbots\jankenbots) so the Unity Editor (Windows-only) and the git repo/docs share one folder.~/claude/projects/jankenbotsis a symlink to it. Work from either path. Name: the game is JANKENBOTS (working title was JANKENSTEIN; the archived idea folder keeps the old name at~/claude/archive/ideas/jankenstein/).
Decisions & rationale
- Concept (locked). ~25-player friendslop build-brawl: teams build a janky physics robot from themed scrap; each teammate pilots one functional part (pillar #6 — "you build your control scheme, not a robot"); death → free-roaming ragdoll gremlin. 8 design pillars in
DESIGN.md. - Engine: Unity (2026-07-10). Decided after a 3-angle netcode/prior-art study. The physics-party genre is overwhelmingly Unity (Fall Guys, Gang Beasts, Human Fall Flat, PEAK, Lethal Company, Party Animals, Stumble Guys, Trailmakers, Besiege, Robocraft); the two UE physics-heavy titles both swapped UE physics for Bullet. An earlier Unreal-MCP-tooling edge was correctly overridden. The defining risk is networked physics at ~25-player scale — no shipped game occupies that quadrant.
- Control feel v0.1 — driving = symmetric (2026-07-10). Each locomotion part = one pilot applying literal force ("you are the left tread") — the only model that generalises to arbitrary scrap contraptions and the one that keeps pillar #6. Tread pilot verbs: snap-to-cruise throttle (both slam forward = easy straight; coordination lives in the in-between), lock-pivot (called-play turns), passive lean (nobody idle). Asymmetric (throttle/steer split) held as the fallback if the prototype groans.
- Weapons = three-body call-and-response (2026-07-10). A weapon pilot perturbs the drivers' world → turn simultaneous chaos into rhythm: wind-up telegraphs a brace, a braced bonus makes drive+strike a combo, weapon doubles as engine/counterweight. Generalises to 5 archetypes — Punch / Grinder / Grip (later tier) / Guard / Passive. The weapon mix is a build-time chaos dial (over-building self-punishes = pillar #6 made mechanical).
- Team size & lobby math (2026-07-10). Team 3–5 (3 = smallest full driver+driver+weapon triangle; 5 = coordination/budget ceiling); lobby ≥2 teams; sweet spot 5 teams of 5. Unequal sizes balanced by a flat build budget (small team = concentrated & nimble; big team = distributed & tippy → equal power, different character), reinforced by physics (bigness = top-heavy, self-limiting) + coordination tax; matchmaking buckets pre-made friend groups & prefers equal sizes, NPC-fills the rest. No living "roamer" — everyone is in the bot; off-bot = gremlins (dead) only. Style vote needs ≥3 teams (2-team lobbies use fight-result + spectator vote).
- Prototype netcode = Unity NGO + Relay, host-authoritative (2026-07-10). Chosen for the throwaway first prototype (free, first-party, friends join by code, no port-forwarding). This does NOT commit the final architecture — server-authoritative state sync vs Photon Quantum deterministic lockstep is still deferred until the game is proven fun.
Open questions / TODOs
- Build Milestone 1 — networked shared bot, each player one tread (see
docs/prototype-plan.md). The immediate work. - Project location decided — unified on
F:\jankenstein(git + Unity + docs together), symlinked from~/claude/projects/jankenstein. Unity.gitignore/.gitattributesin place. - Create the Unity project in
F:\jankenstein(Unity LTS) and add the NGO + Relay + Lobby packages. - Stand up the Unity MCP — config is seeded (
.mcp.json,docs/mcp-setup.md); remaining host-side steps: install the CoplayDev package, Start it in HTTP mode, open the WSL bridge (0.0.0.0 bind or portproxy on :8080), then verifymcp__unity__*tools connect from WSL. - Netcode architecture (deferred, the real risk) — dedicated server-authoritative state sync (Robocraft 2 blueprint) vs Photon Quantum lockstep (Stumble Guys precedent). Decide after the fun is proven + the 25-player physics spike. Netcode target ≈ 25–30 primary rigid bodies + gremlins/debris.
- The 25-player physics/netcode spike — two ~30-joint bots colliding at arena scale, ≥100 ms latency, min-spec. The make-or-break gate before scaling up.
- Remaining design questions (detail in
DESIGN.md): build-coupling tightness, hidden per-player agenda, at-scale voting, part taxonomy, scavenge-contest rules, art style, progression (cosmetic-only), final name (working title JANKENSTEIN; alts BODGEBOTS / SCRAPYARD SCRUM / CLANKERS / RUSTBUCKETS / JALOPY WARS).
Session log
2026-07-10
- Promoted from
ideas/jankensteinto a real project. Scaffolded the WSL-side project home (this repo): filledCLAUDE.md, seeded thismemory.mdfrom the idea'splan.md, carried the full design record over asDESIGN.md, addeddocs/prototype-plan.md. Idea folder archived toarchive/ideas/jankenstein. - Decided to build a basic networked prototype first (user wants to test the coordination feel with real friends — local split-screen won't capture the social/voice-chat core). Stack: Unity NGO + Relay, host-authoritative, throwaway netcode. Milestone 1 = one shared bot, each player one tread.
- Consolidated the project + seeded Unity MCP config (
.mcp.json→unityHTTP server at172.27.208.1:8080/mcp,.claude/settings.local.json,docs/mcp-setup.mdrunbook), Unity.gitignore/.gitattributes(no LFS yet). - Renamed JANKENSTEIN → JANKENBOTS and unified folders. User created the Unity project at
F:\jankenbots\jankenbots(named it jankenbots). Moved the seeded repo (git history + docs +.mcp.json) into the Unity project root so it's one folder; renamed the Forgejo repojankenstein → jankenbots+ updated the remote; re-pointed the symlink to~/claude/projects/jankenbots. Unity project is a fresh URP/Input-System template (hasAssets/,SampleScene,InputSystem_Actions). MCP status: bridge is up (host:8080reachable from WSL) but the MCP HTTP server behind it isn't answering aninitializeyet — user to confirm it's Started in HTTP mode on 8080 in the MCP for Unity window; then start a fresh Claude session from the project folder to load theunitytools. Next: verify MCP, then build Milestone 1.
External references
- Full design record:
DESIGN.md(this repo) — control feel v0.1, weapon archetypes, lobby math, tech direction, netcode prior art. - Prototype build-plan:
docs/prototype-plan.md. - Wiki (orientation): http://192.168.1.249:6876/projects/jankenbots
- Idea-phase history:
~/claude/archive/ideas/jankenstein/(original brainstormplan.md+ session logs). - Netcode prior art (Rocket League GDC talk, Fall Guys/Robocraft/Stumble Guys case studies, Gaffer On Games) — cited in
DESIGN.md→ References. - Unity MCP setup runbook:
docs/mcp-setup.md. Server = CoplayDev/unity-mcp in HTTP mode host-side; Claude (WSL) connects athttp://172.27.208.1:8080/mcp(.mcp.jsoncommitted). Bridge pattern mirrors the UE servers (host-side HTTP + host-IP). Not yet stood up — needs the editor + package installed.