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>
60 lines
3.3 KiB
Markdown
60 lines
3.3 KiB
Markdown
# 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)
|
||
|
||
1. **GLB convention:** glTF **Y-up, 1 unit = 1 m, origin at floor-center**, textures
|
||
embedded, decimated to tri budget. (meshgod already emits this.)
|
||
2. **Fracture format:** an intact `<name>.glb` PLUS a sibling `<name>.fractured.glb`
|
||
whose root's direct children are the chunk meshes (each a `MeshInstance`/mesh node
|
||
named `chunk_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.
|
||
3. **Depot:** 3GOD at `https://digalot.fyi/3god` — `GET /api/list` returns 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.
|