docs(runtime): close projectile ownership

This commit is contained in:
Erik 2026-07-26 15:27:50 +02:00
parent 2aee33569f
commit c30a3efeb0
11 changed files with 263 additions and 35 deletions

View file

@ -236,7 +236,9 @@ src/
collision receipts, bodies/hosts/worksets
RuntimeRemotePhysicsUpdater.cs -> presentation-free remote simulation
RuntimeOrdinaryPhysicsUpdater.cs -> presentation-free object simulation
-> J3J4 and J5.1J5.5 complete; J5.6 projectile runtime active
RuntimeProjectile.cs -> canonical projectile component/prediction owner
RuntimeProjectilePhysicsUpdater.cs -> presentation-free projectile simulation
-> J3J4 and J5.1J5.6 complete; J5.7 cleanup/closeout active
-> may reference Core, Core.Net, Content, and Plugin.Abstractions only
-> must never reference App, UI, Silk.NET, OpenAL, Arch, or ImGui
@ -486,9 +488,9 @@ versions, and exact tombstones. `RuntimeEntityRecord` is presentation-free.
an App record. `MaterializeLiveEntity` claims the Runtime local ID and creates
one graphical `LiveEntityRecord` sidecar in `LiveEntityProjectionStore`, keyed
by exact `RuntimeEntityKey` (local ID plus `INSTANCE_TS`). The sidecar owns the
App animation, remote-motion, projectile, hydration, and effect presentation
state. `RuntimeEntityRecord` deliberately still carries the canonical
`PhysicsBody`/physics-host facts until their coherent J5 move.
App animation, hydration, and effect/render presentation state.
`RuntimeEntityRecord` owns the canonical `PhysicsBody`, physics host, remote
motion, projectile component, clocks, state, and full cell.
Live `PhysicsDesc` effect fields replace Setup defaults on that same exact
sidecar; rebucketing never recreates it.
@ -517,8 +519,11 @@ MTS/jump/AP cadence lives in Runtime (`aa3f4a60`). One
graph, transition scratch, shadow registry, typed collision admissions,
canonical body/host/remote components, ordinary/remote worksets, simulation,
and full-cell commits. App supplies prepared collision and animation/shape
inputs, then projects committed snapshots (`7e6033d0`). J5.6 next moves the
projectile component and prediction lifecycle.
inputs, then projects committed snapshots (`7e6033d0`). The same Runtime
physics owner now owns the canonical projectile component, exact-key workset,
prediction/correction lifecycle, retail projectile simulation, and cell
commits. App resolves immutable Setup/DAT collision shape data and projects
committed render, shadow, and effect-pose results only (`2aee3356`).
`GpuWorldState` owns spatial buckets only and retains the exact projection key
through loaded/pending movement, landblock retirement/reload, origin recenter,

View file

@ -476,9 +476,10 @@ useful ordering seam, but its ownership status is **partial**.
| Retained gameplay UI | **Mostly complete feature ownership** | `RetailUiRuntime` and focused panel/controllers own layout and behavior. `GameWindow.OnLoad` still performs substantial service composition, which is allowed until the final composition cleanup. |
| Action/combat/magic/movement | **J5.1J5.4 complete** | Runtime `RuntimeActionState` owns the exact selection, temporary target mode, interaction transactions, combat attack/target/mode, and spell-cast intent children. Interaction owns use/appraisal/pickup identity, ordered FIFO, and exact post-arrival token while borrowing J4's sole busy gate. `RuntimeLocalPlayerMovementState` owns the exact local controller, construction seam, autorun latch, typed view, and outbound MTS/jump/AP cadence. Retained bars, physical input, world/content queries, transport, lighting, toasts, drag/drop, effects, and animation remain App adapters/presentation. No parallel App owner remains (`b298f99f`, `f5f7b417`, `20df9d15`, `aa3f4a60`). |
| Physics/remote simulation | **J5.5 complete** | `RuntimePhysicsState` owns one per-session engine, production cache/cell graph, transition scratch, shadow registry, typed collision admissions, canonical bodies/hosts/remotes, keyed ordinary/remote worksets, simulation, and cell commits. App streaming supplies immutable prepared collision; animation/shape adapters supply graphical inputs and project committed snapshots only (`7e6033d0`). |
| Projectile simulation | **J5.6 complete** | `RuntimeEntityRecord`/`RuntimePhysicsState` own the canonical projectile component, exact-key workset, prediction/correction state, unchanged retail quantum/integration/sweep/collision loop, and cell commits. App resolves immutable Setup/DAT shape input and projects committed render, shadow, and effect-pose results only (`2aee3356`). |
| Landblock presentation | **Complete** | `LandblockBuildFactory` owns the captured-origin DAT transaction; concrete render/physics/DAT-static publishers and `LandblockPresentationPipeline` own typed-meter publication and exact retryable retirement. `StreamingController` owns stable destination/control/unload/Near/Far queues and destination reservation. CPU mesh-cache restaging requires an exact live owner. `StreamingOriginRecenterCoordinator` serializes old-window retirement with teleport/session origin lifetimes. `GameWindow` retains construction and one pipeline field only (`c79d0a49`, closeout `4a205a3e`; Slice E closeout `91e82c3c`). |
| Render-frame orchestration | **Complete** | `RenderFrameOrchestrator` owns the GPU-flight, resource, world/PView/shared-alpha, private-presentation, diagnostics, screenshot, and recovery graph. `GameWindow.OnRender` takes one logical window-size snapshot and performs one immutable handoff (`9d7df1bf`). |
| Unified `GameEntity` | **Slice J active at J5.6** | Canonical identity, retained-object lifetime, direct views, ordered entity/object deltas, J4 gameplay state, J5.1J5.4 action/combat/magic/movement state, and J5.5 physics/remote simulation share failure-safe Runtime owners while exact graphical sidecars stay in App. J5.6J7 move projectiles and finish cleanup before one Runtime composition root. |
| Unified `GameEntity` | **Slice J active at J5.7** | Canonical identity, retained-object lifetime, direct views, ordered entity/object deltas, J4 gameplay state, J5 action/combat/magic/movement/physics/remote/projectile simulation share failure-safe Runtime owners while exact graphical sidecars stay in App. J5.7 removes remaining temporary seams and proves no-window parity before J6J7 add world handshakes and one Runtime composition root. |
### 4.3 Revised extraction sequence