Add Terminus transit time compression
This commit is contained in:
parent
7c0c61c5c9
commit
6cf616324e
4 changed files with 35 additions and 3 deletions
|
|
@ -186,7 +186,7 @@ namespace GameCult.Aetheria.State.Verse
|
|||
}
|
||||
}
|
||||
|
||||
public static readonly double[] SupportedSimulationRates = { 0, 0.25, 0.5, 1, 2, 4, 8, 16 };
|
||||
public static readonly double[] SupportedSimulationRates = { 0, 0.25, 0.5, 1, 2, 4, 8, 16, 32, 64, 128 };
|
||||
|
||||
public static bool IsSupportedSimulationRate(double value) =>
|
||||
SupportedSimulationRates.Any(rate => Math.Abs(value - rate) < 0.000001);
|
||||
|
|
|
|||
|
|
@ -187,9 +187,9 @@ namespace GameCult.Aetheria.State.Verse
|
|||
options.WorldPhysics ?? throw new InvalidOperationException("Ymir world physics owner is required."),
|
||||
options.Catalog,
|
||||
options.FrameId,
|
||||
options.SimulationTimeSeconds);
|
||||
stepTime);
|
||||
Trace("world-step");
|
||||
StampZoneSimulationTime(operationResult.Run, options.SimulationTimeSeconds);
|
||||
StampZoneSimulationTime(operationResult.Run, stepTime);
|
||||
}
|
||||
|
||||
var frame = AetheriaRuntimeDaemonFrameDocument.Create(
|
||||
|
|
|
|||
|
|
@ -75,6 +75,9 @@ namespace GameCult.Aetheria.State.Verse
|
|||
actions.Add(Action("simulation.rate.quadruple", "4x Speed", "SetSimulationRate", "simulation", "terminus-clock", ("scalarValue", "4")));
|
||||
actions.Add(Action("simulation.rate.eight", "8x Speed", "SetSimulationRate", "simulation", "terminus-clock", ("scalarValue", "8")));
|
||||
actions.Add(Action("simulation.rate.sixteen", "16x Speed", "SetSimulationRate", "simulation", "terminus-clock", ("scalarValue", "16")));
|
||||
actions.Add(Action("simulation.rate.thirty-two", "32x Speed", "SetSimulationRate", "simulation", "terminus-clock", ("scalarValue", "32")));
|
||||
actions.Add(Action("simulation.rate.sixty-four", "64x Speed", "SetSimulationRate", "simulation", "terminus-clock", ("scalarValue", "64")));
|
||||
actions.Add(Action("simulation.rate.one-twenty-eight", "128x Speed", "SetSimulationRate", "simulation", "terminus-clock", ("scalarValue", "128")));
|
||||
}
|
||||
if (entity != null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -91,6 +91,35 @@ does not earn state authority merely by crossing CultNet. Separate persistence
|
|||
or leases are justified only for a future shared spatial Verse with an explicit
|
||||
owner and lifecycle; they are not part of the Aetheria daemon contract.
|
||||
|
||||
## Terminus Simulation Clock
|
||||
|
||||
Terminus uses a daemon-owned, user-controllable simulation clock. Pause and slow
|
||||
rates provide unbounded tactical decision time. High rates provide transit time
|
||||
compression so a physically larger world does not require the player to watch
|
||||
uneventful coasting in real time. Supported requested rates currently range from
|
||||
pause through `128x`; Starbridge remains real-time-owned.
|
||||
|
||||
The requested simulation rate is not a renderer time scale. The daemon advances
|
||||
the deterministic fixed-step simulation repeatedly and publishes one coherent
|
||||
sample of the resulting state. Unity, Electron, bots, and other Eve clients may
|
||||
interpolate presentation between samples, but cannot advance committed game
|
||||
time or invent intermediate outcomes.
|
||||
|
||||
Time compression must eventually distinguish requested rate from effective
|
||||
rate. Decision-relevant daemon facts, including contact, hostile targeting,
|
||||
damage, weapon readiness, arrival, resource discovery, cargo events, docking,
|
||||
and failed orders, will clamp or pause the effective rate according to an
|
||||
explicit player policy. The interruption fact must name its reason and the
|
||||
simulation time at which it occurred; the daemon may not simulate past that
|
||||
boundary before publishing it. This attention policy is daemon-owned gameplay
|
||||
state, not client heuristics.
|
||||
|
||||
Compressed stepping must not multiply control-plane traffic. Commands and
|
||||
receipts retain their ordinary typed CultMesh path, SoA consumers receive the
|
||||
latest complete leased frame, and reactive UI state is sampled at a bounded
|
||||
publication cadence. Internal fixed steps remain deterministic and testable
|
||||
without requiring a renderer or wall-clock delays.
|
||||
|
||||
## Current Mechanism
|
||||
|
||||
The repo is mid-migration.
|
||||
|
|
|
|||
Loading…
Reference in a new issue