Aetheria/docs/aetheria-release-target.md
Meta Vens 8755da5ecb Release map: articulated mounts re-mapped to the hardpoint-arc ruling
Imagination r2 re-map (session self-2026-10-10-ag): the sim already carries
per-hardpoint arc and weapon traverse; links are rig only. Target doc moves
articulated weapon mounts into scope under ruling mount-arc-gun-traverse.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:12:27 +02:00

202 lines
12 KiB
Markdown

# Aetheria Release Target: the Demo
Date: 2026-10-03, re-scoped 2026-10-06
Status: target. This document owns the ends. The typed `target` in the Eureka mind
(campaign `aetheria-release`) owns the labelled invariants and the not-in-scope list;
this file gives their reasons. Cut specs, questions and rulings are typed documents in
the mind and are not restated here. Body facts, the model page, the scope sort and the
rationale for the cut order are in `docs/aetheria-release-map.md`.
## Why
The game has deep systems: fire control, stats and power, heat, item provenance,
locomotion, scenarios and the targeting index. What keeps it unreleasable is that a
player has nothing to do between minute five and minute thirty, and nothing they do
is seen or heard. It plays no sound. A hit on a hull shows nothing where it lands.
Loot cannot be sold, damage cannot be repaired, no boss guards anything, and reaching
the exit does nothing. Every NPC fights the same way.
The first release is a demo, and it is called one. The full game, Terminus with three
procedurally generated regions, needs enough faction variety to give each region its
own challenges and stories. Until that content exists the game is not presented as
complete.
## Operator direction
- 2026-10-06 (ruling `first-release-is-a-demo`): "Full Terminus requires enough
faction variety to present unique challenges and stories across three regions, I
can't call it anything more than a demo if we don't have enough content to
populate the three gates. I'm fine with reducing scope so we can get to a release
on time, but I will not pretend it is the whole game."
- 2026-10-06 (ruling `demo-cut-fixed-region`): the demo is one gate, one region and
one boss with a fixed faction presence. Full Terminus keeps procedural regions,
each with its own political and economic setup.
- 2026-10-06 (ruling `demo-cast`): one allied faction, the protagonist's ostensible
employer under Aetheria's usual polite coercion; one opposing faction, which
decides the boss; the rest neutral. Allied: the Pirates. Antagonist and boss:
Zhestokost. Featured neutrals: Lucent Media for spectacle, Aeronautics Unlimited
as the vanilla that balances the other flavours.
- 2026-10-06 (ruling `miss-terris-belongs-to-emily-r3`): Miss Terri's is Emily's
faction. Its role in the prelude stands. Agents write no lore, explanations,
faction play, doctrine, barks or ship concepts for it, and build on none of the
AI-written material already made for it.
- 2026-10-06 (ruling `ship-authors-need-no-unity`): a person adding a ship works in
Blender and the CultLib tools and never installs Unity or syncs the repo.
- 2026-10-02 and 2026-10-03 (ruling `operator-release-direction`): the release needs
audio, ships, stations and gear to covet and collect, and mechanics that are
visible and visceral. The announcement bar names a wider selection of ships and
gear, a UX polish pass, and audio feedback throughout.
## What "the demo" means
The demo is a public build, announced to players and Patreon, with a scenario named
"Terminus (Demo)". It is done when every line below holds on one Windows build made
from `master`, and the operator has played that build and called it. A ticked list
without the operator's call is not a release.
1. **One run, start to finish.** New Game starts the demo in a hull made by the
Pirates, at a station near the entrance of one region with a fixed cast: the
Pirates allied, Zhestokost hostile, Lucent and AU neutral. The Zhestokost home
zone holds the region's one gate, guarded by its boss. The gate stays sealed
while the boss lives. Passing it after the boss dies ends the run as won. Death
ends the run as lost.
2. **The run pays.** At a docked station the player can buy, sell what they looted
and repair what they lost. Credits persist across save and Continue.
3. **The four factions fight differently.** Each cast faction has a doctrine a
playtester can describe without being told, from the Faction Play design in
AetheriaLore.
4. **Every player action that changes the world makes a sound.** Weapon fire and
charging, impacts on shield and hull, ship destruction, docking and undocking,
the wormhole and the gate, thrusters and the drive, inventory and trade actions,
menu clicks, the overheat alarm, and music in the menu, overworld, combat and the
boss fight. Master, music, effects and interface volume are player settings that
persist.
5. **Every hit is seen where it lands and felt by the one who takes it.** An impact
on a shield shows on the shield at the side it came from; an impact on a hull
shows at the struck point; a hit on the player moves the camera in proportion to
the damage. Shake can go to zero and the hit is still shown.
6. **Damage, heat and exposure are visible before they are fatal.** Lost armour, a
destroyed item and a critical hull look different on the ship and in the HUD.
Overheat and hull-critical warnings use sound plus a visual, and the more urgent
one wins. The player can see how visible they are and the largest source of it.
7. **There is enough to covet in the demo.** Each cast faction flies a hull of its
own and Zhestokost's boss flies its boss hull, each entering through the
first-party package path. The exact count is question `demo-content-bar`. Rarity
tiers show their colours, and every weapon type sounds and looks distinct.
8. **A new player can play the demo through on the Windows build without hitting a
blocking defect**, published through the build-delivery path.
## Ends
- **The simulation states what happened, and presentation shows it.** Fire control,
shields, damage, heat, detection, the boss and the gate publish typed facts.
Visual and audio presenters derive a cue from each and render it. They decide no
rule and recompute no geometry.
- **One cue, two channels.** Each fact becomes a cue in one engine-free function;
the visual and the audio presenter render that same cue.
- **The run is a scenario.** The demo is a compiled scenario script beside the
tutorial and main galaxies. Its cast, starting standing and gate are written in
that script; placement stays with the galaxy generator.
- **New content is data, authored without Unity.** A new hull, station or piece of
gear arrives as a catalog record or a first-party package that carries its own
product. Nobody hand-wires a prefab array, and no author needs Unity or the repo.
- **The player controls intensity without losing the signal.** Turning shake,
flashes, particles or any audio channel down never removes the tactical
information it carried.
## Invariants that must survive
The typed target carries these as labelled statements. The reasons:
- **Ship the game** (operator, 2026-09-11; reframed 2026-10-06). The goal is a shipped
game, not new foundations for game development. AetheriaThing was stopped because
reinventing the foundations alongside the game grew into an unmaintainable pile of
abstraction. So work lands in the existing Unity tree, which is the vehicle and not a
value in itself: no daemon, CultMesh or Eve re-architecture here, and shared
infrastructure is adopted, never invented.
- **The simulation owns the facts.** Fire control was rebuilt so that no Unity
collider or effect decides a hit. Feedback reads `FireControl`'s facts and never
re-derives them. The same holds for the run: whether the boss lives and whether
the gate is open are decided in `ServerShared`.
- **The simulation names no sound.** Audio is a presenter of the same semantic
events visual effects use.
- **State is CultCache.** Player preferences go in the player store, authored data in
the catalog, run state (credits included) in the run store. Presentation tuning
stays on its Unity component (fork M (a) of `docs/settings-globals-cut.md`).
- **Instruments bound what is shown.** A cue never shows the player more than their
sensors know.
- **The demo is named a demo.** Release copy, store text, the scenario name and
these docs call it a demo.
- **Miss Terri's is not AI-written.** No agent writes material for it.
- **Ship authors need no Unity.**
- **The lanes are respected.** This campaign never commits to a `codex/*` branch or
the operator's checkout.
- **Rules are tested headless.** Every rule decided in `ServerShared` has a
behavioural test in `tests/Aetheria.Shared.Tests`.
- **The operator judges whether the bar is met.**
## Not in scope for the demo
- Full Terminus: three regions, procedural regional politics and economy, faction
selection per run, and the full content bar. These come after the demo.
- Factions outside the cast as flags. They stay brands on shelves and generated
traffic where the generator already puts them.
- Mining yield and content (mining Cuts 4, 5 and 7), the sublinear targeting index
(ruling `targeting-sublinear-wanted-not-critical`), and belt rendering through the
index.
- The faction-play tender loop (`faction-play-4`), drones and munitions, the
Colosseum, gimballed thrusters. Articulated weapon mounts are in scope: the arc
is the hardpoint's, traverse is the weapon's, and the moving part is
presentation only (ruling `mount-arc-gun-traverse`).
- Narrative: storylets, Ghostlight, Ink beats per boss.
- Volumetrics and the nebula backport.
- Asura and procedural planet content.
- New mechanics beyond what the demo's rulings name.
- Build publishing machinery (`docs/build-delivery-target.md` owns it).
- Platforms other than Windows 64-bit, and multiplayer.
Open questions decide where four more items fall: the material pipeline
(`demo-material-scope`), the all-in-`.cc` ship move (`demo-ship-cc-timing`), the
control rebuild (`demo-controls-rebuild`) and which modes a release build lists
(`demo-build-scenario-list`).
## Strands
- **The run.** Three cuts: `demo-galaxy` (the scenario, its cast, the gate's
placement), `boss-gate` (the boss and the sealed gate, the win), and
`station-services` (sell, repair, saved credits). The on-ramp is follow-up
`demo-difficulty-onramp`, after a played build.
- **Feedback.** `feedback-1`: impacts with a world point and a layer, shown on the
shield or hull and in the camera.
- **Audio.** `audio-1`, native Unity audio (ruling `audio-native-unity-plus-faust`).
Its sequel covers interface, trade, docking, the wormhole and gate, music
(including the boss), loops and the overheat alarm.
- **Faction play.** `faction-play-1` to `-3`, re-anchored on post-merge master and
revised for the demo cast with the Pirates' doctrine (follow-up
`faction-play-reanchor-demo`). The Pirates need a catalog record first (follow-up
`pirates-catalog-record`).
- **Loot.** `loot-1` to `-3`: floating items are simulation state and pickup is a
capability. With `station-services`, loot becomes money.
- **Content.** The package path that landed with moddable-ships, then the add-on's
frame and mounts cuts, then hulls for the cast and the boss (follow-ups
`demo-cast-hulls`, `zhestokost-boss-hull`), authored at the operator's pace.
- **UX polish.** A ledger of small fixes verified through scenarios (follow-up
`demo-ux-ledger`).
## Sequencing
The run goes first, because it is the hole every other strand fills: without it the
demo has no thirty minutes. `demo-galaxy` and `station-services` are independent
and can run in parallel; `boss-gate` follows `demo-galaxy`. Feedback and audio follow
the order already mapped (`feedback-1`, then `audio-1`). Faction play waits for its
re-anchor. Content runs in parallel at the operator's pace, because the hull clock
starts only when the first demo hull flies.
## Lanes and collisions
The hot files are `Entity.cs`, `FireControl.cs`, `ActionGameManager.cs`,
`ZoneGenerator.cs`, `ZoneRenderer.cs` and `TradeMenu.cs`. Each cut branches from
`origin/master` in its own worktree and keeps its hunks out of the regions other open
cuts change, which are listed per spec. New behaviour goes in new files wherever an
existing owner allows it.