Merge eureka/aetheria-release-target: the release target and map land on master, rewritten for the demo
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
commit
228f241e53
6 changed files with 3407 additions and 4 deletions
|
|
@ -5,7 +5,8 @@ Date: 2026-06-12
|
|||
**Parked (2026-09-11).** This migration was built and then rolled back by
|
||||
commit `7006a6b0`. `F:\Projects\AetheriaEve` preserves that rebuild as a
|
||||
specimen; it is not direction or precedent. Current
|
||||
direction for this repo is [three-gates-scope.md](three-gates-scope.md). Read
|
||||
direction for this repo is [aetheria-release-target.md](aetheria-release-target.md) (the
|
||||
demo), with [three-gates-scope.md](three-gates-scope.md) as the full game's run. Read
|
||||
this document as a record of the deferred plan, not as current direction.
|
||||
The cache move alone is now [cultcache-migration-target.md](cultcache-migration-target.md).
|
||||
|
||||
|
|
|
|||
3189
docs/aetheria-release-map.md
Normal file
3189
docs/aetheria-release-map.md
Normal file
File diff suppressed because it is too large
Load diff
196
docs/aetheria-release-target.md
Normal file
196
docs/aetheria-release-target.md
Normal file
|
|
@ -0,0 +1,196 @@
|
|||
# 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:
|
||||
|
||||
- **Legacy first** (operator, 2026-09-11). All work lands in the restored Unity tree.
|
||||
No daemon, CultMesh or Eve re-architecture here.
|
||||
- **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, articulated mounts.
|
||||
- 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.
|
||||
|
|
@ -683,7 +683,9 @@ moves the `BehaviorData` union list down by 10 lines.
|
|||
writes only `LookDirection`) engage only within 60 degrees of their spawn facing. That is
|
||||
fork W.
|
||||
|
||||
**Death, loot and pickup** (carried from the earlier draft).
|
||||
**Death, loot and pickup** (carried from the earlier draft). Loot into the simulation did
|
||||
not land with this cut; cut `loot-1` of campaign `aetheria-release` owns it now (ruling
|
||||
`jettison-shared-floating-items`).
|
||||
- `Zone` subscribes to the `Death` of each entity it adds. On death it:
|
||||
- removes the entity and its agent;
|
||||
- drops each non-hull item with probability `LootDropProbability`, and all cargo,
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ Compiled 2026-09-29 by Eyes from the maps on the branch. Pointers are `doc:line`
|
|||
|
||||
### 2c. Flight, power and economy
|
||||
|
||||
6. **Provenance in play.** Starting-ship items show tier colour; the properties panel shows Manufacturer, product name and flavour for branded gear. Dock and buy: the brand still shows in cargo. `give Lamp` (any design name): no Manufacturer row. Kill an NPC and pick up loot: brand shown (`item-provenance-cut.md:528-539`). Proves: item-provenance Cut C.
|
||||
6. **Provenance in play.** Tier colour shows only after settings-globals Cut 1 (this expectation was falsified by the 2026-09-17 smoke, section 8); the properties panel shows Manufacturer, product name and flavour for branded gear. Dock and buy: the brand still shows in cargo. `give Lamp` (any design name): no Manufacturer row. Kill an NPC and pick up loot: brand shown (`item-provenance-cut.md:528-539`). Proves: item-provenance Cut C.
|
||||
7. **Fly a restored hull (Longinus or Djinni).** Thrusters move and turn it (`locomotion-cut.md:501`). Watch the speed cap: `VelocityLimit` is gated by the hull's `Active`, and a hull taken offline with thrusters firing loses the cap (`:377`). It did not happen in 300 s on shipped settings; report if you see runaway speed. Unrecorded: how to spawn a restored hull in play (the map names no path).
|
||||
8. **Weak reactor (O2).** Fly with a reactor too small for the loadout. Expect visible, legible starvation rather than a cooked reactor (`stats-and-power-cut.md:705-706`). Proves: power bus (map Cut 3).
|
||||
9. **Brownout and refill (O6, O4).** Brownout reads as degradation, not breakage (`:774`, `:990`). A weapon refilling under brownout stutters instead of firing full rate and cooking the ship (`:729-730`). Proves: power-supply term, brownout, input capacitors.
|
||||
|
|
|
|||
|
|
@ -2,6 +2,20 @@
|
|||
|
||||
Date: 2026-09-11
|
||||
|
||||
**Status (2026-10-06).** The first release is a demo: one gate, one region, one boss,
|
||||
with a fixed faction cast (rulings `first-release-is-a-demo`, `demo-cut-fixed-region`
|
||||
and `demo-cast` in campaign `aetheria-release`). `docs/aetheria-release-target.md` owns
|
||||
the release now; this document records the full game's three-gate run, which comes
|
||||
after the demo. Where the items below stand:
|
||||
|
||||
- Item 1: death deletes the run (`ActionGameManager.Die` calls `RunSave.Clear`). The win
|
||||
screen is cut `boss-gate`; saved credits are cut `station-services`.
|
||||
- Item 2: for the demo's one gate, cuts `demo-galaxy` and `boss-gate`. Three sections,
|
||||
locked boss-zone wormholes and difficulty per section are full game.
|
||||
- Item 3: cut `station-services` (sell and repair) and cuts `loot-1` to `-3`.
|
||||
- Item 4: landed (`docs/fire-control-cut.md`).
|
||||
- Items 5 and 6: not in the demo.
|
||||
|
||||
Aetheria ships as a short rogue-lite run on the existing Unity game: start at
|
||||
the Entrance, fight through three boss chokepoints, reach the Exit. Everything
|
||||
the player earns comes from what they destroy. More systems come after this
|
||||
|
|
@ -46,7 +60,8 @@ AI share it, so AI accuracy is no longer superhuman by construction.
|
|||
|
||||
**Ruling (operator, 2026-09-17):** hit detection goes away entirely. A hit is a dice
|
||||
roll over weapon stats, the stats of a new targeting-system subsystem, and sensor
|
||||
state. Fire control is being mapped as Cut 2 of `docs/headless-playground-cut.md`.
|
||||
state. Fire control was mapped from Cut 2 of `docs/headless-playground-cut.md` and has
|
||||
landed (`docs/fire-control-cut.md`).
|
||||
|
||||
**Ruling (operator, 2026-09-17):** the player and the AI can aim for a specific
|
||||
subsystem once they have gathered enough target data to reveal it. Operator's words: "We
|
||||
|
|
|
|||
Loading…
Reference in a new issue