On this page

Understanding cfgplayerspawnpoints.xml

cfgplayerspawnpoints.xml defines where players can appear on the map and the rules the server uses to find a valid position within those areas. It covers three distinct spawn scenarios — a first-time player appearing on the coast, a player rejoining after disconnecting, and a player using the in-game travel/respawn system.

The file does not list individual spawn points. Instead, it defines bubbles — centre positions on the map — and a grid generator that creates a pool of candidate positions around each bubble at runtime. The server then filters that pool against distance constraints before placing a player.


Spawn types

The file has three top-level sections, each representing a different scenario in which a player needs to be placed.

SectionWhen it applies
<fresh>A player connecting for the first time, or after clicking New Character following death
<hop>A player reconnecting to the server after disconnecting mid-session
<travel>A player using the in-game respawn/travel feature (where supported)

Each section contains the same set of child elements: <spawn_params>, <generator_params>, <group_params>, and <generator_posbubbles>. They are configured independently, so fresh spawns can have tighter constraints than hop spawns, and use different bubble locations entirely.

<spawn_params>

These are the safety checks applied when selecting a final position for a player. Before the server places a player at a candidate point, it verifies the position passes all of these distance tests.

<spawn_params>
    <min_dist_infected>30</min_dist_infected>
    <max_dist_infected>70</max_dist_infected>
    <min_dist_player>65</min_dist_player>
    <max_dist_player>150</max_dist_player>
    <min_dist_static>0</min_dist_static>
    <max_dist_static>2</max_dist_static>
</spawn_params>
ParameterWhat it controls
min_dist_infectedThe candidate point must be at least this many metres from any infected
max_dist_infectedThe candidate point must be no more than this many metres from an infected (ensures players spawn near some action)
min_dist_playerThe candidate point must be at least this many metres from any other player
max_dist_playerThe candidate point must be no more than this many metres from another player
min_dist_staticThe candidate point must be at least this many metres from a static object (buildings, trees)
max_dist_staticThe candidate point must be no more than this many metres from a static object

The max_dist values act as a soft attractor — the server tries to place players somewhere near infected and near cover, not in the middle of an empty field. If no candidate in the bubble passes all constraints, the server falls back to a less strict selection.

Fresh spawns use a larger player distance (min_dist_player: 65, max_dist_player: 150) compared to hop spawns (min_dist_player: 25, max_dist_player: 70). This separates new players across the coast more broadly, while allowing reconnecting players to return closer to where other players are.

<generator_params>

The generator creates a grid of candidate spawn positions around each bubble centre. These parameters control the shape and density of that grid.

<generator_params>
    <grid_density>4</grid_density>
    <grid_width>200</grid_width>
    <grid_height>200</grid_height>
    <min_dist_static>0</min_dist_static>
    <max_dist_static>2</max_dist_static>
    <min_steepness>-45</min_steepness>
    <max_steepness>45</max_steepness>
</generator_params>
ParameterWhat it controls
grid_densitySpacing between grid points in metres. Lower = more candidate positions generated
grid_widthWidth of the grid (metres) centred on the bubble position
grid_heightHeight of the grid (metres) centred on the bubble position
min_dist_staticCandidates within the grid must be at least this far from static objects
max_dist_staticCandidates within the grid must be no more than this far from static objects
min_steepnessMinimum terrain slope angle accepted (degrees). Negative = downhill
max_steepnessMaximum terrain slope angle accepted (degrees). Keeps players off cliff faces

With grid_width: 200, grid_height: 200, and grid_density: 4, the generator places a point every 4 metres across a 200×200 metre square — producing up to 2,500 candidate positions around each bubble centre before filtering.

The steepness filter (-45 to 45) eliminates positions on slopes where a player would slide or clip through geometry. This is applied per-candidate before spawn_params checks run.

<group_params>

Group params control whether players spawning in the same bubble are treated as a group — placed together in proximity rather than independently.

