mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-02 02:43:44 +00:00
docs: following a player across worlds
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -47,7 +47,8 @@ A web dashboard for running and moderating a server, started and supervised by m
|
||||
* **Game text from the client:** zone, item and other game names and labels come from the client's locale, in the
|
||||
viewer's language (picker in the user menu, or the browser's language), never written into the pages.
|
||||
* **Packet capture and replay:** record whole packets for an account, a character or everything; play them back with
|
||||
movement in World 3D; replay bundles against a sandbox stack with a headless client. See
|
||||
movement in World 3D, which follows a player across worlds (live too) with the world changes marked on the
|
||||
timeline; replay bundles against a sandbox stack with a headless client. See
|
||||
[docs/CaptureReplay.md](docs/CaptureReplay.md).
|
||||
* **Settings:** every setting the servers read, grouped by purpose with typed inputs, conditions, fuzzy search,
|
||||
history, and hot reload; values can be set on the page or kept in the `.ini` files.
|
||||
|
||||
@@ -5,6 +5,17 @@ back on the dashboard; and replay it against a throwaway server to see how the s
|
||||
takes the 2014 live captures, which makes them a conformance test for the server. The dashboard side is described in
|
||||
[Dashboard.md](Dashboard.md#packet-captures); this document is how it works and the rules it follows.
|
||||
|
||||
## Playback across worlds
|
||||
|
||||
An account or character capture puts every server on one timeline, so one character's packets move from one world
|
||||
server to the next when they transfer. `CaptureTools::Worlds` lists each character's world visits in time order: one
|
||||
entry each time the packets their client sends (never the server's, since the old world can still send a few after
|
||||
the client reached the new one) carry another zone or instance in the record header; zone 0 is character select.
|
||||
The dashboard serves them with the zone's name from the client's locale (`/api/inspector/sessions/:id/worlds`, and
|
||||
`worlds` in `/positions`, which takes `?zone=all` for every zone's movement). The capture page marks each change on
|
||||
its slider; World 3D switches its scene to the followed character's world at that time (`world3d-core.js`
|
||||
`captureSwitch`, `worldMarkers`).
|
||||
|
||||
Captures, bundles and fixtures are player data. None of them is ever committed: `captures/`, `*.bundle` and
|
||||
`tests/fixtures-local/` are in `.gitignore`.
|
||||
|
||||
@@ -210,4 +221,7 @@ decoder registry knows and checks it writes back to the same bytes; without fixt
|
||||
captured character is picked.
|
||||
- Arm everything on a busy test server for a minute: no stutter; the capture's size grows about once a second.
|
||||
- Play a capture with movement back and open World 3D: the player moves with the playhead.
|
||||
- Capture a character that changes worlds (a rocket or a portal): the capture page's slider has a mark at each change
|
||||
named after the new zone; in World 3D, following the character switches the scene at the mark and the camera stays
|
||||
on them, forward and when seeking back.
|
||||
- Export a bundle, replay it with `CaptureTool replay`, and open a kept sandbox's logs.
|
||||
|
||||
@@ -969,6 +969,14 @@ objects and its sky, with everyone online moving on it live. Pick the zone and,
|
||||
Click a player to see who it is, double-click (or **Follow**) to keep the camera on them; click an object for its name,
|
||||
LOT and the scene it belongs to. Needs `client_location`.
|
||||
|
||||
Following works across worlds. Live, when the position feed reports the followed player only in another world (another
|
||||
zone, or another instance when one instance is picked), the view loads that world's scene, keeps the camera on them
|
||||
and says "<name> moved to <zone> #<instance>"; while the old world still reports them, or before the new one does, it
|
||||
waits. With **All instances** picked it stays on all instances. In a packet capture's replay the followed character
|
||||
is followed the same way at the moment their client's packets move to another world server; a capture of one
|
||||
character follows that character from the start. The replay slider marks each world change with the zone's name
|
||||
(click a mark to go there); zone names come from the client's locale.
|
||||
|
||||
The view fills the window (the page doesn't scroll; the wheel only zooms). View settings are in the **Layers** tab
|
||||
(on phones, the **Panel** button opens it from the bottom) and are remembered per account.
|
||||
|
||||
@@ -1817,7 +1825,9 @@ limits and the replay are in [CaptureReplay.md](CaptureReplay.md).
|
||||
to the playhead. Filter by name or server; click a packet for its decoded fields (from the server's own packet
|
||||
structs) and its bytes. Game messages show their names; their fields are decoded by the game message inspector.
|
||||
- **World 3D** opens the captured movement in World 3D's replay (needs `players_history`); while the capture page
|
||||
plays, its playhead drives World 3D.
|
||||
plays, its playhead drives World 3D, which switches to the world the followed character is on (see World 3D).
|
||||
- The slider marks each time a captured character moved to another world server, with the zone's name (and the
|
||||
character's, when there are several); click a mark to go there.
|
||||
- **Export bundle** downloads a portable bundle for the capture tool's replay; **Export anonymised** also replaces
|
||||
character names and chat, for a local test fixture.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user