This page describes vehicle group files used by traffic, parking, missions, editor tools, and other gameplay systems.
A vehicle group is a named pool of vehicle model/config entries. It controls what may be spawned, but not where vehicles spawn or how they drive. Placement and behavior still come from traffic, parking, missions, sites, and navgraph data.
Most authored vehicle groups use this shape:
{
"type": "custom",
"name": "Example Traffic Group",
"tags": ["example", "traffic"],
"data": [
{
"model": "covet",
"config": "DXi_A"
},
{
"model": "pickup",
"config": "d15_4wd_A_facelift"
}
]
}
| Field | Required | Notes |
|---|---|---|
type |
Recommended | Use custom for hand-authored groups. |
name |
Recommended | Display/debug name used by tools. |
tags |
Optional | Helps organize groups by level, mission, use, or role. |
data |
Yes | Array of vehicle entries. Empty groups are valid JSON but not useful. |
| Field | Required | Notes |
|---|---|---|
model |
Yes | Folder/id of the vehicle model. |
config |
Recommended | Vehicle configuration id. If missing or invalid, spawning may fail or use an unintended default depending on the caller. |
paintName |
Optional | Can be used by some editor/traffic workflows to request a paint choice. |
Some tools may preserve additional per-vehicle fields, such as paint or spawn-related metadata. Do not remove unknown fields from an existing group unless you know the consuming system does not need them.
Minimal one-car group:
{
"type": "custom",
"name": "One Car Test",
"data": [
{
"model": "pickup",
"config": "d15_4wd_A_facelift"
}
]
}
Shared vehicle groups can be stored under:
vehicleGroups/**/*.vehGroup.json
Level-specific groups can be stored in a level root:
levels/<levelName>/*.vehGroup.json
Common level-specific names:
levels/<levelName>/traffic.vehGroup.json
levels/<levelName>/police.vehGroup.json
Mission-specific groups are commonly stored with the mission:
gameplay/missions/<levelName>/<missionType>/<missionName>/custom.vehGroup.json
Traffic and mission tools can load vehicle groups from different places depending on context:
| Context | Typical lookup |
|---|---|
| Level traffic | Looks in the current level directory for matching *.vehGroup.json files, such as names containing traffic or police. |
| Mission custom traffic | Uses a mission-local file, commonly custom.vehGroup.json. |
| Shared/custom tool groups | Falls back to files under /vehicleGroups/ where supported. |
When several matching files exist, tools may choose one from the matching set. Use clear file names and tags when a level or mission contains multiple groups.
| File name | Typical use |
|---|---|
traffic.vehGroup.json |
General traffic vehicle pool for a level. |
police.vehGroup.json |
Police vehicle pool for a level. |
custom.vehGroup.json |
Mission-specific custom vehicle group. |
The easiest way to create a vehicle group is to use the in-game editor tooling:
*.vehGroup.json file.Traffic Manager can also load a vehicle group file directly for testing. If the group loads there, but not in a mission or level, the problem is usually file location, naming, or the consuming setup rather than the file structure.
Vehicle group files are simple enough to write manually:
type, name, and optional tags.data array.When editing manually, verify model/config ids against known working vehicle configurations. A typo can make the group load but fail to spawn the intended vehicle.
For levels, the most common convention is:
traffic.vehGroup.json
police.vehGroup.json
Use traffic.vehGroup.json for ordinary ambient traffic and police.vehGroup.json for police spawning. These files should match the level’s region, era, and road network. For example, avoid using very large vehicles in a level with narrow roads unless that is part of the intended traffic mix.
To create a level group:
traffic.vehGroup.json or police.vehGroup.json.Missions can use a mission-local group when they need deterministic or restricted AI traffic. A common path is:
gameplay/missions/<levelName>/<missionType>/<missionName>/custom.vehGroup.json
Mission-local groups are useful when:
Keep mission custom groups small unless the mission intentionally needs variety.
To create a mission custom group:
custom.vehGroup.json in the mission folder.Advanced authoring considerations:
Check:
traffic, police, or custom..vehGroup.json.Check:
model exists.config exists for the model.Check:
model exists.config exists for its model.Was this article helpful?