Aetheria/docs/original-game-presentation-spec.md
2026-07-12 06:43:33 +01:00

139 lines
7 KiB
Markdown

# Original Game Presentation Specification
Baselines: RTS `d12d7c5c^`; ARPG `origin/master` at `ab2c2944`.
## Provider Documents Required
The original UI directly observes mutable entities and UniRx events. The target
must replace that graph with provider-owned typed documents:
1. `player_cockpit_state`: systems, schematic cells, thermal state, durability,
energy, visibility, movement, shutdown, and medical state.
2. `zone_contacts`: identity, disposition, detection both ways, pose, selected
and locked state, and health disclosure.
3. `action_slots`: action identity, source equipment/cargo, icon, availability,
active state, progress/cooldown, quantity, and operation binding.
4. `inventory_layout`: shaped hull/cargo occupancy, cells, hardpoints,
durability, armor, conductivity, and temperature.
5. `trade_session`: station, stock, destinations, quotes, capacity, commands,
receipts, and typed rejection reasons.
6. `navigation_surface`: zone topology, contacts, fields, discovery, current
location, and navigation commands.
7. `presentation_events`: deduplicated hit, damage, lock, thermal, death,
weapon, effect, and audio cues.
The target doctrine-combat direction adds shared state for active doctrine,
cognition allocation, fire-control assignments, subsystem intent, deployed
platform orders, commitment exceptions, and structured decision reasons. See
`cockpit-doctrine-combat.md`. These are gameplay state or named projections,
not renderer-local interpretations of action-bar activity.
Names are provisional; responsibilities are normative.
## Cockpit Schematic
The schematic presents equipment topology and polls reactor draw, capacitor
charge/capacity, temperatures, radiator stores, cargo temperature, override
shutdown, shield active state, drive RPM, visibility, hull/item durability,
weapon ammunition/range/cooldown, and heatstroke/hypothermia thresholds.
The target document must publish these source facts and cell topology. Eve may
compose them as grids, metrics, progress, imagery, and overlays. EveUnity may
animate transitions but may not derive state from materials or particles.
## Target And Contact Feedback
The selected target panel includes identity, relation, target shield state,
hull durability, gathered information in both directions, pose/range, and
selection. Hostile/friendly indicators are created from contact add/remove
facts. Detection fill, selected target, and lock indicators consume explicit
observer-relative state.
Crosshairs and lock reticles need camera projection and attachment semantics.
Barrel endpoints and articulation groups are presentation inputs, not combat
authority.
Hit marker is triggered only by an incoming-hit event on the selected target
whose source is the controlled entity. It remains visible for authored
`HitMarkerDuration`. This requires event identity, source, target, and time.
## Action Bar And Input
Slots derive from exposed action-bar inputs plus available equipment behaviors,
weapon groups, and consumables. They display binding, active state, cooldown or
duration, and cargo quantity. Activation submits semantic commands; it never
calls behavior objects in the client.
Bindings are client-owned and portable across providers exposing the same
semantic action. Dynamic action availability is daemon-owned.
## Inventory And Trade
Inventory presents shaped hull and cargo grids, armor, hardpoints, occupancy,
temperature, conductivity, item condition, comparison, selection, drag preview,
and valid destination feedback. Drag state is local; mutations and rejection
reasons are daemon receipts.
Trade presents station stock, player destinations, credits, valuation, item
details, filters, ship purchase, and resulting inventory state. Quote and commit
are separate when price can vary.
## Map Products
Minimap zoom changes camera/projection scale and icon scale independently from
pilot view distance. Zone map combines objects and field textures. Sector map
builds discovered topology and faction/current/entrance/exit/boss states.
These are explicit Eve projections, not hidden children of the pilot scene.
## Distress, Damage, And Death
Incoming damage identifies affected schematic cells and damage category so the
correct armor/item/hull feedback can pulse. Thermal distress publishes current
heatstroke/hypothermia, thresholds, and cause-specific warning transitions.
Screen post-processing intensity is a lowering of these facts plus authored
timing, with accessibility fallback.
Death unbinds gameplay input, presents cause, and transitions to appropriate
menu/restart flow. The client cannot clear or save authoritative world state as
a side effect of playing the animation.
The fossil's live heatstroke presentation uses two volume weights. Base weight
is `saturate(heatstroke / severeRiskThreshold)`. Severe weight is the normalized
amount above that threshold, with an authored sinusoidal pulse applied by the
lowerer. Heatstroke and hypothermia each have schematic exposure meters, while
cockpit temperature drives the shared thermal-limit meter. The scene contains
hypothermia volumes, but the inspected live update never drove them before
death; do not invent continuous hypothermia post processing as historical
parity. Cause-specific death fades cross the applicable thermal volumes into
the death volume over one authored second.
The current fossil settings still declare heatstroke and hypothermia control
limits, but the implemented heatstroke cockpit lockout was deliberately removed
and no hypothermia lockout was connected. Thermal exposure therefore does not
silently attenuate or reject semantic controls. The daemon owns medical state
and death; the runtime owns only meter, volume, and transition lowering.
The serialized fossil profiles target a retired post-processing schema and
contain missing script references in the current Unity body. They are evidence,
not deployable assets. `EveThermalProfileMigrator` deterministically generates
clean URP profiles with the supported authored values: vignette color/intensity/
smoothness, white balance, exposure, contrast, saturation, bloom, grain, and
depth of field. Legacy vignette roundness, screen-space reflections, and ambient
occlusion have no equivalent portable volume parameter; they remain explicit
renderer-feature parity gaps. The generated profiles, not the broken fossil
files, are the assets advertised through CultMesh CDN.
## Effects And Audio
Weapon and impact effects consume semantic event facts and provider asset refs.
Original music selection attempted to use `TargetedByCount`, but playback was a
TODO in the inspected baseline. Audio parity therefore covers authored effect
cues that exist; a complete music system is future content, not a hidden
original requirement.
## Presentation Timing Proof
For every element record source document/event, trigger, duration, interpolation
owner, interruption rule, reconnect behavior, and accessibility fallback.
Verify initial load, user command, daemon update, mid-transition, settled state,
refresh/reconnect, and event deduplication.