Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 16 additions & 6 deletions docs/ROADMAP.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Sector Zero — Master Roadmap

**Updated 2026-07-17** (G0 Atlas implemented; final manual closure playtest pending).
**Updated 2026-07-18** (G0 Atlas merged; final manual closure playtest pending; M3 asset lane specified).
This is the single entry point. Every other doc is either DONE, absorbed here, or linked
below with its authority noted.

Expand Down Expand Up @@ -79,7 +79,12 @@ DOOM Phase 1-2 regen at scale via the proven pipeline, in visibility order: 13 s
enemies → 8 bosses → FP/boarding billboards (8-yaw via TRELLIS.2→headless Blender + the
engine yaw-selector enabler, spec 2026-07-05 §5.4) → hub interior tilesets/props (feeds
M3) → backgrounds. Style LoRA once ~30 accepted. Runs alongside systemic work —
different lane, no file conflicts. **Spec status: ready** (pipeline doc + style guide).
different lane, no file conflicts. Each systemic slice declares its asset slots, exact
runtime paths/dimensions, fallback, and visual acceptance evidence before generation;
art is produced in parallel, reviewed at intended renderer size, and registered only when a
real consumer exists.
There is no runtime AI asset generation. **Spec status: operational** (pipeline doc,
master style guide, and `assets/prompts/m3-hubs/`).

### G0 — The Atlas (continuous-galaxy substrate) — IMPLEMENTED, FINAL LIVE CLOSURES PENDING
Fresh canonical galaxy run + persistent vessel coordinate + continuous local-sector map
Expand All @@ -95,15 +100,20 @@ launch, and all three operation presentations were exercised in the production e
The remaining acceptance work is the hands-on touch pass plus manually finishing the
hostile success/failure/emergency closures, Kepler, Ashfall sortie, and a Region POI;
their exact outcomes and idempotency are already covered by deterministic tests. See
`playtests/2026-07-16-g0-atlas.md`. **Spec status: implementation complete on the feature
branch; do not mark DONE until those final live closure paths are recorded.**
`playtests/2026-07-16-g0-atlas.md`. **Spec status: merged via PR #16; do not mark DONE
until those final live closure paths are recorded.**

### M3 — Phase 3: Hubs (places worth entering, now located)
Cantina, Marketplace, Town Hall hand-authored interiors + interior NPCs w/ schedules +
faction dialog depth + **bulletin board v1**: operations from the spec's §F Quest
types (typed, unused, waiting in colonyTypes.ts 454-466; cycleProcessor step8 stub
types (typed, unused, waiting in colonyTypes.ts 469-482; cycleProcessor step8 stub
exists). Marketplace generalizes `marketContext`. **Spec status: ready** (colony spec
Phase 3 + §F).
Phase 3 + §F). Asset production is part of this milestone, not a polish pass: three
reusable hub environment kits (wall/floor/ceiling plus facade/props) and eight paired NPC
portrait/billboard identities ship alongside the code. The first art vertical slice is
the Cantina, then Marketplace, then Town Hall; see
`superpowers/plans/2026-07-18-m3-hub-asset-production.md`. General tier promotion and
district growth remain outside this asset plan and must not be invented while producing art.

### M4 — The Decay Arc & Emergent Antagonists
The user's stakes decision, formalized. Colony health drives a staged arc over many cycles:
Expand Down
9 changes: 8 additions & 1 deletion docs/assets/2026-07-12-asset-pipeline-free-options.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
# Asset Pipeline — Free Options (Decision Doc)

**Date:** 2026-07-12 · **Status:** RECOMMENDED, awaiting user sign-off
**Date:** 2026-07-12 · **Status:** ACCEPTED AND OPERATIONAL (roadmap authority updated 2026-07-18)
**Question:** "Currently I make my own assets and import them — is there a better way? Can we source or generate them? Free options only (I have Claude Max + Codex/ChatGPT max-tier subs)."

Research method: 5 parallel research agents (one per lane, ~200 live page fetches), then an
adversarial verification pass re-checking the 10 load-bearing claims against primary sources
(GitHub repos, HuggingFace model cards, official pricing pages). Verified July 12, 2026.

The recommendation has since been proven in production on the quartermaster identity/walk
frames, the mine wall, and the first M2 shooter-enemy tranche; the second-tranche work also
proved the rejection/evidence discipline without shipping weak candidates. M3 uses the same
pipeline for hub environments and NPC identity pairs. Generated images are build-time source
material: the browser loads only reviewed static derivatives from `game/public/sprites/`; it
never calls an image model at runtime.

---

## TL;DR — the recommended pipeline
Expand Down
15 changes: 10 additions & 5 deletions docs/assets/prompts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,24 @@ Each phase (or asset class) gets its own subfolder.
## How this works

