An authoring tool for Gun RNG content packs, built around the runtime's generative model: guns are never authored one-by-one — they're rolled at runtime from reusable pools. DesignRNG edits those pools:
- Library — the landing tab: reusable gun bases (chassis + snap points) and gun parts (geometry + stats + slot/style/group) as cards with live 3D snapshots, grouped by style.
- Modeller — a Blender/Blockbench-style cuboid CAD editor: transform gizmos (legal-angle rotation), face-resize handles, numeric inspector, cuboid CRUD, snapshot undo, and a snap-point editor (where each part type docks on a base, with a docking-preview ghost).
- Roll — sanity-check the pools: generate sample guns exactly the way the runtime rolls them (composed model + resolved stats via the Python sidecar).
Snap points/locations are the authored source of truth; the sidecar derives the runtime's
anchor_points/anchor_offset from them on save/export. Part types, styles, ammo, elements,
effects, and fire modes are authorable; gun types, part groups, and rarity data can be imported
from an existing schema-v3 pack while their native editor slices remain out of scope.
DesignRNG is the successor to gunModeller and the canonical modelling/authoring program. It currently emits compatible schema-v3 packs through a JSON-RPC Python bridge that reuses legacy gunModeller code; that dependency is transitional. DesignRNG owns schema v4 and its native model, validation, migration/report, fixtures, project assets, and export contract (ADR 0007).
Transition safety: that authority is not operational yet. Current export is an import-backed schema-v3 compatibility path; project-file v2 is not self-contained. PLAN P4.D0 now binds every project operation to the imported project/source identity and publishes only into a fresh target or an identity-valid DesignRNG-owned target after explicit confirmation. Cold, stale, source-modified, unmarked, or tampered destinations refuse before publication. P4.D1-D6 still have to remove the legacy dependency and make native projects/assets self-contained.
ADR 0008 makes identifier identity and final schema-v3 spelling DesignRNG-owned today: project-v2 preserves bare/
gunrng:/armsng:author spellings, while the staged pack writes declared local content and asset refs canonically asgunrng:before hashing.
- docs/CONTEXT.md — domain glossary (inherits gunModeller/Gun RNG terms).
- docs/adr/ — locked decisions:
- 0001 — reuse the Gun RNG wire contract.
- 0002 — superseded by 0005.
- 0003 — tech stack (Electron + R3F + Python export sidecar).
- 0005 — the generative pivot: no first-class guns; reusable bases/parts + snap points; the modeller replaces the aggregate studio.
- 0007 — DesignRNG owns authoring and schema v4; gunModeller is a legacy-v3 bridge only.
- 0008 — DesignRNG owns local alias identity and field-aware canonical schema-v3 staging.
- docs/research/ — source-backed research (stack, 3D editor patterns, drei API notes).
- gunModeller —
../gunModeller(legacy schema-v3 regression source; temporary bridge). - Gun RNG —
../../mods/Gun RNG(the Minecraft Forge runtime +docs/COMPATIBILITY_CONTRACT.md).