Docs · Engineering reference
Dedicated server session
docs/dedicated-session.mdEdit on GitHub
One session, run later on a worktree's own ports. This pass does not boot the server. The release integrator is in Workbench play. The gate is fixture logs:
node tools/dedicated/session.mjs --selftest
That command does not start ArmaReforgerServer. node tools/dedicated/session.mjs
prints the session and the launch flags. It does not start the process either.
The session
- Dedicated server up.
- One player is in game (
[ELDebug:CharacterCreation] spawning player). - A second player joins after the first is in game (
flow start for playerorspawning playerfor a different id, before the save). - A save (
save point createdorsave completed). - The process stops (
session ending, engine shutdown save expected) and comes back (resolved SCR_PersistenceSystem). - A load (
loading the latest save point) on that second process.
The load must show four lines, in this order, after the load starts:
[ELDebug:Persistence] applied N account record(s)[ELDebug:Persistence] applied N bank account record(s)[ELDebug:Persistence] applied N organization record(s)[ELDebug:VehicleLock] lock state -> locked
N is at least 1. The same four lines from before the restart do not count.
Ports
The server listens on 2001 whatever -bindPort says: -server <world> mode
ignores it (see docs/worktrees.md). Clients join 127.0.0.1:2001. Only one
server runs on the machine at a time; the CLI's server-2001 lock enforces
that. The restart passes -loadSessionSave.
Fixtures
| Log | Result |
|---|---|
tools/dedicated/fixtures/missing-joiner.log |
Fails. The late joiner is absent. The save, the restart, and the four load lines are present. |
tools/dedicated/fixtures/restart-load.log |
Passes. The second player joins after the first is in game, and the load shows the account, the bank balance, the organization, and the vehicle lock. |
node tools/dedicated/session.mjs --check <console.log> judges a log the same
way. It still does not start the server.