Aetheria/docs/original-game-specification.md
2026-07-13 14:36:43 +01:00

443 lines
21 KiB
Markdown

# Aetheria Original Game Specification
Status: source-derived living specification
Authority: the executable fossil has two normative strata. The original RTS
lineage is pinned immediately before the ARPG port at `d12d7c5c^`; the current
ARPG lineage is pinned at `origin/master`. Removed RTS mechanics remain part of
Starbridge even when the ARPG rebuild no longer contains their bodies.
This document describes that behavior without granting the fossil Unity project
authority in the target architecture.
Pinned ARPG baseline: `ab2c294464bb30b9b5c8987cdb9108204821a92d`.
Pinned RTS baseline: `d12d7c5c^`.
Subsystem specifications:
- [Simulation](original-game-simulation-spec.md)
- [Combat](original-game-combat-spec.md)
- [World, economy, and progression](original-game-world-economy-spec.md)
- [Presentation](original-game-presentation-spec.md)
- [Rendering and views](original-game-rendering-spec.md)
- [Migration matrix](original-game-migration-matrix.md)
Target gameplay evolution beyond fossil parity:
- [Cockpit and doctrine combat](cockpit-doctrine-combat.md) defines the
post-parity target experience: an embodied cockpit, player-authored combat
intent, and cognition-mediated precision execution. Original manual controls
remain the parity baseline and an optional fallback/debug surface until that
direction passes its experience proofs. This target does not rewrite the
archaeology or parity scenarios; original semantic actions, simulation
constraints, and damage remain its execution substrate.
## Purpose
The original Unity game contains the accumulated mechanics, timing, controls,
rendering decisions, and player feedback that define Aetheria as a game. The
target is behavioral parity through a different machine:
- the Aetheria daemon owns game state and simulation decisions;
- the Aetheria simulation owns committed physical state and computes spatial
integration, queries, and collision through Ymir;
- Eve surfaces expose everything a client needs to understand and present;
- EveUnity lowers those semantics into Unity rendering and interaction;
- provider assets retain authored visual, audio, and material content;
- no client reconstructs authority from presentation state.
Parity means the same player intent produces materially the same mechanical
outcome and legible feedback. It does not require preserving Unity component
boundaries or implementation accidents.
## Evidence Rules
Each normative behavior must cite an executable source path in the applicable
pinned lineage. Git history is authoritative evidence when the ARPG port
deleted an implemented RTS mechanic.
Timing, thresholds, formulas, and ordering must cite the defining source rather
than a caller that merely observes the result. Scene and prefab evidence is
valid for composition, layer, camera, and feedback behavior. Current-branch
code is evidence of migration status, not evidence of original behavior.
The principal source bodies are:
- `Assets/Scripts/ServerShared`: Unity-free mechanics and state transitions;
- `Assets/Scripts/Gameplay`: player orchestration and presentation feedback;
- `Assets/Scripts/Zone Display`: world, map, fog, and field presentation;
- `Assets/Scripts/UI`: HUD, inventory, trade, menus, and input display;
- `Assets/Scenes/ARPG.unity`: runtime composition and camera/layer policy;
- `Assets/Resources`: provider-authored prefabs, materials, icons, and effects;
- catalog and settings assets: authored numeric balance and content.
## Modes And Views
### Terminus
Terminus is a single-player game mode using the pilot surface. The minimum
complete loop is: fly, acquire or select a target, fire, survive return fire,
destroy or disable something, scoop useful cargo, dock, and trade. It shares
pilot mechanics and presentation with the Starbridge pilot role.
### Starbridge
Starbridge is one multiplayer mode with two simultaneous projections of one
authoritative state:
- one commander uses the 2D RTS view;
- up to four pilots use the 3D ARPG view;
- the Unity map panel and Electron commander backdrop are projections of the
same strategic world facts;
- view choice never creates a second simulation.
### Pilot View
The pilot view follows the controlled ship in 3D. It presents world geometry,
combat, fields, effects, target feedback, cockpit status, and overlays. It must
not render tactical-map glyphs embedded in provider prefabs.
Evidence:
- `Assets/Scenes/ARPG.unity` composes follow and dock cameras;
- `ProjectSettings/TagManager.asset` assigns `Minimap` to Unity layer 14;
- `Assets/Scripts/Gameplay/EntityInstance.cs` owns a separate `MapIcon` visual;
- `Assets/Scripts/Zone Display/ZoneRenderer.cs` sizes map icons from minimap
distance independently of world geometry.
### Tactical And Strategic Views
Map views render semantic contacts, bodies, fields, influence, and navigation
at map scale. Their glyph scale and visibility rules are independent from the
native geometry used by the pilot camera. A native asset may contain visuals
for multiple view channels, but each camera renders only its selected channel.
## Core Entity Model
An entity is a simulated body with identity, faction, transform, velocity,
visibility, target state, equipment, cargo, docking relationships, behaviors,
and derived performance. The controlled entity is selected by authoritative
run state, not by whichever client object currently has focus.
Entity lifecycle includes creation from authored templates, activation in a
zone, observation, targeting, damage, destruction, cargo/equipment drops,
docking, undocking, zone transfer, and persistence in the run checkpoint.
Primary evidence:
- `Assets/Scripts/ServerShared/Entity.cs`;
- `Assets/Scripts/ServerShared/EntityData.cs` and related loadout types;
- `Assets/Scripts/Gameplay/EntityInstance.cs`;
- `Assets/Scripts/Gameplay/ActionGameManager.cs`.
## Flight And Spatial Interaction
Player movement is intent applied to a simulated ship, not direct client
transform mutation. Camera-relative input is converted to semantic movement;
the simulation resolves thrust, velocity, drag, control limits, heat, and
collisions. `origin/master` has no privileged boost input or boost state.
Acceleration comes from installed and active thrusters or Aether drives,
available energy, heat, mass, and movement axes. Future drive-boost or evasive
maneuver actions therefore enter as equipment-provided semantic actions rather
than being invented as hidden base-flight rules.
Spatial mechanics include:
- acceleration, steering, velocity, drag, and stopping behavior;
- collision bodies and collision response;
- range checks for weapons, sensors, tractor, docking, and interactions;
- tractor force and towing/scooping behavior;
- docking and undocking placement;
- projectiles and collision hits;
- zone and navigation boundaries.
Target owner: Ymir computes authoritative spatial results from daemon-owned
intent and body state. The daemon commits resulting game state. Clients may
interpolate presentation but may not decide collisions or accepted movement.
### Original Flight Update
`Ship.Update` recalculates thrust and torque, clears actuator axes, allocates
lateral and longitudinal thrust banks, compensates asymmetric lateral torque,
steers toward the XZ look direction, drives Aether-drive axes, then applies
hull drag and gravity. Thrusters consume energy, apply `thrust / mass * delta`,
contribute torque, add heat, and add visibility. Aether drives separately model
rotor RPM, coupling, passive coupling, torque, energy draw, and thrust.
Original tractor input is analog and approaches the requested value at two
units per second. Interact prioritizes a nearby wormhole and otherwise attempts
the first eligible nearby dock. Undocking requires a cockpit, propulsion, a
reactor, and a bay able to release the ship.
Evidence: `Ship.cs`, `Thruster.cs`, `AetherDrive.cs`, and
`ActionGameManager.cs`.
## Sensors, Visibility, And Targeting
Visibility is simulated and observer-relative. Sensors accumulate information,
contacts distinguish visible/known/hostile state, pings alter visibility, and
target selection is constrained by available contacts and game rules.
Passive sensor capability belongs to installed equipment, not to the `station`
or `ship` entity kind. A station generally sees farther because its size and
mass budget supports more and larger arrays together with the required power,
cooling, and computation. An equivalently equipped ship and station have the
same capability. Docked craft may consume the station's contact picture, but
do not inherit a magical range value.
The pilot can select explicitly, cycle or choose nearest targets, and obtain a
lock where required by equipment. The UI distinguishes target existence,
visibility to target, target visibility, hostility, lock progress, shields, and
hull condition.
Primary evidence:
- sensor and visibility behaviors under `Assets/Scripts/ServerShared`;
- targeting in `Assets/Scripts/Gameplay/ActionGameManager.cs`;
- target feedback fields in the ARPG scene and HUD prefabs.
Visibility is the sum of independently decaying sources produced by thermal
radiation, weapons, propulsion, explicit visibility behavior, reflector cross
section, and active pings. Each observer accumulates information per target.
Crossing the configured threshold creates a classified contact; falling below
it removes the contact and clears invalid targets. Active ping consumes energy,
raises the observer's signature, expands over time, and grants information as
its radius crosses entities. Targeting creates reciprocal `TargetedBy` state.
## Equipment And Derived Performance
Ships are assembled from a hull and slotted items. Items contribute behaviors
and stat recipes. Equipment placement, condition, temperature, energy use,
cooldowns, toggles, and active consumables affect derived ship performance.
Required behavior families include:
- hull, cockpit, reactor, battery, radiator, heatsink, thermotoggle;
- thruster and maneuvering modifiers;
- sensor, visibility, ping, and lock support;
- shield generation and shield state;
- instant, constant, projectile, and guided weapon behavior;
- tractor and cargo interaction;
- consumables and timed effects.
Behavior groups expose switches, triggers, or analog controls while behaviors
own execution. The original set includes instant, constant, charged, lock,
automatic, launcher, and guided weapons; capacitors, reactors, radiators,
sensors, reflectors, visibility, mining and resource scanning; stat modifiers;
conversion, velocity-limit, trigger, switch, and thermotoggle behaviors.
Stats derive from quality, durability performance, thermal performance, wear,
stat recipes, and attached modifiers. Persisting behavior fields without
executing this graph is not parity.
The action bar is a binding surface over currently available semantic actions.
Its contents change with equipment and cargo. Any exposed input, including
Shift or Space, may bind to an action slot. Controller directional strings are
first-class input gestures.
## Thermal And Energy Simulation
Items and ship compartments exchange or generate heat according to their
behaviors. Cockpit temperature contributes to hypothermia and heatstroke.
Threshold crossings produce warnings; sustained extreme temperature can kill
the pilot. Heatstroke and hypothermia recover according to gameplay settings.
Original formula and threshold authority:
- `Assets/Scripts/ServerShared/Entity.cs` heatstroke/hypothermia update paths;
- `Assets/Scripts/ServerShared/Settings.cs` temperature thresholds,
multipliers, exponents, recovery speeds, and control limits.
Presentation includes schematic temperatures, limit markers, warnings,
post-processing intensity, severe heatstroke phasing, shutdown state, and cause
of death. Presentation never computes medical state from a color or effect.
The original thermal model is cell-based. Hull cells exchange heat with
orthogonal neighbors according to occupants, conductivity edges, and thermal
mass ratios. Exterior cells radiate through an authored power curve and this
radiation contributes visibility. Radiators consume energy to pump and reject
heat. Item online state and thermal performance derive from local temperature.
Energy demand drains capacitors evenly first; remaining demand is distributed
across online reactors. Propulsion, weapons, shields, sensors, charging, and
cooling therefore share one energy network. A scalar heat value with linear
decay is only a placeholder.
## Combat
Combat order is:
1. The actor selects or retains a valid target.
2. An available semantic weapon-group action is activated.
3. Weapon state validates lock, range, cooldown, energy, heat, ammunition, and
behavior-specific constraints.
4. The simulation emits the appropriate instant, constant, projectile, or
guided attack.
5. Ymir resolves spatial travel and collision for physical attacks.
6. Damage is applied through shields, armor/hull rules, equipment effects, and
destruction state.
7. Destruction produces authoritative drops and removes or transforms the
entity.
8. Eve publishes both durable state and transient feedback events.
The original game exposes multiple weapon behavior classes. A single generic
bolt approximation is not parity. Each behavior's timing, targeting, damage,
visibility, energy, heat, and effect contract must be specified from
`Assets/Scripts/ServerShared` and weapon presentation code.
Player feedback includes muzzle/beam/projectile effects, shield impact,
damage/destruction effects, audio, target meter changes, lock state, and a
time-bounded hit marker when the controlled entity damages its target.
Primary feedback evidence:
- `Assets/Scripts/Gameplay/ActionGameManager.cs` target and hit-marker logic;
- weapon implementations under `Assets/Scripts/Gameplay/Weapons`;
- behavior implementations under `Assets/Scripts/ServerShared`;
- `Assets/Scripts/Gameplay/EntityInstance.cs` effect materialization.
Damage is typed and spatial. Shields are active energy-to-heat interceptors,
not regenerating shield hit points: interception requires an active shield and
energy for `damage * EnergyUsage`, then deposits `damage / Efficiency` as heat.
Remaining damage maps to schematic cells and flows through armor, fitted item
durability, then hull durability according to spread and penetration. Armor,
item, weapon, cockpit, hull, and thermal deaths are distinct facts.
AI is a state/task system. Combat agents evaluate weapon-group damage across
range, select useful groups and optimum range, approach, retreat or match
velocity, target, and fire. Other tasks include hauling, mining, patrol,
towing, survey, and wandering. Nearest-player pursuit with one synthetic
weapon is not parity.
## Loot, Cargo, Inventory, And Equipment
Destroyed entities can create world pickups from authoritative cargo and
equipment decisions. A player can acquire loot through collision/scoop or
tractor interaction when rules permit. Items move between world, cargo bays,
equipment slots, docking storage, and trade stock through typed operations.
The UI supports inspection, comparison, drag/drop transfer, valid-destination
feedback, equipment changes, cargo capacity, and action availability. Client
drag state is presentation-only; accepted transfer and resulting loadout are
daemon-owned.
Original destroyed entities probabilistically drop non-hull equipment and all
cargo as physical pickups with inherited/random velocity and a thirty-second
lifetime. Pickup collision attempts storage in eligible cargo bays; success
destroys the pickup and failure leaves it in space. Equipment fitting validates
hull shape, rotation, occupancy, hardpoints, and placement constraints.
## Docking, Stations, And Trade
Docking requires a valid nearby facility and results in authoritative docking
relationships and placement. Docked presentation switches camera/context and
enables station services. Undocking restores the pilot to world simulation at
an authoritative spawn transform.
Trade uses station stock, player funds/resources, item quality/condition,
prices, and capacity rules. Purchase and sale mutate daemon state atomically
and return receipts. The trade UI derives available commands and disabled
reasons from the published state.
The original market is station inventory. Purchase requires credits and
destination capacity; commodities split into stack-sized lots; hull purchase
creates a docked player ship. No original sell path was found. Stations also
provide refit/loadout restoration, ship selection, local narrative, and towing.
## World, Zones, And Progression
The world contains zones, stations, orbitals, bodies, asteroids, factions,
connections, fields, and encounter state. Zone rendering includes world
objects plus gravity/fog/influence and map projections. Travel and progression
must preserve the original generation and transition rules before new content
extends them.
Terminus content may be sparse, but the machinery must support a repeatable
single-player loop. Starbridge uses the same world truth while adding commander
and multi-pilot coordination.
Travel is embodied through nearby wormholes. Transition transfers the current
entity, reveals destination adjacency, performs exit motion, and saves.
Progression is exploration, discovery, combat, loot, refit, trade, ship
acquisition, faction territory, boss-path traversal, and narrative locations.
No XP/level system was found; item quality, rarity, and acquisition are the
implemented progression axis.
## HUD And Player Feedback
The pilot HUD must expose, at minimum:
- controlled ship schematic and equipment state;
- target identity, relation, visibility, lock, hull, and shield state;
- crosshair/view direction and selected-target indicators;
- action bar with live availability, cooldown, binding, and activation state;
- cargo/inventory affordances and interaction prompts;
- docking and station context;
- thermal, shutdown, damage, death, hit, and warning feedback;
- minimap/map projection through its own view channel;
- command rejection or disabled reasons where an action cannot execute.
The UI's visual composition may be modernized, but information timing and
salience are part of behavior. A metric card containing the same number is not
automatically equivalent to the original feedback.
## Rendering And Audio
Provider assets may contain multiple semantic subviews: pilot geometry,
tactical glyphs, shields, combat effects, influence, and other overlays. Eve
advertises the active view. Runtime variants map semantic render channels to
native camera/layer mechanisms. The pilot camera must not render map glyphs;
map cameras must not depend on pilot geometry being visible.
Authored prefab transforms are authoritative presentation data. Semantic world
radius is collision/selection metadata and must not rescale native art. Camera
framing derives from authored visual bounds and advertised camera semantics.
Audio and VFX are triggered from semantic state or event facts with stable
identities and timing. They may not infer authoritative hits, deaths, or weapon
activation from local particle collisions.
## Save, Resume, And Multiplayer Consistency
Authoritative run state persists in CultCache and is published through
CultMesh. Reconnect, reload, and view changes must reproduce the same current
entity, zone, loadout, docking, target, combat, cargo, and progression state.
Presentation-only animation may restart; game decisions may not.
Starbridge clients observe one shared session. A pilot and commander can issue
different semantic commands, but neither owns a private copy of the world.
## Required Scenario Proofs
1. **Flight:** launch Terminus, fly, turn, stop, exercise installed propulsion
actions, and collide; daemon-committed state and visible Ymir-computed motion
agree throughout.
2. **Target and combat:** acquire a hostile, lock where required, fire each
weapon family, observe effects and hit feedback, take return fire, and
destroy the target.
3. **Loot:** observe authoritative drops, tractor or scoop one, and see the item
appear in cargo exactly once.
4. **Dock and trade:** dock, inspect stock, buy and sell, change equipment,
undock, and observe the changed ship behavior.
5. **Thermal:** generate heat, cross warning/control thresholds, recover, and
verify HUD/post-processing follows daemon facts.
6. **Views:** show the same zone in pilot, minimap, Unity tactical map, and
Electron commander view without leaking view-specific glyphs.
7. **Persistence:** restart daemon/client mid-loop and recover authoritative
state without client repair logic.
8. **Starbridge:** one commander and multiple pilots act in the same session;
all projections converge on one command/receipt history.
## Open Archaeology Ledger
The following require exact source-derived sub-specs before parity can be
claimed:
- complete weapon-family formulas and timing;
- full thermal/energy/stat-recipe update order;
- AI state machines and encounter spawning;
- docking eligibility and placement rules;
- trade price and stock mutation formulas;
- zone generation, travel, and progression rules;
- every HUD indicator's source fact, update trigger, and animation timing;
- audio event matrix;
- render-channel membership for all provider prefab subviews;
- multiplayer ownership and conflict rules from the original network model.