feat: scene ghosting, as the client streams a zone's scenes

The client keeps the scene under the player loaded, the scenes the zone
file's transitions connect to it, and the global scene
(Zone::StreamScenesAroundPosition 0x0108a3f0, TerrainManager::GetSceneAtPos
0x01069010, the connected scenes at 0x01066500; transitions naming a
missing scene dropped as Zone::FixupInvalidTransitions 0x010842e0 does).

- ZoneScenes (dCommon): the terrain's scene map lookup and the scene graph,
  shared by the world server and the dashboard.
- Objects remember the scene they were placed in (spawners pass theirs on).
- ghosting_scenes=1 (world config, off by default): players get the objects
  of their loaded scenes instead of the ones within the ghosting distances;
  objects from no scene go by the scene under them. Zones without a scene
  map keep distance ghosting.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-27 22:02:20 -05:00
parent a979ae1658
commit 83b87744c1
20 changed files with 363 additions and 19 deletions

View File

@@ -108,3 +108,8 @@ save_lxfmls=0
# 1: saving a brick by brick model uses up the bricks in it, as live did. 0: they go back to the backpack.
bbb_consume_bricks=0
# 1: players get the objects of the scenes their game keeps loaded (the scene under them, the scenes connected to it
# by the zone's scene transitions, and the global scene) instead of the objects within the ghosting distances.
# Needs the zone's terrain scene map; zones without one keep distance ghosting.
ghosting_scenes=0