Repository navigation
H7ModEngine 0.2.1
Multiplayer: opt-in desync reports
OnlineLobby (0.3.0) has a new setting, Send desync reports (Mods menu → OnlineLobby). It is off by default.
When it's on and a multiplayer game goes out of sync, or a command reaches the other PC too late to be applied, your
game sends a short report to the community lobby. The report holds the last few hundred multiplayer events (commands,
turn counters, random rolls, heroes, armies and resources) and your game, engine and mod versions. The reports help
track down and fix the game's multiplayer desyncs, and they help most when every player in a game turns the setting on.
- No player or profile names, IP addresses or save games are sent.
- At most 3 reports per game, up to 96 KB each. The lobby keeps them for 30 days.
- With the setting off, online play works exactly as in 0.2.0.
For mod makers and testers
- MPSyncDebug (new; Developer category, off by default): writes a full multiplayer trace of each game to
H7ModEngine\logs\mpsync-<host|client>-<time>.log. The trace covers every command and turn-counter step, synced random
rolls, the game's own out-of-sync checks, commands that arrive too late, frame gaps (for example while a player
alt-tabs) and state snapshots. Developer mods don't count as gameplay mods, so the lobby browser doesn't flag a host
for running it. - New shared library
lib\mpsync.lua(the multiplayer tracer), installed by the DLL and used by both mods above. - Repository tools:
tools/mpsync_diff.pycompares two players' traces and points at the first difference;
tools/fetch_reports.pydownloads desync reports from the lobby (admin only) and compares each game's pair. docs/DESYNC.md: how the game keeps players in sync, and why a host alt-tabbing can break it.
Installing / upgrading
Replace Binaries\Win64\dinput8.dll. On the next start it updates OnlineLobby and installs MPSyncDebug and
lib\mpsync.lua. All players in a game should use the same version: the online browser marks a host running a
different engine version as "Differs".