Skip to content

H7ModEngine 0.2.1 (Multiplayer: opt-in desync reports)

Latest

Choose a tag to compare

@Whaileee Whaileee released this 09 Nov 22:59
c532a9d

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.py compares two players' traces and points at the first difference;
    tools/fetch_reports.py downloads 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".