Pauses and backups
Pause types
Section titled “Pause types”| Type | Started by | Ends when |
|---|---|---|
| Normal | .pause |
Both teams type .unpause. |
| Tactical | .tac (or .pause with matchzy_use_pause_command_for_tactical_pause) |
The timeout runs out. |
| Technical | .tech |
Both teams unpause, or matchzy_tech_pause_duration runs out (then it unpauses on its own). |
| Admin | .forcepause |
An admin types .forceunpause. |
| Auto | A team drops below matchzy_autopause_minplayers |
The team is full again; the game resumes after matchzy_autopause_resume_delay seconds. |
Overtime: tactical timeouts (.tac) follow the engine settings in live.cfg: 4 per team in regulation (mp_team_timeout_max) and one more when overtime starts (mp_team_timeout_ot_add_once 1, up to mp_team_timeout_ot_max 5). Wingman and rush (live_wingman.cfg, live_rush.cfg) give 1 timeout of 60 seconds per team and 1 more in each overtime. In every overtime period each team may also use .pause matchzy_overtime_pauses_per_team times (1 by default). Admin pauses are not limited.
Autopause replaces the game’s own sv_matchpause_auto_5v5 and ignores bot teams. Every pause and unpause is sent as a match_paused / match_unpaused event.
Round backups
Section titled “Round backups”MatchZy saves a backup at the start of every live round (Valve’s backup system plus MatchZy’s own state). Backups live in csgo/MatchZyDataBackup/ and can also be POSTed to matchzy_remote_backup_url.
| Situation | Command |
|---|---|
| Both teams want to replay this round | .stop (both teams) |
| Admin replays this round | .restorecurrent / !rr |
| Go back one round | .restorelast |
| Go back to round N | .restore <n> |
| See what is available | .backups |
| Pick a round from a list | .ma → Match Control → Restore Round (asks for confirmation) |
| Server crashed mid-match | Nothing: the match recovers on its own (see Crash recovery). By hand: .ma → Restore Round, or .backups and then matchzy_loadbackup <file>.json |
After a restore
Section titled “After a restore”- The match pauses (
matchzy_pause_after_restore). Setmatchzy_restore_auto_unpause trueto resume on its own aftermatchzy_restore_unpause_delayseconds. - The scoreboard is rolled back too: round history, kills, deaths, assists, damage, score and MVPs (
matchzy_restore_scoreboard_stats). - A restore is only announced once the server has actually loaded it; a failed load is reported in chat.
Crash recovery
Section titled “Crash recovery”A loaded match is kept in csgo/MatchZyDataBackup/active_match.json until the series ends or the match is cancelled. When the server crashes, restarts or MatchZy is reloaded in the middle of a match:
- Automatic recovery (
matchzy_auto_recover, default on): 10 seconds after the server is ready, with no match loaded, MatchZy restores the newest round backup of that match. The match config, teams, match id and score come back, and the round is played once both teams are ready. A match interrupted before its first round backup is loaded again from its match config. Matches last active more thanmatchzy_auto_recover_max_ageminutes ago (default 180) are left alone. A panel that loads a match within those 10 seconds wins. The panel is told with amatch_recoveredevent. - Players are not locked out: with
matchzy_kick_when_no_match_loaded, a player on the interrupted match’s roster is let in while no match is loaded, and admins are told in chat. - Valve’s raw restore goes through MatchZy:
mp_backup_restore_load_file <file>.txtonly brings the score back, not the rosters, team names or pause state. Withmatchzy_raw_backup_restore redirect(default) it is run as MatchZy’s restore of<file>.json(a.jsonname works the same). When only the.txtexists, MatchZy rebuilds the.jsonfrom another backup of the same match (or the loaded or interrupted match) and works out each team’s side for that round; admins are asked to check the sides.blockrefuses it,allowruns it as is. .restore,.restorelastand.restorecurrentwithout a live match list the newest backups on disk and the command to load one.
Runbook for tournament admins
Section titled “Runbook for tournament admins”| Problem | Do this |
|---|---|
| Players are kicked on connect | Read the kick reason in the server log ([ConnectGate], [Disconnect]) or the panel’s player_kicked event. no_match_loaded: the match is not loaded, load it again (or matchzy_loadbackup). not_in_match: the SteamID is missing from the roster. |
| The server crashed or restarted | Wait 10 seconds for the automatic recovery, then both teams .ready. Without it: .recover (or matchzy_recover over RCON). |
| Wrong score or a round must be replayed | .restore <round>. Never mp_backup_restore_load_file. |
| A round does not end (everyone dead, timer at 0:00) | MatchZy ends it after a few seconds (matchzy_round_watchdog). |
| Check the connection to the panel | matchzy_test_event |