fix(streaming): block login on complete world reveal
Make initial login and portal arrival consume one WorldRevealReadinessBarrier that joins near-tier mesh publication, destination composite uploads, and collision residency before normal world geometry becomes visible. This ports retail SmartBox's blocking-cell completion edge into the asynchronous client instead of exposing a ground-only login. Add focused outdoor, indoor, texture, and invalid-claim tests; update the retail pseudocode, architecture, divergence record, issue ledger, roadmap baseline, and synchronized agent guidance. Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
parent
6c3bd4ce4b
commit
b60cb67009
14 changed files with 360 additions and 102 deletions
|
|
@ -239,6 +239,7 @@ src/
|
|||
Streaming/
|
||||
StreamingController.cs -> done
|
||||
GpuWorldState.cs -> done
|
||||
WorldRevealReadinessBarrier.cs -> shared login/portal reveal owner
|
||||
Input/
|
||||
PlayerMovementController.cs -> active movement driver
|
||||
Plugins/
|
||||
|
|
@ -705,6 +706,19 @@ replace state produced by another job. CPU mesh extraction may still be schedule
|
|||
onto `ObjectMeshManager`'s thread-safe work queue, but the worker never publishes
|
||||
partially hydrated cell membership or shell placement to the renderer.
|
||||
|
||||
### World-reveal readiness ownership
|
||||
|
||||
`WorldRevealReadinessBarrier` is the single App-layer owner of the edge that
|
||||
allows normal world geometry to become visible at initial login or after a
|
||||
portal. It joins `StreamingController`/`GpuWorldState` static-mesh publication,
|
||||
`WbDrawDispatcher` composite-texture warmup, and `PhysicsEngine` destination
|
||||
residency. Login's sky-only gate and portal-space transit consume the same
|
||||
predicate; they differ only in presentation. Composite preparation advances
|
||||
after `WbMeshAdapter.Tick` on the render thread, never from the streaming
|
||||
worker. This is acdream's asynchronous equivalent of retail
|
||||
`SmartBox::UseTime` holding position completion while
|
||||
`CellManager::blocking_for_cells` is set.
|
||||
|
||||
### Teleport cell identity at the streaming boundary
|
||||
|
||||
The network and physics layers carry retail's complete `Position`: an
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue