~/docs/paintball/configuration/arenas
paintball docs›
Paintball
Arenas
-- 2 code blocks · 2 min read
The arena system is fully configurable. You can add as many arenas as you want in shared/config.lua.
Included Arenas
Classic Arena (boardwalk)
| Property | Value |
|---|---|
| Name | Classic Arena |
| Description | Compact indoor arena with inflatable cover |
| Center | vec3(141.0, -2927.0, 3.9) |
| Radius | 35.0 |
| Max team size | 4 (8 players total in TEAM/ELIM) |
| Spawns | 6 per team |
Big Map (skyscraper)
| Property | Value |
|---|---|
| Name | Big Map |
| Description | Large indoor arena with open lanes and barriers |
| Center | vec3(165.34, -3015.89, 829.95) |
| Radius | 35.0 |
| Max team size | 6 (12 players total in TEAM/ELIM) |
| Spawns | 6 per team |
| Collisions | Loading enabled (loadCollisions = true) |
Adding a Custom Arena
To add a new arena, add an entry to Config.Arenas:
Config.Arenas = {
-- ... existing arenas ...
my_custom_arena = {
name = "My Arena",
description = "Description of my arena",
image = "custom_image", -- Image name (for the UI)
maxTeamSize = 5, -- Max players per team
center = vec3(100.0, 200.0, 30.0), -- Arena center
radius = 40.0, -- Boundary radius
loadCollisions = false, -- Load collisions (for elevated arenas)
spawns = {
RED = {
vec4(95.0, 210.0, 30.0, 180.0), -- x, y, z, heading
vec4(100.0, 212.0, 30.0, 175.0),
vec4(105.0, 210.0, 30.0, 185.0),
-- Add as many spawns as needed
},
BLUE = {
vec4(95.0, 190.0, 30.0, 0.0),
vec4(100.0, 188.0, 30.0, 5.0),
vec4(105.0, 190.0, 30.0, 355.0),
},
},
spawnZones = {
RED = { radius = 7.0 }, -- Spawn protection zone
BLUE = { radius = 7.0 },
},
},
}
Arena Properties
| Property | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Display name in the UI |
description |
string | Yes | Description shown in the UI |
image |
string | No | Image identifier for the UI |
maxTeamSize |
int | Yes | Max players per team on this arena |
center |
vec3 | Yes | Center coordinates of the arena |
radius |
float | Yes | Play zone radius from the center |
loadCollisions |
boolean | No | Force collision loading (for elevated arenas) |
spawns |
table | Yes | Spawn points per team (RED / BLUE) |
spawnZones |
table | Yes | Spawn protection zones per team |
Spawn Points
Each spawn is a vec4(x, y, z, heading):
- x, y, z : World position
- heading : Direction the player faces (0–360)
Spawns are used in round-robin rotation to prevent all players from appearing at the same spot.
Add at least 3 spawns per team for good distribution. Ideally, have as many spawns as
maxTeamSize.
Spawn Protection Zones
The spawnZone defines a circular area around a team's spawns. Players within this zone after respawning benefit from spawn protection (duration set by Config.Gameplay.SpawnProtectionMs).
spawnZones = {
RED = { radius = 7.0 },
BLUE = { radius = 7.0 },
}
Arena Boundaries
The arena is defined by a circle (center + radius). If a player leaves this zone:
- They are pushed back inside
- If they remain out of bounds for too long, corrective measures are taken
Make sure all your spawn points are inside the radius defined by
centerandradius.