1. Spec/plan author drafts a prompt file per asset class, with:
- Sprite ID (matches entries in `game/app/components/engine/sprites.ts`)
- Planned Sprite ID (becomes a `sprites.ts` entry only when a real consumer exists)
- Target filename + path
- Dimensions, perspective, alpha
- A copy-paste-ready GPT prompt
- A negative prompt (what to avoid)
- Iteration notes (filled during generation)
2. User runs GPT sessions with the prompts, drops resulting images into
`game/public/sprites/<class>/...` at the paths specified.
3. User opens a small PR registering the sprite path constants in `sprites.ts`.
4. Renderer picks them up automatically. Color-tint fallback was used until then.
2. An operator or asset agent generates candidates with the accepted pipeline; rejected
attempts stay outside the repository.
3. Selected candidates are processed to their exact runtime dimensions/alpha contract and
reviewed at their intended renderer size on the required comparison panels.
4. Once a real consumer exists, a small PR registers and consumes the already reviewed PNG;
data modules reference the `sprites.ts` constant rather than hardcoded renderer paths.
5. The color-tint fallback remains until the registered asset is exercised in the game.

## Index

- `doom/` — **master style guide** (modern-DOOM art direction; ALL prompts inherit it)
- `colony-phase-2/` — 11 assets for Phase 2 FPS descent (walls, environment, interiors);
its aesthetic section is superseded by `doom/00-master-style-guide.md`
- `m3-hubs/` — execution-ready Cantina, Marketplace, and Town Hall environment/NPC
contracts, prompts, and review gates; produce in that order
200 changes: 200 additions & 0 deletions docs/assets/prompts/m3-hubs/01-environments.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
# M3 Hubs — Environment Prompts

For opaque textures, use the positive and negative suffixes from
`../doom/00-master-style-guide.md` verbatim. For transparent props, remove the suffix's
`dark background separation` and painted contact-shadow clauses and use the flat-green,
no-cast-shadow override in `README.md`. Generate at 1024×1024, then derive the exact
production sizes in `README.md`. Never ask an image model to produce several texture views
or props in one sheet.

## Shared texture rules

Append this block before the master positive suffix:

```text
single game texture only, orthographic square-on material view, perfectly seamless on all
four edges, uniform scale and exposure across the entire image, no perspective convergence,
no room corners, no horizon, no vignette, no border, no isolated hero object, no writing,
no letters, no numbers, no symbols that resemble readable language
```

Append this block before the master negative suffix:

```text
room scene, corridor scene, perspective, vanishing point, corner, horizon, frame, border,
vignette, centered object, readable sign, words, logo, watermark, non-tileable edge, lighting
gradient across the whole texture
```

The model's claim that a result is seamless is not evidence. Verify with a 2×2 montage and
an offset inspection before accepting it.

## Cantina kit

**Role:** A hard-used social refuge assembled from freight modules. It is warmer than the
other frontier interiors without becoming cheerful, clean, or Western-saloon cosplay.

### Interior wall

```text
Seamless interior wall texture for an Ashfall frontier cantina: patched gunmetal freight
panels, heat-darkened rivets, shallow dents, soot above recessed vents, old adhesive scars,
small protected amber practical-light housings and a few restrained cyan status diodes.
Human hands have repaired it repeatedly with mismatched plates. No bottles, furniture,
posters, logos, or readable signs.
```

### Interior floor

```text
Seamless top-down floor texture for an Ashfall frontier cantina: worn steel deck plates with
embedded anti-slip strips, chair scuffs, boot wear, tracked ash, old dark spill stains, and
repaired seams. Mostly desaturated gunmetal and concrete; tiny warm reflections only where a
practical light would catch worn edges. No objects, footprints, text, or strong directional
shadow.
```

### Interior ceiling

```text
Seamless overhead ceiling texture for an Ashfall frontier cantina: low armored utility
panels, exposed pipe channels, cable trays, smoke-darkened ventilation grilles, and inset
warm work lights. Dense industrial construction with clear large forms that survive
downscaling. No hanging objects, room perspective, text, or open sky.
```

### Exterior facade tile

Use the wall prompt, remove most interior light housings, add wind-scoured Ashfall dust,
sand abrasion, heat cycling, exterior sealant, and a recessed amber entry beacon. Derive a
64×64 tile from an accepted seamless source; inspect it at exactly 64×64.

### Props

Generate each prop separately on a perfectly flat `#00ff00` background with generous
padding, no cast shadow, and no green in the subject.

- **bar-counter:** wide, waist-high counter welded from cargo plating; thick readable
silhouette, impact scars, dark bottle-storage recesses, one amber edge light.
- **bottle-rack:** compact rack of mismatched sealed canisters and cups; no labels or text;
restrained warm glass highlights.
- **table-cluster:** one heavy bolted table with two fixed stools, asymmetrically repaired;
a single readable ground-level silhouette.
- **rumor-terminal:** person-height battered comms terminal with abstract waveform blocks,
one cyan screen and a tiny amber service light; no readable UI.

