This page describes level-local drag strip data.
Drag strips define staged drag race gameplay. A drag strip setup usually combines settings, strip geometry, lane waypoints, timing definitions, optional prefabs, and facility/POI integration.
Drag strip data is stored under:
levels/<levelName>/dragstrips/
Common files:
<stripName>.dragSettings.json
<stripName>_main.strip.json
dragStripData.dragData.json
<stripName>.facility.json
Modern gameplay discovers level drag strips by scanning for *.dragSettings.json.
The drag racing system scans the current level’s dragstrips/ folder for:
*.dragSettings.json
Each settings file is treated as an entry point. Other files, such as *.strip.json or facility files, are only useful when referenced by a settings file, mission, facility entry, or compatibility workflow.
Use the Drag Race Editor for new drag strip data when possible. It can create and save strips, lane data, drag settings, zones, and feature-specific facility files.
Recommended workflow:
*.strip.json.*.dragSettings.json.Create the strip before the settings file. The settings file is the entry point, but it needs a valid strip layout to be useful.
Manual authoring is possible, but the lane transforms and waypoints are easier to place in the editor. If writing manually, work in this order:
dragstrips/ folder.*.strip.json layout with lane boundaries and waypoints.*.dragSettings.json file that references the strip.*.facility.json or facility integration.Minimum modern setup:
levels/<levelName>/dragstrips/example_main.strip.json
levels/<levelName>/dragstrips/example.dragSettings.json
The settings file must point to the strip file:
{
"id": "example",
"stripId": "/levels/example/dragstrips/example_main.strip.json"
}
Use absolute game paths beginning with /levels/ for references that may be loaded from missions or other systems.
*.dragSettings.json structure
Minimal settings file:
{
"id": "exampleStrip",
"context": "freeroam",
"dragType": "headsUpRace",
"stripId": "/levels/example/dragstrips/exampleStrip_main.strip.json",
"canBeReseted": true,
"canBeTeleported": true,
"timers": [
{
"id": "time_1_4",
"label": "1/4 mile",
"shortLabel": "1/4",
"type": "distanceTimer",
"distance": 402.336,
"important": true
}
],
"phases": [
{ "name": "stage", "dependency": true, "startedOffset": 0 },
{ "name": "countdown", "dependency": true, "startedOffset": 0 },
{ "name": "race", "dependency": false, "startedOffset": 0 },
{ "name": "stop", "dependency": false, "startedOffset": 0 }
],
"prefabs": {
"christmasTree": { "isUsed": false },
"displaySign": { "isUsed": false },
"paths": { "isUsed": false },
"decorations": { "isUsed": false }
}
}
| Field | Required | Notes |
|---|---|---|
id |
Yes | Stable drag settings id. |
stripId |
Yes | Path to the *.strip.json file. |
context |
Recommended | Usually freeroam for level-local strips. |
dragType |
Recommended | Race type, such as headsUpRace. |
canBeReseted |
Optional | Whether reset behavior is allowed. |
canBeTeleported |
Optional | Whether teleport behavior is allowed. |
timers |
Optional | If missing or invalid, defaults may be used. |
phases |
Optional | Race phase sequence. |
prefabs |
Optional | Presentation/prefab toggles. |
Timer entries support distanceTimer and velocity types. Distances are meters.
*.strip.json structure
Minimal strip file:
{
"id": "exampleStrip_main",
"name": "Example Strip",
"description": "Two-lane example drag strip",
"lanes": [
{
"id": "exampleStrip_lane1",
"shortName": "Right",
"longName": "Right Lane",
"laneOrder": 1,
"color": "green",
"boundary": {
"name": "Right Lane Boundary",
"vertices": [
[0, -2, 0],
[100, -2, 0],
[100, 2, 0],
[0, 2, 0]
]
},
"waypoints": [
{
"id": "exampleStrip_lane1_spawn",
"type": "spawn",
"name": "exampleStrip_wp_spawn_1",
"transform": {
"position": { "x": 0, "y": 0, "z": 0 },
"rotation": { "x": 0, "y": 0, "z": 0, "w": 1 },
"scale": { "x": 1, "y": 1, "z": 1 }
},
"waypoint": {
"mode": "limit",
"speed": 20
}
},
{
"id": "exampleStrip_lane1_stage",
"type": "stage",
"name": "exampleStrip_wp_stage_1",
"transform": {
"position": { "x": 10, "y": 0, "z": 0 },
"rotation": { "x": 0, "y": 0, "z": 0, "w": 1 },
"scale": { "x": 1, "y": 1, "z": 1 }
},
"waypoint": {
"mode": "limit",
"speed": 1
}
},
{
"id": "exampleStrip_lane1_endLine",
"type": "endLine",
"name": "exampleStrip_wp_endLine_1",
"transform": {
"position": { "x": 402.336, "y": 0, "z": 0 },
"rotation": { "x": 0, "y": 0, "z": 0, "w": 1 },
"scale": { "x": 1, "y": 1, "z": 1 }
},
"waypoint": {
"mode": "set",
"speed": 800
}
}
]
}
]
}
| Field | Required | Notes |
|---|---|---|
id |
Yes | Stable strip id. |
name |
Recommended | Display/debug name. |
description |
Optional | Description. |
lanes |
Yes | One or more lane definitions. |
lanes[].id |
Recommended | Stable lane id. |
lanes[].laneOrder |
Recommended | Visual/gameplay lane order. |
lanes[].boundary |
Recommended | Lane area. Use editor-created boundaries when possible. |
lanes[].waypoints |
Yes | Spawn, stage, end-line, and optional other waypoints. |
waypoints[].type |
Yes | For example spawn, stage, or endLine. |
waypoints[].transform |
Yes | Position, rotation, and scale. |
waypoints[].waypoint |
Optional | Gameplay waypoint behavior, such as speed mode. |
Transforms in newer strip files use object-style vectors/quaternions:
{
"position": { "x": 0, "y": 0, "z": 0 },
"rotation": { "x": 0, "y": 0, "z": 0, "w": 1 },
"scale": { "x": 1, "y": 1, "z": 1 }
}
Some older content may use compact pos, rot, and scl names. Prefer the newer object-style fields for new authored strip files.
| File | Purpose |
|---|---|
*.dragSettings.json |
Entry point for a drag strip. Defines id, context, drag type, timers, phases, prefab usage, and the referenced strip file. |
*.strip.json |
Strip layout data: lanes, lane boundaries, waypoint transforms, zones, and lane metadata. |
dragStripData.dragData.json |
Older/shared drag race data used by some shipped content and compatibility workflows. |
*.facility.json |
Feature-specific facility data for the drag strip. |
A drag settings file should reference the strip layout file:
{
"id": "exampleStrip",
"stripId": "/levels/example/dragstrips/exampleStrip_main.strip.json"
}
Keep the settings id, strip id, and file names stable once missions, POIs, or career/freeroam data reference the strip.
The settings file describes how the activity behaves. The strip file describes where the lanes, boundaries, and waypoints are. Keep those responsibilities separate when editing:
When creating settings from scratch, start simple:
After the race starts and finishes correctly, add more timers, displays, and presentation.
The strip file describes each lane. Lanes usually contain:
These waypoints are gameplay positions, not regular road navgraph nodes. Keep them aligned with the visible strip and any supporting prefabs.
Important waypoint types usually include:
| Waypoint | Purpose |
|---|---|
| Spawn | Where racers are placed before staging. |
| Stage | Where racers line up before the countdown. |
| End line | Where timing/speed results are evaluated. |
Lane order should match what the player sees. Incorrect lane ordering can make UI labels, staging, or opponent placement confusing even if the race technically starts.
For two-lane strips, test both lanes independently. A common authoring mistake is fixing the player lane while leaving the opponent lane spawn, stage, or end-line waypoint misaligned.
Drag settings can define timers and race phases such as staging, countdown, race, and stop. Timer names and phase names are consumed by drag race gameplay and UI, so prefer editing them through the Drag Race Editor when possible.
Common timer data includes elapsed-time checkpoints and trap-speed measurements. Keep labels concise because they can appear in race result UI.
Drag settings can enable supporting prefabs such as:
Only enable prefabs that exist and are aligned with the strip. Missing or misplaced presentation prefabs can make a valid race look broken.
Prefab placement should be treated as presentation, not as core race logic. If a new strip fails, disable optional prefabs while debugging the settings and lane data.
Drag strips can appear as freeroam/career facilities and can also be used by drag mission types. A mission may reference a drag settings file, while freeroam/career UI may use related facility or POI data.
For general facility behavior, see Facilities .
Drag mission types may point directly at a settings file. If a drag strip works in freeroam but not in a mission, check the mission reference first, then the settings file and strip file.
Some shipped content includes dragStripData.dragData.json. This can contain older or shared drag strip data and may overlap with newer settings/strip files. For new or actively maintained content, prefer the *.dragSettings.json entry point plus referenced *.strip.json layout.
Do not delete compatibility files from shipped content unless you have verified every consumer that might still read them.
Check:
.dragSettings.json.levels/<levelName>/dragstrips/.Check:
stripId points to the intended *.strip.json file.Check:
Check:
*.dragSettings.json loads and references an existing strip file.Was this article helpful?