Technical reference

Tracking behavior and data quality

Understand the evidence behind recorded modes, time, classification, and combat totals.

Configuration and mode selection

Game defaults are resolved first, then League defaults, then explicit game-server overrides. Missing fields inherit. An explicit false or empty allowed-mode list is a real override, not a reset.

GameTeam-match modesAdditional tracking
MordhauSKM, HPTOpt-in DM; explicit Duel tracking; Presence only.
Chivalry: Medieval WarfareLTS, TOStandalone observation uses available protocol events.

Mordhau defaults remain SKM/HPT. A generic Deathmatch report may belong to a custom team mode, so enabling DM is an explicit free-for-all choice. Team Deathmatch remains an HPT candidate requiring appropriate score evidence; it is not treated as free-for-all DM.

Chivalry mode detection uses the map name because its RCON feed does not report a separate game mode: AOCLTS-… is LTS and AOCTO-… is TO. Other map prefixes remain untracked.

Team eligibility and fixtures

Expected size describes the intended format. Minimum players is checked on each side, excluding identifiable bots. Total population alone is insufficient.

Confirmed sessions retain their applied configuration. A change may remain pending until a safe boundary; unconfirmed detection can adopt an explicit override before any match is recorded. Bound fixtures use League rules and reject incompatible server overrides.

Recording and classification

The watcher can record a live match before its competitive/casual classification is settled. TRACKING means recording; VERIFYING means unresolved detection evidence. The completed game's roster can establish whether a pairing is a pug, scrim, or competitive matchup.

A nearby scheduled League fixture arms automatic competitive detection from 45 minutes before until 3 hours after its scheduled start. Binding a standard schedule or two-sided tournament fixture with .start <code> makes the intended fixture explicit. Expanded competition matches have no in-game code and use web result entry. Recognition, series rules, and approval still determine whether a League result can be recorded.

Adapter quality

Mordhau roster reads must be complete. A malformed or partial response is not a confirmed empty game server. Chivalry reconstructs a roster from events; reading that cache again is not a new observation, and it cannot establish an authoritative full human count.

Metadata becomes stale after 90 seconds without a fresh snapshot. Activity transitions can update without pretending old map/roster metadata was freshly polled.

RCON observations

Mordhau supplies fresh info and playerlist responses. Chivalry is push-only: it has no info or complete playerlist query, so Heir reconstructs the map and roster from events received on the authenticated RCON connection. A cached Chivalry roster read keeps each player's original observation time and cannot prove a complete human count.

If a connection drops, Heir reconnects according to the adapter's policy, but the gap breaks connected-time continuity and does not become a match interval. A malformed or incomplete Mordhau roster response fails closed instead of being treated as an empty game server. Use the game server setup guide for the public host, RCON port, and password requirements.

Connected time

  • Connected human time includes AFK.
  • Spectator time is included in the total and separately labeled when measurable.
  • Unknown spectator status is not silently classified as playing.
  • Only consecutive observations at most 45 seconds apart earn time.
  • Disconnects, failed roster reads, watcher restarts, and long gaps break continuity.
  • Re-reading a cached observation earns nothing. Map changes alone do not break valid continuity.
  • The usual flush cadence is 30 seconds; available observations also flush on meaningful events and shutdown.

Sampling can miss short visits and the tail after the last positive observation. It is observed coverage, not a lifetime playtime claim. Daily boundaries and reporting weeks are UTC; weeks begin Monday. No global cross-server lifetime total or public attendance leaderboard is implied.

Shared game servers and repeated observations

Connected time is counted per game server, not per League. Changing the RCON password, or having several Leagues track the same game server, does not multiply anyone's connected time. Players are matched by their linked game identity; a matching display name is never enough.

If tracking is interrupted and resumes, Heir counts only observations it has not already recorded, so a retry or an overlapping period cannot inflate totals. Overlaps are resolved conservatively, which can mean slightly less recorded time rather than more.

Heir cannot tell that two different addresses are the same game server. If you move a game server to a new host or address, its connected-time history stays with the address it was recorded under.

Duel and Deathmatch combat

Standalone combat totals do not fabricate team matches, round winners, duel wins/losses, or ratings. Known human observations gate attribution. Initial scoreboard reads and resets establish baselines rather than importing old scores. Unsupported damage/defense counters stay unavailable.

Only one record of combat totals is kept per game server, even when several Leagues watch it, and a repeated or retried batch of observations is never counted twice. When tracking moves between connections, a short window either side of the changeover can go unobserved, so a small gap is possible.

Next: Game server setup, Mordhau, Chivalry, or rating quality.