Ship Designer: procedural spaceship design tool (epic cb-81o) #2

Merged
forgejo-admin merged 6 commits from ship-designer into main 2026-07-04 01:53:51 +00:00

The complete Ship Designer for Celilo Blast — design spaceships as data, randomize cool ones, tweak every field, and save to localStorage. Built on the merged scaffold (cb-81o.1, PR #1).

What's in it

  • cb-81o.2 — ShipSpec + PixiJS renderer (src/ship/spec.ts, renderer.ts): the full genome (hull silhouette/symmetry, cockpit, wings, engines w/ glow, weapons, greebles, palette, seed) and a Pixi renderer drawing it with circuitry detailing + glow.
  • cb-81o.3 — Randomizer (src/ship/randomizer.ts): seeded PRNG + constrained generator (symmetry, harmonized palettes) → the 🎲 button. Same seed reproduces the same ship.
  • cb-81o.4 — Save/Load (src/storage/shipStore.ts, Gallery.tsx): localStorage persistence + gallery (load/delete/duplicate) + export/import JSON.
  • cb-81o.5 — Tweak panel (src/components/ControlsPanel.tsx): live controls bound to every ShipSpec field; edits re-render in real time.

Notes

  • 11 files, +910/−52. All four merged into the ship-designer integration branch (per-bead reviewed acceptance criteria met; gates green at each step).
  • Ships are renderer-agnostic specs — the same ShipSpec + renderer drop straight into the game later.

Merging this completes epic cb-81o.

🤖 Generated with Claude Code

The complete **Ship Designer** for Celilo Blast — design spaceships as data, randomize cool ones, tweak every field, and save to localStorage. Built on the merged scaffold (cb-81o.1, PR #1). ## What's in it - **cb-81o.2 — ShipSpec + PixiJS renderer** (`src/ship/spec.ts`, `renderer.ts`): the full genome (hull silhouette/symmetry, cockpit, wings, engines w/ glow, weapons, greebles, palette, seed) and a Pixi renderer drawing it with circuitry detailing + glow. - **cb-81o.3 — Randomizer** (`src/ship/randomizer.ts`): seeded PRNG + constrained generator (symmetry, harmonized palettes) → the 🎲 button. Same seed reproduces the same ship. - **cb-81o.4 — Save/Load** (`src/storage/shipStore.ts`, `Gallery.tsx`): localStorage persistence + gallery (load/delete/duplicate) + export/import JSON. - **cb-81o.5 — Tweak panel** (`src/components/ControlsPanel.tsx`): live controls bound to every ShipSpec field; edits re-render in real time. ## Notes - 11 files, +910/−52. All four merged into the `ship-designer` integration branch (per-bead reviewed acceptance criteria met; gates green at each step). - Ships are renderer-agnostic specs — the same `ShipSpec` + renderer drop straight into the game later. Merging this completes epic **cb-81o**. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Full ShipSpec type (hull/cockpit/wings/engines/weapons/greebles/palette/seed)
and renderer-agnostic renderShip(spec, container?) drawing silhouette hull,
mirror/radial symmetry, wings, cockpit, glowing engines, and seeded circuitry
greebles. Neon bloom via a blurred additive layer (core BlurFilter, no new dep).
mulberry32(seed) keeps renders reproducible. Canvas renders DEFAULT_SHIP.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Lift the current ShipSpec into App state so it drives the canvas. Toolbar
gains Save (named), Export, and Import; Gallery lists saved ships with
thumbnail and load/duplicate/delete. Ships (spec + PNG thumbnail) persist to
localStorage; export/import round-trips a spec as JSON.
Lift ShipSpec state into App; ControlsPanel renders one control per field
(sliders, selects, color pickers, checkbox, hardpoint add/remove) and every
edit re-renders the Pixi ship in place via renderShip(spec, container).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
celilo/celilo-blast!2
No description provided.