## Marketplace kit

**Role:** A dense, pragmatic exchange floor. Colder and busier than the Cantina, with modular
stalls and cargo-handling wear rather than luxury retail.

### Interior wall

```text
Seamless interior wall texture for an Ashfall frontier marketplace: modular gunmetal stall
panels, sliding cargo rails, bolted repair plates, conduit channels, recessed inventory
sensors, chalky ash in seams, and sparse cyan transaction lights. Dense but readable
industrial rhythm, visibly maintained under scarcity. No goods, posters, prices, lettering,
logos, or readable screens.
```

### Interior floor

```text
Seamless top-down floor texture for an Ashfall frontier marketplace: reinforced cargo deck,
interlocking steel plates, pallet drag scratches, wheel tracks, repair welds, dust gathered
at seams, and small hazard insets expressed only through geometry and wear, not painted text.
No loose objects, arrows, numbers, logos, or directional shadow.
```

### Interior ceiling

```text
Seamless overhead ceiling texture for an Ashfall frontier marketplace: suspended cargo
rails, armored cable runs, rectangular cold work lights, maintenance hatches, patched steel,
and soot-dark ventilation. Strong large-scale structure, cool task-light register with very
small amber accents. No hanging merchandise, text, room perspective, or sky.
```

### Exterior facade tile

Use the wall prompt with exterior blast shutters, cargo-impact wear, Ashfall dust, and a
recessed cyan trade beacon. No readable shop sign. Derive and review at 64×64.

### Props

- **vendor-counter:** wide modular cargo counter with locked drawers and one abstract cyan
transaction pad; no text or products fused into the counter.
- **weapon-rack:** tall secured rack holding chunky abstract tool/weapon silhouettes; no
recognizable modern firearm branding or readable labels.
- **supply-crates:** compact stack of three mismatched reinforced containers with broken
stencil shapes that cannot be read as letters or numbers.
- **trade-terminal:** tall armored kiosk with a cyan abstract market graph and physical
controls; no prices, currency symbols, or text.
- **cable-bundle:** thick grounded power/data cables around a rugged junction block; avoid
thin strands that disappear at small size.

## Town Hall kit

**Role:** The frontier's first attempt at civic permanence. Severe, repaired, and slightly
more orderly than the other hubs, but still built from survival materials rather than marble.

### Interior wall

```text
Seamless interior wall texture for an Ashfall frontier town hall: disciplined vertical
gunmetal panels over cracked structural concrete, reinforced seams, archive access plates,
careful repairs, restrained cyan civic-system light channels, and a small amount of warm
human task light. Imposing through proportion and order, never polished or luxurious. No
flags, heraldry, Earth logo, text, seals, or readable displays.
```

### Interior floor

```text
Seamless top-down floor texture for an Ashfall frontier town hall: broad worn concrete and
steel insets, repaired fractures, orderly plate grid, tracked ash near traffic lanes, and
subtle edge polish from years of petitioners. Severe desaturated palette, no ceremonial
emblem, words, arrows, objects, or directional shadow.
```

### Interior ceiling

```text
Seamless overhead ceiling texture for an Ashfall frontier town hall: armored civic utility
ceiling, symmetrical structural ribs, recessed cyan-white light wells, archive conduits,
maintenance hatches, and visible repair patches. Strong calm geometry that still feels
oppressive and frontier-built. No flags, text, room perspective, or open sky.
```

### Exterior facade tile

Use the wall prompt with heavier wind-scoured reinforcement, a recessed cyan approach light,
and a more ordered panel rhythm than the other hubs. Do not introduce faction heraldry.
Derive and review at 64×64.

### Props

- **governor-desk:** wide armored work desk with inset cyan console and thick privacy plates;
no readable papers or UI.
- **petition-terminal:** tall public terminal with abstract queue blocks, scarred hand rests,
and a restrained cyan screen; no numbers or words.
- **holo-atlas:** compact projection pedestal emitting a simple cyan volumetric point-field;
no recognizable real map, text, or free-floating detached fragments.
- **bench:** wide heavy civic bench repaired from steel and dark composite, grounded and
uncomfortable, with a strong single silhouette.
- **archive-cabinet:** tall sealed record cabinet with physical latches and abstract color
tabs that do not resemble letters.

## Texture rejection rules

Reject and retry when any of these is visible:

- a room or corridor instead of a flat material;
- a lighting gradient that repeats as a checkerboard;
- seams in a 2×2 tiling preview;
- readable or pseudo-readable text;
- high-frequency detail that becomes noise at 64×64 or 512×512;
- saturated paint rather than emissive light;
- late-game Fold corruption or mutation;
- three hubs that look like palette swaps of one texture.
Loading
Loading