Skip to content

Match Setup

What is it?

A match configuration file contains everything that MatchZy and your server needs to host a series. This includes locking players to their correct team and side, setting the map(s) and configuring the game rules.

Note: MatchZy can still be used for pug/scrim/practice without setting up matches (if matchzy_kick_when_no_match_loaded if set to false). Match setup is only required when you want to host a series and lock players in their correct team and side.

In this documentation, we'll see how we can setup a match in MatchZy using a JSON file (structure of the JSON file is given below). There are 2 commands available which can be used to load a match:

  1. matchzy_loadmatch <filepath>: Loads a JSON match configuration file relative to the csgo directory.
  2. matchzy_loadmatch_url <url> [header name] [header value]: Loads a remote (JSON-formatted) match configuration by sending an HTTP(S) GET to the given URL. You may optionally provide an HTTP header and value pair using the header name and header value arguments. You should put all arguments inside quotation marks (""). ("").

Example

Example only

Required fields: "maplist", "team1", "team2" and "num_maps"``. If"matchid"` is left empty, it will be auto-generated by the server.

csgo/astralis_vs_navi_27.json
{
  "matchid": 27,
  "team1": {
    "name": "Astralis",
    "players": {
      "76561197990682262": "Xyp9x",
      "76561198010511021": "gla1ve",
      "76561197979669175": "K0nfig",
      "76561198028458803": "BlameF",
      "76561198024248129": "farlig"
    }
  },
  "team2": {
    "name": "NaVi",
    "players": {
      "76561198034202275": "s1mple",
      "76561198044045107": "electronic",
      "76561198246607476": "b1t",
      "76561198121220486": "Perfecto",
      "76561198040577200": "sdy"
    }
  },
  "num_maps": 3,
  "maplist": [
    "de_mirage",
    "de_overpass",
    "de_inferno"
  ],
  "map_sides": [
    "team1_ct",
    "team2_ct",
    "knife"
  ],
  "spectators": {
    "players": {
      "76561198264582285": "Anders Blume"
    }
  },
  "clinch_series": true,
  "players_per_team": 5,
  "cvars": {
    "hostname": "MatchZy: Astralis vs NaVi #27",
    "mp_friendlyfire": "0"
  }
}

This file can be loaded using :

  1. matchzy_loadmatch astralis_vs_navi_27.json (if you have astralis_vs_navi_27.json in your csgo directory)
  2. matchzy_loadmatch_url "https://<url>/astralis_vs_navi_27.json"

Other optional fields (Get5 compatible):

  • "skip_veto": false by default, so a maplist with more maps than num_maps is vetoed. Set it to true to play the first num_maps maps of the list in order. A maplist with exactly num_maps maps is always played in order.
  • "veto_first": team1 (default), team2 or random: the team that starts the default veto. When veto_mode is given, it is used exactly as written.
  • "side_type": standard (default), always_knife, never_knife or random: how sides are chosen for maps without an entry in map_sides.
  • "players" can also be an array of SteamID64s, e.g. "players": ["76561198264582285", "76561197960265728"].
  • true/false fields also accept 1/0.

Entries in "cvars" must be a real convar (like mp_friendlyfire) or a MatchZy/Get5 setting (like matchzy_remote_log_url), and the value cannot contain ", ; or line breaks. Console commands (e.g. quit, exec), MatchZy/Get5 commands that perform an action (such as matchzy_loadmatch_url or get5_endmatch), rcon_password and matchzy_everyone_is_admin are ignored and logged. matchzy_demo_path and matchzy_demo_name_format must be relative paths without ...

Current Limitations?

  1. Coaches cannot be added directly via this match configuration, hence to add a coach, add them to "players" key of the team and then use .coach <teamside> command in the server to start coaching.
  2. Only Steam64id is supported currently.

These limitations will be resolved ASAP in the next updates! :D