<group_params>
    <enablegroups>true</enablegroups>
    <groups_as_regular>true</groups_as_regular>
    <lifetime>120</lifetime>
    <counter>2</counter>
</group_params>
ParameterWhat it controls
enablegroupstrue — players spawning in this bubble are grouped together. false — each player is placed independently
groups_as_regulartrue — group spawn points are also eligible as regular (non-group) spawn candidates
lifetimeHow long (seconds) a group spawn point stays reserved after the first player lands. Other players can join the group within this window
counterHow many players can be placed into one group. -1 means unlimited

Fresh spawns have groups enabled (enablegroups: true, counter: 2) — this is what causes two newly spawned players to appear near each other on the coast. The group spawn point stays active for 120 seconds, during which a second player can be routed to the same area.

Hop and travel spawns have enablegroups: false — reconnecting players are placed individually with no grouping, and counter: -1 is irrelevant.

<generator_posbubbles>

This is where you define the actual areas of the map players can spawn in. Each <group> is a named collection of positions. Each <pos> is a centre point around which the generator will build its grid.

<generator_posbubbles>
    <group name="WestCherno">
        <pos x="6063.018555" z="1931.907227" />
        <pos x="5933.964844" z="2171.072998" />
        <pos x="6199.782715" z="2241.805176" />
    </group>
    <group name="EastCherno">
        <pos x="8040.858398" z="3332.236328" />
        ...
    </group>
</generator_posbubbles>

The name attribute on <group> is a label only — it has no functional effect on the engine. It exists for human readability.

Coordinates use the DayZ world space format: x is east-west, z is north-south. These are not GPS coordinates — they are in-world metres from the map origin.

Each <pos> generates its own independent grid. Multiple positions inside one named group are simply multiple bubbles in nearby areas. Having several positions spread across a town means the generator produces candidates across the whole settlement rather than just a single patch.

What the engine does with these

At spawn time:

  1. A bubble is selected (the engine picks among all eligible <pos> entries)
  2. The generator builds its candidate grid around that bubble using generator_params
  3. Terrain steepness is checked — candidates on slopes outside the min/max_steepness range are discarded
  4. The remaining candidates are filtered against spawn_params (distance to infected, players, static objects)
  5. The best-passing position is used. If no position passes, the server relaxes constraints and tries again

Adding and modifying spawn areas

To add a new spawn area, add a <pos> entry inside an existing <group>, or create a new <group> block with a name of your choosing.

<group name="MyNewArea">
    <pos x="7500.0" z="4200.0" />
    <pos x="7550.0" z="4350.0" />
</group>

To remove a spawn area, delete the <group> block or remove individual <pos> entries from it.

To restrict spawning to specific areas only, remove all other <group> blocks from the relevant section. For example, removing all groups from <fresh> except one will force all fresh spawns into that single area.

Coordinates can be obtained from in-game tools, map editors, or community map sites that display world-space coordinates. The DayZ map runs roughly 0–15,360 on both axes for Chernarus. The south coast where fresh spawns occur sits between approximately z=1800 and z=4500.

If spawn_params constraints are too strict for the bubble area you've defined — for example, requiring infected within 70m in an area where none spawn — the server may fail to find valid positions and fall back to default behaviour. If players appear in unexpected locations, relax max_dist_infected and max_dist_player first.

Differences between fresh, hop, and travel

The vanilla file ships with different bubble locations for each spawn type. Fresh spawns cover the coastal strip — Cherno, Elektro, Kamyshovo, Berezino. Hop and travel spawns cover a wider set of inland areas including Balota, Pusta, and Dobroye.

freshhop / travel
Bubble areasCoastal onlyCoastal + inland
enablegroupstruefalse
Group counter2 (disabled)
min_dist_player65m25m
Grid size200×200m150×150m

The intent is clear: fresh players always land on the coast near other new players, while returning players can come back anywhere on the map — and closer to other players since they already know where they are going.

Fresh, hop and travel are not used on community servers. These are only for Official Servers.