← Back

Contents :: CrimsonZamboniDeathmatch Arena Customization Guide 🔗

Introduction 🔗

Starting with version 1.33.0, CrimsonZamboniDeathmatch allows deathmatch arenas to be defined in JSON files stored in the mission folder. Most built-in arenas are now defined in the arenas.json file. Avoid modifying this file, as it will be overwritten every time CrimsonZamboniDeathmatch is updated. User-defined custom arenas should be defined in the custom-arenas.json file. Both files use the exact same JSON structure.

Example JSON arena definitions can be found in the provided arenas.json files in each of the deathmatch mission folders.

This guide assumes that you are already familiar with JSON syntax. See the Mission Customization Guide if you would prefer to customize arenas using Enforce script.

Structure 🔗

The root of the arenas JSON should be an object containing an "arenas" array attribute:

{
  "$schema": "https://crimsonzamboni.com/deathmatch/schemas/v1/arenas.json",
  "arenas": [
  ]
}

Note: The "$schema" attribute is not required but, when present, can help identify syntax and structure problems when editing the file in an editor that supports JSON schema validation, such as Visual Studio Code.

Required Attributes 🔗

Each arena in the array must have "name" and "center" attributes. The "name" is a string that should uniquely identify the arena. If the name matches a previously defined arena's name, it will replace the previous definition; this may be useful for overriding built-in arenas. Arena names must not contain spaces. The "center" is an array of three numbers identifying the X, Y, and Z coordinates of the center of the arena.

{
  "arenas": [
    {
      "name": "unique-name",
      "center": [1234.56, 7.890, 5556.32]
    }
  ]
}

Arena Size and Shape 🔗

By default, arenas are circular. To make an arena rectangular instead of circular, set the "rectangular" attribute to true.

Rectangular arenas must also define "xSize" and "zSize" attributes to define the size of the arena in the X (East to West) and Z (North to South) directions.

{
  "arenas": [
    {
      "name": "Squareville",
      "center": [1234.56, 7.890, 5556.32],
      "rectangular": true,
      "xSize": 200,
      "zSize": 200
    }
  ]
}

Circular (non-rectangular) arenas must define a "radius" attribute.

{
  "arenas": [
    {
      "name": "Circletown",
      "center": [1234.56, 7.890, 5556.32],
      "radius": 325
    }
  ]
}

Player Limits 🔗

To prevent an arena from being randomly chosen when there are too few and/or too many players connected, set the "minimumPlayers" and/or "maximumPlayers" attributes, respectively. By default, there is no minimum or maximum player count.

{
  "arenas": [
    {
      "name": "Circletown",
      "center": [1234.56, 7.890, 5556.32],
      "radius": 325,
      "minimumPlayers": 5,
      "maximumPlayers": 10
    }
  ]
}

Player Spawns 🔗

Although optional, a sufficient number of player spawn positions should be set to ensure that players do not spawn on top of each other at the start of rounds. To set the possible player spawn positions for an arena, define the "playerSpawns" attribute as an array of 3-element arrays of numbers. For example:

{
  "arenas": [
    {
      "name": "Circletown",
      "center": [1234.56, 7.890, 5556.32],
      "radius": 325,
      "playerSpawns": [
        [4567.89, 1.234, 9876.54],
        [4433.24, 2.872, 9798.44],
        [4599.16, 1.598, 9811.59]
      ]
    }
  ]
}

If no player spawn positions are set, all players will spawn at the center of the arena.

Crate Spawns 🔗

Crates containing high-tier items can be configured to spawn at random locations by defining the "crateSpawns" attribute as an array of 3-element arrays of numbers. For example:

{
  "arenas": [
    {
      "name": "Circletown",
      "center": [1234.56, 7.890, 5556.32],
      "radius": 325,
      "crateSpawns": [
        [4567.89, 1.234, 9876.54],
        [4433.24, 2.872, 9798.44],
        [4599.16, 1.598, 9811.59]
      ]
    }
  ]
}

Note: No crates will spawn if there are no crate spawn locations set.

Infected Spawns 🔗

Infected can be configured to spawn at random locations by defining the "infectedSpawns" attribute as an array of 3-element arrays of numbers. For example:

{
  "arenas": [
    {
      "name": "Circletown",
      "center": [1234.56, 7.890, 5556.32],
      "radius": 325,
      "infectedSpawns": [
        [4567.89, 1.234, 9876.54],
        [4433.24, 2.872, 9798.44],
        [4599.16, 1.598, 9811.59]
      ]
    }
  ]
}

Note: No infected will spawn if there are no spawn locations set.

Christmas Spawns 🔗

When Christmas is enabled, Christmas trees can be configured to spawn by defining the "christmasSpawns" attribute as an array of 3-element arrays of numbers. For example:

{
  "arenas": [
    {
      "name": "Circletown",
      "center": [1234.56, 7.890, 5556.32],
      "radius": 325,
      "christmasSpawns": [
        [4567.89, 1.234, 9876.54],
        [4433.24, 2.872, 9798.44],
        [4599.16, 1.598, 9811.59]
      ]
    }
  ]
}

Note: No Christmas trees will spawn if there are no spawn locations set.

Props 🔗

To spawn static objects inside the arena when rounds start, define the "props" attribute as an array of objects. Each object in the array must contain three attributes:

  1. "type": A string identifying the DayZ type of the object to spawn.
  2. "position": An array of three numbers describing the X, Y, and Z coordinates where the object should be placed.
  3. "orientation": An array of three numbers describing the orientation of the object.

For example:

{
  "arenas": [
    {
      "name": "Circletown",
      "center": [1234.56, 7.890, 5556.32],
      "radius": 325,
      "props": [
        {
          "type": "Land_Wreck_C130J",
          "position": [4567.89, 1.234, 9876.54],
          "orientation": [-161.993, 0.5, 6.5]
        }
      ]
    }
  ]
}

Dark 🔗

Configuring an arena to be "dark" instructs the server to spawn players with Night Vision Goggles, even if the world time is set to daylight hours. This can be useful for creating arenas in underground locations on modded maps that make underground locations dark. For example:

{
  "arenas": [
    {
      "name": "Dark City",
      "center": [1234.56, 7.890, 5556.32],
      "radius": 325,
      "dark": true
    }
  ]
}

Disable Walls 🔗

Walls enclosing arenas can be disabled on a per-arena basis. For example:

{
  "arenas": [
    {
      "name": "Open Range",
      "center": [1234.56, 7.890, 5556.32],
      "radius": 325,
      "disableWalls": true
    }
  ]
}

See CrimsonZamboniDeathmatch Setup Guide: Disable Walls for a way to globally disable walls on all arenas.