LANES/PLAN.md — verdict, GODVERSE pipeline architecture, shared contracts, 3GOD security note LANES/LANE1-*.md — Godot: grab/slide/smash record ritual + find-the-misfiled-disc mode (owns game/) LANES/LANE2-*.md — meshgod cell-fracture stage + Destroyulator prop batch -> 3GOD (owns ~/meshgod) LANES/LANE3-*.md — thriftgod-based web smash toy, Rapier physics, 3GOD props (owns web/) LANES/KICKOFF.md — per-lane opening prompts + collision-safety rules Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3.3 KiB
DESTROYULATOR — Build Plan & Lane Specs
Fable's review + plan, 2026-07-08. Three parallel lanes over one shared asset pipeline.
The verdict
Destroyulator plugs into the GODVERSE pipeline you already have, it does not reinvent it:
meshgod ──makes──▶ 3GOD depot ──serves──▶ { Godot game, web toy }
(text→GLB) (digalot.fyi/3god) (two front-ends, one universe)
- Engine question, settled: Godot stays the shippable game (native Apple Silicon, Jolt, exports Win/Mac/Linux off the M3). Three.js is NOT a port of the same game — it's a separate, shareable web toy built on thriftgod's live first-person interior code, wired to the same props. Different product, same universe. Both consume the same pipeline, so the expensive part (assets) is built once.
- Assets are hybrid-cloud, not free: meshgod = OpenRouter + fal.ai (~$0.10–0.55/asset, 1–2 min). Budget per batch; don't assume infinite regeneration.
The three lanes (fire in parallel)
| Lane | Repo / dir it OWNS | Deliverable | Depends on |
|---|---|---|---|
| 1 — Godot: record ritual | game/ (this repo) |
Grab→lift→slide-disc→smash mechanic + "find the misfiled disc" mode | nothing (starts now) |
| 2 — Asset pipeline | ~/Documents/meshgod (separate repo) |
Cell-fracture stage + Destroyulator prop manifest → 3GOD | nothing (starts now) |
| 3 — Web smash toy | web/ (this repo, new dir) |
thriftgod-based FP smash demo, 3GOD props, Rapier physics | 3GOD (read-only) |
Scope rule (prevents collisions): each lane writes ONLY inside the dir it owns.
Lane 2 delivers assets to 3GOD + meshgod outputs; Lane 1 pulls approved GLBs into
game/assets/ itself (Lane 2 never writes game/). Lane 3 fetches from 3GOD at runtime.
Shared contracts (every lane obeys these)
- GLB convention: glTF Y-up, 1 unit = 1 m, origin at floor-center, textures embedded, decimated to tri budget. (meshgod already emits this.)
- Fracture format: an intact
<name>.glbPLUS a sibling<name>.fractured.glbwhose root's direct children are the chunk meshes (each aMeshInstance/mesh node namedchunk_00…chunk_NN, origin at its own centroid, in the intact model's local space). Consumers instance it and turn each chunk into a rigid body. Defined by Lane 2, consumed by Lanes 1 & 3. - Depot: 3GOD at
https://digalot.fyi/3god—GET /api/listreturns the shelf; GLBs fetchable by slug. Web lane reads live; game lane commits offline copies.
⚠️ Pre-req / ops risk (owner's call — NOT auto-fixed)
The review of 3GOD found the public digalot.fyi/3god instance running in open mode
(GOD3_OPEN=1) — write endpoints (upload/delete/fetch) are reachable unauthenticated,
plus an SSRF hole in /api/fetch (server.py:173, reads file:// + cloud metadata).
Lane 3 only reads the depot, so it's not blocked — but before leaning on 3GOD as public
game infrastructure, close open-mode + allow-list /api/fetch schemes/hosts. This is a
production box; flagged for you to action, not silently changed.
Sequencing note
All three start immediately. Lane 2's fracture output upgrades Lanes 1 & 3 (real shard-by-shard destruction) but neither is blocked waiting for it — both already work with primitive/auto-collider fallbacks. Integrate fractured assets when they land.