MatchZy on CS2: Run PUGs, Scrims, and 5v5 Matches
If you run a Counter-Strike 2 dedicated server for a team or a community, sooner or later you want proper match management: a warmup, a knife round, side selection, a ready system, pause handling, and round backups. On CS:GO that job belonged to Get5. On CS2 the community-standard tool is MatchZy, a CounterStrikeSharp plugin that runs PUGs, scrims, practice mode, and full 5v5 matches with simple chat commands and Get5-compatible config files.
Short version: install MetaMod:Source v2, then CounterStrikeSharp, then MatchZy. Players type .ready, the match auto-starts, and you can load Get5-style match configs with matchzy_loadmatch. MatchZy plays the role Get5 played on CS:GO.
What MatchZy Does
MatchZy is a single plugin that covers the whole competitive match lifecycle:
- Match modes: BO1 / BO3 / BO5 matches with map veto when you use a match configuration or a Get5-style panel.
- Practice mode: a dedicated practice state for grenade lineups, executes, and spawn drills.
- Knife round: automatic knife round with side selection, where the team with more players (or more total HP, then random as a tiebreaker) wins the knife.
- Ready system: players ready up in chat, and the match starts once the minimum is met.
- Pause and restore: tactical and technical pauses plus round backups so you can restore a specific round after a crash or a dispute.
Install Order: MetaMod, then CounterStrikeSharp, then MatchZy
MatchZy is not a standalone server mod. It is a CounterStrikeSharp plugin, and CounterStrikeSharp itself depends on MetaMod:Source v2. The install order is fixed:
- MetaMod:Source v2 hooks into the Source 2 engine. Install it first.
- CounterStrikeSharp is the C# plugin host that loads on top of MetaMod.
- MatchZy is the plugin that loads inside CounterStrikeSharp.
The official MatchZy release ships in three flavors: a plugin-only archive that you extract into csgo/ when MetaMod and CounterStrikeSharp are already present, plus two "with-cssharp" archives (one for Linux, one for Windows) that bundle CounterStrikeSharp. If you are setting up from scratch, the with-cssharp archive is the easier path because only MetaMod has to be installed first.
For the underlying server install (SteamCMD app 730, the steamclient.so symlink, GSLT, and the cs2.sh launch), see our CS2 Dedicated Server Setup guide. MatchZy sits on top of a working dedicated server.
Configuration Files
MatchZy stores its configuration in csgo/cfg/MatchZy/. These files are executed automatically as the match moves between phases, which keeps your warmup, knife, live, and practice rules cleanly separated:
| File | When it runs |
|---|---|
config.cfg | On plugin load. Holds your matchzy_* cvars. Reload it live with exec MatchZy/config.cfg. |
warmup.cfg | When warmup starts. |
knife.cfg | When the knife round starts. |
live.cfg | When the match goes live. |
prac.cfg | When practice mode starts. |
admins.json | Steam64 IDs allowed to run admin commands. Reload with .reload_admins. |
whitelist.cfg | Steam IDs allowed to connect when whitelist is on. |
Key cvars (config.cfg)
The cvars below control match behavior. Put them in cfg/MatchZy/config.cfg:
| Cvar | Purpose | Default |
|---|---|---|
matchzy_minimum_ready_required | Players who must be ready before a match starts | 2 |
matchzy_knife_enabled_default | Whether the knife round is on by default | true |
matchzy_whitelist_enabled_default | Whether the player whitelist is on by default | false |
matchzy_kick_when_no_match_loaded | Kick clients if no match is loaded | false |
matchzy_autostart_mode | Which mode to load on startup (0 = none, 1 = match, 2 = practice) | 1 |
matchzy_demo_path | Folder where match demos are saved | MatchZy/ |
matchzy_pause_after_restore | Pause the match after a round restore | true |
matchzy_reset_cvars_on_series_end | Restore cvars when a series ends | true |
A common community-server choice is to set matchzy_minimum_ready_required to the team size you expect (for a strict 5v5, set it to 10) so a match cannot go live until everyone has readied.
Running a Match: the Commands
MatchZy is driven mostly from in-game chat. Player commands are open to everyone; admin commands require a Steam64 ID listed in admins.json.
Player commands
| Command | Effect |
|---|---|
.ready / .r | Mark yourself ready |
.unready | Cancel your ready state |
.forceready | Ready your entire team at once |
.pause / .unpause | Tactical pause and resume |
.tech | Call a technical pause |
.stay / .switch | Choose to keep or swap sides after the knife round |
.stop | Restore the backup of the current round |
Admin commands
| Command | Effect |
|---|---|
.start | Force-start the match (bypass the ready system) |
.restart / .endmatch | Force-reset / end the match |
.prac / .tactics | Start practice mode |
.exitprac | Leave practice mode and return to match mode |
.roundknife / .rk | Toggle the knife round on or off |
.skipveto / .sv | Skip the current veto phase |
.restore <round> | Restore the backup of a given round number |
.forcepause / .fp | Pause the match as an admin |
.forceunpause / .fup | Force-unpause the match |
.map <mapname> | Change the map |
.team1 <name> / .team2 <name> | Set team names |
.rcon <command> | Send a raw command to the server from chat |
.settings | Show the current MatchZy settings |
The simplest run-through: players join, type .ready, the match auto-starts at the configured threshold, the knife round decides sides, the knife winner picks .stay or .switch, and the live half begins. If you disable the knife round with .rk, the match jumps straight from warmup to live.
Loading a Match Config (Get5-style)
For structured matches, leagues, or a PUG bot, you load a JSON match configuration instead of running everything by hand. MatchZy provides two console commands:
# Load a local JSON config (path is relative to the csgo directory)
matchzy_loadmatch matchzy_config/match01.json
# Or fetch the config over HTTP(S), with an optional auth header
matchzy_loadmatch_url https://your-panel.example/api/match/123 Authorization "Bearer TOKEN"
The config format mirrors Get5, so existing tooling carries over. A minimal config needs only maplist, num_maps, team1, and team2; players_per_team, map_sides, clinch_series, and a cvars block are optional, and matchid auto-generates if you leave it out. Because MatchZy keeps the Get5 G5API / G5V compatibility, match panels built for Get5 generally work without rewrites.
A modded CS2 server runs as a community / insecure server. It will not show up in Valve matchmaking and does not issue VAC bans, exactly as community servers behaved on CS:GO. Players connect by direct IP or through your panel. For community ban management, pair MatchZy with a ban-management plugin rather than relying on VAC.
Common Pitfalls
| Symptom | Likely cause | Fix |
|---|---|---|
| MatchZy commands do nothing in chat | CounterStrikeSharp or MetaMod did not load | Check the install order; confirm MetaMod and CounterStrikeSharp load before MatchZy in the server log |
| Admin commands rejected | Your Steam64 ID is not in admins.json | Add your ID, then run .reload_admins |
| Match never starts | matchzy_minimum_ready_required is higher than the players present | Lower the threshold or have everyone .ready; an admin can .start |
| Plugin breaks after a CS2 update | Source 2 engine changes can break CounterStrikeSharp natives | Update CounterStrikeSharp and MatchZy together to releases that target the current CS2 build |
That last row is worth planning around. CS2 server updates occasionally break CounterStrikeSharp until the framework and its plugins are rebuilt, so keep MatchZy and CounterStrikeSharp on matched, recent releases and test on a staging copy before a league night.
Frequently Asked Questions
Is MatchZy a replacement for Get5?
For CS2, effectively yes. Get5 targeted the CS:GO (Source 1) engine. MatchZy is the actively maintained CounterStrikeSharp plugin that fills the same role on CS2 and keeps Get5-style config compatibility so existing match pipelines migrate cleanly.
Do I need a separate practice plugin?
No. Practice mode is built into MatchZy. An admin starts it with .prac and exits with .exitprac, and the prac.cfg file controls the practice rules.
Where are demos saved?
In the folder set by matchzy_demo_path, which defaults to MatchZy/. Point it at a path your panel can reach if you want to publish demos after each match.
Can I run practice and matches on the same server?
Yes. Use matchzy_autostart_mode to pick what loads on startup, then switch between practice and match mode with .prac / .exitprac and .start during the session.
Related Reading
- CS2 Dedicated Server Setup (Linux + SteamCMD)
- SourceMod, MetaMod, and CounterStrikeSharp on CS2
- CounterStrikeSharp Transition Guide
- CS2 Competitive Guide
- Official: MatchZy documentation
Quick Start with Supercraft
Supercraft hosts Counter-Strike 2 dedicated servers with the MetaMod plus CounterStrikeSharp stack ready to go, so you can drop in MatchZy and run scrims, PUGs, and 5v5 matches without wrestling the install order. Config files, RCON, and demos are all panel-driven on high-frequency cores tuned for sub-tick stability.