# GigaSlop — project notes for Claude ## What this is Satirical AI-datacenter tycoon game. Web-first: TypeScript + Vite + PixiJS v8. Design doctrine: **the sim stays engine-agnostic** — `src/sim/` must never import from `src/render/` or `src/ui/` (a future Godot/Steam port swaps the renderer only). Fixed 10 Hz tick, deterministic (seeded rng in state, no Date.now/Math.random inside sim). ## Dev loop - `npm run dev` on :5173 (`.claude/launch.json` has the preview config). - The Browser-pane tab is usually `visibility: hidden` → RAF doesn't fire. The sim is pumped by setInterval on purpose; don't move it back into RAF. - `window.__giga` = debug handle {state, scene, place(), wire()} for JS-driven playtesting. Keep it working — automation depends on it. - All balance tunables live in `src/sim/balance.ts`. Tune there, nowhere else. ## Art pipeline (MODELBEAST) - `python3 tools/mb_gen.py [--only room|objects|slop]` regenerates art on the farm (queue http://100.89.131.57:8777, token from ~/Documents/backnforth/.env). Deterministic seeds from asset slug — same slug, same image. - Object sprites: flux_local → bg_remove_local (background:"transparent") → autocropped in place (PIL alpha-bbox, 8px pad). If you regenerate, re-crop. - Room/grid registration: `src/render/iso.ts` (TILE 82x41, ORIGIN 510,346) is hand-fitted to `public/assets/gen/room.png`. New room image = refit constants (toggle the Grid overlay to check). - Slop thumbnails are intentionally AI slop; titles in src/data/sloptitles.json (Ollama on m4pro was down at bake time; hand-authored — regenerate via tailnet Ollama when it's back if more are needed). ## Roadmap (agreed with John 2026-08-01) M1 art-forward Tier-1 slice (current) → M2 homelab tier + platform-decay treadmill (model tiers force retraining) → M3 VC mandates + hazards. Cut until earned: Tiers 3–5, immersion cooling, offshore ships, lobbying.