Vehicle Asset Reference
The vehicle asset is the most mechanically complex asset type in Unturned™ modding. A vehicle asset defines a drivable, interactive vehicle - a car, truck, APC, helicopter, plane, boat, blimp, or train - that players can enter, drive, refuel, repair, paint, and in some cases arm with mounted turrets. The vehicle asset .dat file is the single configuration surface that controls every aspect of a vehicle's behavior: its engine characteristics, wheel configuration, steering response, fuel consumption, battery system, turret mounts, paint system, explosion behavior, health pool, audio profile, and crawler track properties.
57 Studios™ has documented and validated the full vehicle asset configuration surface. The source of record for the field definitions in this article is the official Smartly Dressed Games modding documentation, supplemented by field vocabulary extracted from all 65 shipped vehicle .dat files in the Bundles\Vehicles\*\*.dat path and 128 color variant redirectors from Bundles\Vehicles\Redirectors\*.asset. This article covers every .dat field that applies to vehicle assets, every property dictionary type, every enumeration, and every system interaction that the cohort has validated through empirical testing.

Documentation source: This article references the official Smartly Dressed Games modding documentation for field definitions and game behavior. The 57 Studios cohort has validated every field against shipped game files. Community-validated notes are marked where the official documentation is silent on a detail.
Who this article is for
This article is written for Unturned™ mod authors who have already built at least one vehicle mod using the workflow described in Vehicle Mod Basics and are ready for the comprehensive .dat field reference. If you have not yet built a vehicle prefab in Unity and loaded it into the game, start with Vehicle Mod Basics - this article assumes you understand the prefab structure, WheelCollider configuration, and seat transform placement that the basics article covers. This article is strictly the .dat field reference; it does not re-document the prefab authoring workflow.
What you'll learn
- The complete vehicle asset system architecture, including the relationship between the
.datfile, theInteractableVehicleruntime script, and the vehicle prefab - All 19 property dictionaries and tables with every field, type, default, and purpose
- The 14 enumerations that control vehicle behavior categories
- Engine RPM and gear ratio mechanics with the full torque calculation chain
- Wheel configuration fields including crawler track steering modes
- Turret system fields including yaw, pitch, seat index, and item linkage
- Paint system fields including paint mask sections and random color configuration
- Sound configuration for engine RPM-driven audio
- Battery and fuel system mechanics
- Health and armor fields including per-category bumper damage
- Worked
.datexamples for a passenger car, a military APC, and a train - Diagnostic tables for every vehicle subsystem
Background: how the vehicle asset system works
The vehicle asset system is the data layer that configures the InteractableVehicle runtime script. At load time, the Unturned™ asset loader reads the vehicle's .dat file from the Bundles\Vehicles\ folder and populates the runtime script's fields. The vehicle prefab (a Unity scene hierarchy) provides the visual and physics components - the mesh renderers, colliders, WheelCollider components, seat transforms, and audio sources - but all of the behavior parameters come from the .dat file.
The relationship between the .dat file and the vehicle prefab is asymmetric. The prefab provides the structure; the .dat provides the numbers. A prefab with perfectly tuned WheelCollider components will produce a terrible driving experience if the .dat has incorrect Speed_Max or Engine values. A prefab with poorly tuned colliders but a correctly authored .dat will still load and be driveable, though the handling will feel off. Both halves must be correct for a professional result.
As shown in the flowchart above, the InteractableVehicle runtime script is the central coordinator that reads every field from the .dat file and distributes parameters to the subsystems. Each subsystem is independently configurable; a vehicle that does not use turrets, for example, simply omits the turret fields and the system remains inactive.
Complete .dat field reference
The field reference is organized into logical groups that correspond to vehicle subsystems. Each group includes a field reference table with every field that belongs to that subsystem, followed by prose descriptions for the technically dense fields.
Identity and type fields
Every vehicle asset requires an identity block. These fields identify the vehicle to the engine and to the file system.
| Field | Type | Required | Default | Purpose |
|---|---|---|---|---|
GUID | uint128 | Yes | , | 128-bit globally unique identifier. Required by all vehicle assets. If omitted, the engine assigns a random GUID at load time. |
ID | uint16 | No | 0 | Numeric item ID. Used to be required but is now optional. The range reserved for official content is [1, 2000). |
Type | enum | Yes | Vehicle | Must be Vehicle for vehicle assets. |
Name | string | No | , | Internal name for cross-referencing. |
Rarity | enum | No | Common | Rarity of the item, as text shown in menus and colors used for highlights. Values: Common, Uncommon, Rare, Epic, Legendary, Mythical. |
Engine | enum | Yes | Car | Determines the vehicle type category. Some vehicle properties are only usable depending on the vehicle's Engine value. See the EEngine enumeration in the enumeration reference. |
Engine RPM and gear ratio fields
The engine RPM system is the most technically involved subsystem in the vehicle asset. It controls how engine speed translates to wheel torque and how gear ratios mediate the relationship between engine RPM and wheel RPM.
| Field | Type | Default | Purpose |
|---|---|---|---|
EngineIdleRPM | float32 | 1000.0 | Engine RPM will never drop below this value regardless of whether wheel RPM multiplied by gear ratio is lower. Without this floor, the engine would not be able to start the wheels rolling from zero. |
EngineMaxRPM | float32 | 7000.0 | Engine RPM will never exceed this value regardless of whether wheel RPM multiplied by gear ratio is higher. Should be kept to a reasonable value because the normalized engine RPM is used in a variety of places like sampling the torque curve and network replication. |
EngineMaxTorque | float32 | 1.0 | Multiplier for the amount of torque provided to the wheels. The torque delivery chain from engine RPM to wheel torque follows a specific multi-step pipeline. |
EngineRPM_DecreaseRate | float32 | -1.0 | How quickly engine RPM can decrease in RPM per second. Defaults to -1 which instantly changes RPM. |
EngineRPM_IncreaseRate | float32 | -1.0 | How quickly engine RPM can increase in RPM per second. Defaults to -1 which instantly changes RPM. |
EngineRPMMismatch_TorqueReduction_Enabled | bool | false | If true, wheel RPM is reduced according to the difference between expected and actual wheel RPM divided by torque reduction threshold. |
EngineRPMMismatch_TorqueReduction_Threshold | float | 0.0 | If torque reduction is enabled, torque is reduced to zero when the difference between expected and actual RPM is greater than this threshold. |
EngineRPMMismatch_GearShift_PreventShifting | bool | false | If true, prevent changing gears when the difference between expected and actual wheel RPM exceeds threshold. |
EngineRpmMismatch_GearShift_UpMinThreshold | float | 0.0 | If prevent shifting is enabled, prevent shifting up when expected minus actual RPM is less than this threshold. |
EngineRpmMismatch_GearShift_UpMaxThreshold | float | 0.0 | If prevent shifting is enabled, prevent shifting up when expected minus actual RPM is greater than this threshold. |
EngineRpmMismatch_GearShift_DownMinThreshold | float | 0.0 | If prevent shifting is enabled, prevent shifting down when expected minus actual RPM is less than this threshold. |
EngineRpmMismatch_GearShift_DownMaxThreshold | float | 0.0 | If prevent shifting is enabled, prevent shifting down when expected minus actual RPM is greater than this threshold. |
ForwardGearRatios | list of float32 | , | Ratio between engine RPM and wheel RPM in each forward gear. |
ReverseGearRatio | float32 | 1.0 | Gear ratio to use when reversing. |
GearShift_AllowSkippingGears | bool | true | If true, engine can skip from (for example) 1st to 3rd gear if it keeps RPM within the acceptable range. |
GearShift_DownThresholdRPM | float32 | 1500.0 | When engine RPM is below this value and a lower gear is available, the vehicle shifts down. |
GearShift_Duration | float32 | 0.5 | How long it takes to shift gears in seconds. Wheels do not provide any torque for this duration. |
GearShift_Interval | float32 | 1.0 | How long to wait since the last gear change before shifting gears again, in seconds. |
GearShift_UpThresholdRPM | float32 | 5500.0 | When engine RPM is above this value and a higher gear is available, the vehicle shifts up. |
GearShift_VisibleInHUD | bool | true | If gears are configured and this is true, RPM and gear number are shown in the HUD. |
The torque delivery chain from engine RPM to wheel torque follows an eight-step pipeline that every vehicle modder tuning a vehicle engine should understand.
- Engine RPM is normalized into a zero-to-one range according to
EngineIdleRPMandEngineMaxRPM. An engine running at 2000 RPM with an idle of 1000 and a max of 5000 would produce a normalized RPM of 0.25. - The vehicle root needs an
EngineCurvesComponentattached. This component allows the modder to map normalized engine RPM to a normalized torque multiplier. The multiplier is typically closest to 1.0 in the middle range (0.3 to 0.8) and drops off toward 0.0 and 1.0. - The torque curve is sampled using the normalized engine RPM.
- The sampled torque is multiplied by
EngineMaxTorque. - If changing gears, torque is zero.
- If reversing, torque is multiplied by
ReverseGearRatio. - Otherwise, torque is multiplied by the active
ForwardGearRatio. - Each powered wheel receives an equal share of the total torque. The per-wheel torque equals the engine output torque divided by the number of powered wheels.
Understanding this pipeline is essential for tuning. A modder who expects the engine to accelerate smoothly but has not configured ForwardGearRatios or has not attached an EngineCurvesComponent to the prefab will find that the vehicle behaves unexpectedly.
Handling and steering fields
These fields control how the vehicle responds to player steering input, how the steering behavior changes with speed, and the air-based steering behavior for planes.
| Field | Type | Default | Purpose |
|---|---|---|---|
Speed_Max | float32 | 0 | The vehicle's maximum velocity to aim for while accelerating forward, in meters per second. For all Engine enumerators except Train, this value is multiplied by 1.25 because the vehicle adjusts wheel torque trying to match a specific speed. |
Speed_Min | float32 | 0 | The vehicle's maximum velocity to aim for while accelerating in reverse, in meters per second. |
Steering_Angle_Max | float32 | 0 | Steering angle range at zero speed (idle/parked). For example, 45 means the wheels connected to steering can rotate plus or minus 45 degrees. |
Steering_Angle_FullSpeed_Factor | float32 | 0 | Multiplier for steering angle range at target maximum speed. Reducing steering range at higher speeds keeps the vehicle controllable with digital (non-analog) input. |
Steering_Angle_Turn_Speed | float32 | See description | How quickly wheels can turn to meet player input, measured in degrees per second. Defaults to the value of Steer_Max multiplied by 5.0. |
Steering_LeaningForceMultiplier | float32 | -1.0 | If greater than zero, torque is applied on the Z-axis according to steering input for bikes and motorcycles. |
Steering_LeaningForce_ScaleWithSpeed | bool | false | If true, leaning force is multiplied by normalized speed to the power of Steering_LeaningForce_SpeedExponent. |
Steering_LeaningForce_SpeedExponent | float32 | 1.0 | Exponent used in the leaning force calculation when Steering_LeaningForce_ScaleWithSpeed is true. |
Brake | float32 | See description | The amount of braking force to apply. |
Lift | float32 | 0 | The amount of upwards lift force to apply, when using Engine Plane. |
Traction | flag | not set | Tires should have traction in snowy positions. |
Sleds | flag | not set | Tires should easily roll. Most planes use this property. |
Air_Steer_Max | float32 | See description | The angle to turn when moving quickly, when using Engine Plane. Defaults to the value of Steer_Max. |
Air_Steer_Min | float32 | See description | The angle to turn when moving slowly, when using Engine Plane. Defaults to the value of Steer_Min. |
Air_Turn_Responsiveness | float32 | 2 | Sensitivity on steering while airborne, when using Engine Plane. |
Center_Of_Mass | vector3 | , | Overrides the vehicle's center of mass on the X, Y, and Z axes when using Override_Center_Of_Mass true. |
Override_Center_Of_Mass | bool | false | If true, overrides the vehicle's center of mass with the values from Center_Of_Mass. |
RollAngularVelocityDamping | float32 | -1.0 | If greater than zero, an acceleration is applied to angular velocity on the Z-axis toward zero. Critical for damping the WheelBalancing_ForceMultiplier force. |
WheelBalancing_ForceMultiplier | float32 | -1.0 | If greater than zero, torque is applied on the Z axis multiplied by this factor to align the vehicle up with ground up. |
WheelBalancing_UprightExponent | float32 | 1.5 | Exponent on the zero-to-one factor representing how aligned the vehicle is with the ground up vector. |
Engine_Force_Multiplier | float32 | 1.0 | Multiplier on otherwise not-yet-configurable plane, helicopter, boat, and other forces. Should scale based on vehicle mass. |
Carjack_Force_Multiplier | float32 | 1.0 | Multiplier on the force applied when using a carjack on this vehicle. Should scale based on vehicle mass. |
The relationship between Steering_Angle_Max and the deprecated Steer_Max field requires clarification. Steer_Max was replaced by Steering_Angle_Max which is not multiplied by 0.75. Steer_Min was replaced by Steering_Angle_FullSpeed_Factor. Both legacy fields still function but the cohort recommendation is to use the newer Steering_Angle_ fields for all new vehicle assets.
Wheel configuration fields
The WheelConfigurations list is the modern mechanism for controlling WheelCollider components and their corresponding visual models, having replaced the deprecated Num_Steering_Tires, Steering_Tire_#, and Crawler fields in version 3.23.4.0.
| Field | Type | Default | Purpose |
|---|---|---|---|
WheelConfigurations | list of VehicleWheelConfiguration | , | Controls WheelCollider components and their corresponding visual models. |
Wheel_Collider_Mass_Override | float32 | null | Override the mass of the vehicle's WheelCollider components without needing to rebundle the asset in Unity. |
Num_Steering_Tires | int32 | See description | Deprecated. Replaced by WheelConfigurations. Total number of tires that should turn when steering. |
Steering_Tire_# | int32 | See description | Deprecated. Replaced by WheelConfigurations. Set a Wheel_# GameObject as a steering tire. |
Crawler | flag | not set | Deprecated. Replaced by WheelConfigurations. Disables the Wheel_# GameObjects from turning when steering. |
Tire_ID | uint16 | 1451 | ID of the item given when a tire is manually removed with a ToolAsset that has Mode Remove. |
Tires_Invulnerable | flag | not set | Tires cannot be damaged. |
VehicleWheelConfiguration dictionary
Each entry in WheelConfigurations is a dictionary with the following fields:
| Field | Type | Default | Purpose |
|---|---|---|---|
WheelColliderPath | string | , | Scene hierarchy path of a WheelCollider component relative to the vehicle's root transform. |
ModelPath | string | , | Scene hierarchy path of the visual representation of the wheel relative to the vehicle's root transform. |
CanExplode | bool | true | If true, wheel flies off when the vehicle explodes. Set to false to simplify destroying vehicles with crawler tracks. |
CopyColliderRpmIndex | int32 | -1 | If set, visual-only wheels without a collider (like the back wheels of the snowmobile) can copy RPM from a wheel that does have a collider. Requires ModelRadius to also be set. |
CrawlerTrackForwardMode | ECrawlerTrackForwardMode | Auto | For CrawlerTrack steering mode, indicates how a positive motor torque rotates the vehicle. |
IsColliderPowered | bool | false | If true, the collider is connected to the engine and responds to the player's acceleration input. |
IsColliderSteered | bool | false | Deprecated. Replaced by SteeringMode. If true, the collider's steering angle responds to player input. |
IsModelSteered | bool | false | If true, the model is rotated according to steering input. Kept only for backwards compatibility. |
ModelRadius | float32 | -1.0 | If greater than zero, visual-only wheels (without a collider) use this radius to calculate their rolling speed. |
ModelSuspensionOffset | float | 0.0 | Vertical offset of the model from simulated suspension position. Used by crawler tracks because the visual wheel rests on the tread above the physics wheel. |
ModelSuspensionSpeed | float | -1.0 | How quickly to interpolate the model toward the suspension position in meters per second. If negative, position teleports immediately. |
ModelUseColliderPose | bool | false | If true, the model ignores IsModelSteered and instead uses the wheel collider state. |
MotionEffects | EWheelMotionEffectsMode | See description | Controls whether the wheel creates particle kickup effects. Defaults to BothDirections if ModelUseColliderPose is true, None otherwise. |
SteeringAngleMultiplier | float | 1.0 | Target steering angle is multiplied by this value. Can be set to a negative number for rear-wheel steering. |
SteeringMode | EWheelSteeringMode | None | Controls whether the wheel contributes to steering and what kind of steering to simulate. |
Fuel system fields
| Field | Type | Default | Purpose |
|---|---|---|---|
Fuel | uint16 | 0 | Total fuel capacity. |
Fuel_Burn_Rate | float32 | See description | Rate at which fuel decreases per second. Defaults to 2.05 when using Engine Car, or 4.2 otherwise. |
Fuel_Min | uint16 | 0 | Minimum possible fuel to spawn with. |
Fuel_Max | uint16 | 0 | Maximum possible fuel to spawn with. |
Battery system fields
| Field | Type | Default | Purpose |
|---|---|---|---|
Battery_Powered | flag | not set | The vehicle does not use fuel. Useful for creating electric vehicles. |
Battery_Burn_Rate | float32 | 20 | Rate at which battery charge decreases per second. |
Battery_Charge_Rate | float32 | 20 | Rate at which battery charge increases per second. |
Battery_Spawn_Charge_Multiplier | float32 | 1 | Battery charge on a newly-spawned vehicle is multiplied by this zero-to-one number. |
BatteryMode_Driving | EBatteryMode | Charge | How the vehicle battery behaves when a player is driving it. |
BatteryMode_Empty | EBatteryMode | None | How the vehicle battery behaves when the vehicle is empty. |
BatteryMode_Headlights | EBatteryMode | Burn | How the vehicle battery behaves when the headlights are on. |
BatteryMode_Sirens | EBatteryMode | Burn | How the vehicle battery behaves when the siren is on. |
Can_Steal_Battery | bool | true | Whether the vehicle battery can be removed by a player. |
Cannot_Spawn_With_Battery | flag | not set | The vehicle does not spawn with a vehicle battery. |
Default_Battery | GUID | 098b13be34a7411db7736b7f866ada69 | Battery item given to the player when a specific battery has not been manually installed yet. |
Stamina system fields
| Field | Type | Default | Purpose |
|---|---|---|---|
Stamina_Boost | float32 | , | Allows using stamina to boost. The value is the multiplier on the speed a vehicle can go without using a stamina boost. |
Stamina_Powered | flag | not set | The vehicle does not use fuel or a vehicle battery. |
Health and armor fields
| Field | Type | Default | Purpose |
|---|---|---|---|
Health | uint16 | 0 | Total health value. |
Health_Max | uint16 | 0 | Minimum possible health to spawn with. |
Health_Min | uint16 | 0 | Maximum possible health to spawn with. |
Invulnerable | flag | not set | The vehicle cannot be damaged by lower-power weapon assets that do not have the Invulnerable flag. |
Environment_Invulnerable | flag | not set | The vehicle cannot be damaged by animals, zombie melee attacks, or boulders thrown by mega zombies. |
Explosions_Invulnerable | flag | not set | The vehicle cannot be damaged by explosions. |
Bumper_Invulnerable | flag | not set | The vehicle cannot be damaged by collisions. |
Bumper_AnimalDamage | float32 | 15.0 | Base damage to animals when traveling at 1 m/s, before speed and other multipliers. |
Bumper_ObjectDamage | float32 | 30.0 | Base damage to objects when traveling at 1 m/s, before speed and other multipliers. |
Bumper_PlayerDamage | float32 | 10.0 | Base damage to players when traveling at 1 m/s, before speed and other multipliers. |
Bumper_ResourceDamage | float32 | 85.0 | Base damage to resources when traveling at 1 m/s, before speed and other multipliers. |
Bumper_ZombieDamage | float32 | 15.0 | Base damage to zombies when traveling at 1 m/s, before speed and other multipliers. |
Bumper_Multiplier | float32 | 1.0 | Multiplies vehicle speed in m/s at time of collision. If the result is less than Bumper_SpeedDamageThreshold, no damage is applied. |
Bumper_SelfDamageMultiplier | float32 | 1.0 | Multiplier for damage inflicted to the vehicle by crashing into things. Not applicable if Bumper_Invulnerable is set. |
Bumper_SpeedDamageThreshold | float32 | 3.0 | If speed in m/s multiplied by Bumper_Multiplier is less than this threshold, no damage is applied. |
Child_Explosion_Armor_Multiplier | float32 | 0.2 | Multiplier on the damage that barricades placed on the vehicle receive when damaged by explosions. |
Passenger_Explosion_Armor | float32 | 1 | Multiplier on the damage taken by players sitting in the vehicle from explosions. |
Can_Repair_While_Seated | bool | false | When true, this vehicle can be repaired by seated players. |
Camera and exit fields
| Field | Type | Default | Purpose |
|---|---|---|---|
Cam_Driver_Offset | float32 | 0 | Vertical offset for the driver's first-person camera, in meters. Additive with Cam_Passenger_Offset. |
Cam_Follow_Distance | float32 | 5.5 | Distance behind the player the third-person camera should be placed at, in meters. |
Cam_Passenger_Offset | float32 | 0 | Vertical offset for any passenger's (including the driver's) first-person camera, in meters. |
Exit | float32 | 2 | Distance away from the vehicle to teleport when exiting. |
LockMouse | flag | not set | First-person camera movement is locked while driving. Useful for Engine Plane and Engine Helicopter. |
Audio fields
| Field | Type | Default | Purpose |
|---|---|---|---|
EngineSound | RpmEngineSoundConfiguration | , | When EngineSound_Type is EngineRPMSimple, set to an RpmEngineSoundConfiguration dictionary. |
EngineSound_Type | EVehicleEngineSoundType | Legacy | Controls engine audio mode. Legacy uses Pitch_Idle and Pitch_Drive. EngineRPMSimple uses RPM-based pitch and volume. |
Pitch_Drive | float32 | See description | Multiplier on the pitch of the engine audio while driving. Defaults vary by engine type and audio clip name. |
Pitch_Idle | float32 | See description | Multiplier on the pitch of the engine audio while idle. Defaults vary by audio clip name. |
Has_Horn | bool | See description | Whether the vehicle has a horn. Defaults to true when HornAudioClip is valid. |
HornAudioClip | Master Bundle Pointer | , | Audio clip to play when using the horn. |
IgnitionAudioClip | Master Bundle Pointer | , | Audio clip to play after entering the driver's seat. |
Has_Clip_Prefab | bool | true | Whether the vehicle has a Clip.prefab. Set to false if the vehicle uses the same prefab on server and client. |
RpmEngineSoundConfiguration dictionary
| Field | Type | Default | Purpose |
|---|---|---|---|
IdlePitch | float32 | 0.0 | AudioSource pitch when engine RPM is at idle RPM. |
IdleVolume | float32 | 0.0 | AudioSource volume when engine RPM is at idle RPM. |
MaxPitch | float32 | 0.0 | AudioSource pitch when engine RPM is at max RPM. |
MaxVolume | float32 | 0.0 | AudioSource volume when engine RPM is at max RPM. |
Paint system fields
| Field | Type | Default | Purpose |
|---|---|---|---|
IsPaintable | bool | See description | If true, Vehicle Paint Tools can be used on this vehicle. Defaults to true if PaintableSections has been configured. |
PaintableSections | list of PaintableVehicleSection | , | If set, the vehicle can be painted. Each section's material _PaintColor property is set to the vehicle's paint color. |
DefaultPaintColor_Mode | EVehicleDefaultPaintColorMode | See description | Controls the mode used when randomly picking a paint color for a newly-spawned vehicle. Defaults to List if DefaultPaintColors has been configured, None otherwise. |
DefaultPaintColor_Configuration | VehicleRandomPaintColorConfiguration | , | Determines the potential colors of a newly-spawned vehicle when using RandomHueOrGrayscale mode. |
DefaultPaintColors | list of colors | , | List of random colors to pick from when spawning a new vehicle. Can be overridden by a Vehicle Redirector's LoadPaintColor property. |
AdditionalTransparentSections | list of PaintableVehicleSection | , | Materials to register as needing transparent sorting. Their render queue is periodically updated according to whether their pivot point is underwater. |
As shown in the flowchart above, the paint system supports two distinct color-assignment paths. Newly-spawned vehicles can receive a random paint color through either a fixed-color list or a procedural HSV generation. Player-applied paint through the Vehicle Paint Tool overrides the spawn color for the session.
PaintableVehicleSection dictionary
| Field | Type | Default | Purpose |
|---|---|---|---|
Path | string | , | Scene hierarchy path to a Renderer component relative to the vehicle's root transform. |
MaterialIndex | int32 | 0 | Index into the Renderer component's Materials list. 0 is the first material, 1 is the second, and so forth. |
AllMaterials | bool | false | If true, apply to all materials in the Renderer's Materials list rather than a specific index. |
VehicleRandomPaintColorConfiguration dictionary
| Field | Type | Default | Purpose |
|---|---|---|---|
MinSaturation | float32 | 0.0 | Minimum random saturation in HSV color to generate. |
MaxSaturation | float32 | 0.0 | Maximum random saturation in HSV color to generate. |
MinValue | float32 | 0.0 | Minimum value (brightness) in HSV color to generate. |
MaxValue | float32 | 0.0 | Maximum value (brightness) in HSV color to generate. |
GrayscaleChance | float32 | 0.0 | Probability in the zero-to-one range that a vehicle spawns with grayscale paint. A value of 0.2 means 20 percent of vehicles are grayscale. |
Explosion fields
| Field | Type | Default | Purpose |
|---|---|---|---|
Explosion | GUID or uint16 | , | GUID or legacy ID of EffectAsset to play when destroyed. |
Explosion_Force_Multiplier | float32 | 1.0 | Multiplier on the force applied when the vehicle explodes. Should scale based on vehicle mass. |
Explosion_Max_Force | vector3 | (0, 1024, 0) | Maximum amount of force applied on the X, Y, and Z axes when the vehicle explodes. |
Explosion_Min_Force | vector3 | (0, 1024, 0) | Minimum amount of force applied on the X, Y, and Z axes when the vehicle explodes. |
ShouldExplosionBurnMaterials | bool | See description | When true, the materials of the vehicle's Model_# GameObjects are tinted black when destroyed. Defaults to true if Explosion is configured. |
ExplosionBurnMaterialSections | list of PaintableVehicleSection | , | Only used if ShouldExplosionBurnMaterials is true. Manually specifies which materials should be darkened after an explosion. |
ShouldExplosionCauseDamage | bool | See description | When true, the explosion from the vehicle being destroyed deals damage to nearby entities and kills passengers. Defaults to true if Explosion is configured. |
Turret fields
| Field | Type | Default | Purpose |
|---|---|---|---|
Turrets | uint8 | 0 | Total number of turrets on the vehicle. All other turret-related properties require this property to be configured. |
Turret_#_Seat_Index | uint8 | 0 | Index of the Seat_# GameObject that this turret is usable from. |
Turret_#_Item_ID | uint16 | 0 | Legacy ID of the item usable from the turret seat. Often a GunAsset with the Turret property. |
Turret_#_Pitch_Max | float32 | 0 | Maximum allowed rotation of the turret through elevation, in degrees. |
Turret_#_Pitch_Min | float32 | 0 | Minimum allowed rotation of the turret through elevation, in degrees. |
Turret_#_Yaw_Max | float32 | 0 | Maximum allowed rotation of the turret through azimuth, in degrees. Set to 360 for continuous rightward rotation. |
Turret_#_Yaw_Min | float32 | 0 | Minimum allowed rotation of the turret through azimuth, in degrees. Set to -360 for continuous leftward rotation. |
Turret_#_Ignore_Aim_Camera | flag | not set | Normally the player's camera is positioned at the Aim GameObject. This flag disables that behavior. |
Train fields
| Field | Type | Default | Purpose |
|---|---|---|---|
Train_Car_Length | float32 | 0 | Distance between each train car on the train, in meters. Used with Engine Train. |
Train_Track_Offset | float32 | 0 | Offset the train car is above the track, in meters. Used with Engine Train. |
Train_Wheel_Offset | float32 | 0 | Offset between the wheels, in meters. Used with Engine Train. |
Economy and storage fields
| Field | Type | Default | Purpose |
|---|---|---|---|
Shared_Skin_Lookup_ID | GUID or uint16 | See description | GUID or legacy ID of another vehicle this vehicle should share skins with. Defaults to this vehicle's own GUID. |
Shared_Skin_Name | string | , | When generating images, the image name contains this string instead of the vehicle's file name. Often used with Shared_Skin_Lookup_ID. |
Size2_Z | float32 | 0 | Orthogonal camera size for economy icons. |
Can_Be_Locked | bool | true | Whether the vehicle can be locked by a player. |
Trunk_Storage_X | uint8 | 0 | Number of columns (horizontal storage space). |
Trunk_Storage_Y | uint8 | 0 | Number of rows (vertical storage space). |
Drops_Table_ID | uint16 | 962 | ID of the item spawn table to use when the vehicle is destroyed. Default spawn table is Destroyed_Vehicle_Default. |
Drops_Max | uint8 | 7 | Maximum number of item drops to spawn when the vehicle is destroyed. |
Drops_Min | uint8 | 3 | Minimum number of item drops to spawn when the vehicle is destroyed. |
Animation and character fields
| Field | Type | Default | Purpose |
|---|---|---|---|
Bicycle | flag | not set | Player character should use a bicycling animation. |
Bicycle_Anim_Speed | float32 | 0 | Multiplier on the speed of the bicycling animation. |
Reclined | flag | not set | Player character should use a reclined idle animation. |
Zip | flag | not set | Player character should use a handlebar idle animation. |
Physics profile and validation fields
| Field | Type | Default | Purpose |
|---|---|---|---|
Physics_Profile | GUID | See description | GUID of a VehiclePhysicsProfileAsset to use. Physics profiles allow increased control over vehicle settings in bulk. Default profiles exist for Boat, Car, Helicopter, and Plane engine types. |
Valid_Speed_Down | float32 | See description | Overrides the downward vertical speed sanity check on the Y-axis, in m/s. Defaults to 25 for Car and Boat, 100 otherwise. |
Valid_Speed_Horizontal | float32 | See description | Overrides the horizontal speed sanity check on the XZ plane, in m/s. Defaults vary by engine type. |
Valid_Speed_Up | float32 | See description | Overrides the upward vertical speed sanity check on the Y-axis, in m/s. Defaults to 12.5 for Car, 3.25 for Boat, 100 otherwise. |
Should_Spawn_Seat_Capsules | bool | false | If true, capsule colliders are attached to each Seat GameObject to prevent players from clipping into the ground. |
Buildable_Placement_Rule | EVehicleBuildablePlacementRule | None | Overrides how barricades can be attached to the vehicle. |
Bypass_Hash_Verification | flag | not set | Disable hash verification check and allow mismatched files. |
Crawler track tiling fields
| Field | Type | Default | Purpose |
|---|---|---|---|
CrawlerTrackTilingMaterials | list of CrawlerTrackTilingMaterial | , | If set, offsets a crawler track's material UVs in sync with wheels rolling. |
CrawlerTrackSteering_Torque | float32 | 0.0 | Added or subtracted from wheel motor torque in CrawlerTrack steering mode. |
CrawlerTrackSteering_SidewaysFrictionMultiplier | float32 | 1.0 | For a wheel in CrawlerTrack mode, the wheel collider's sideways friction stiffness is multiplied by this value while a steering input is applied. |
CrawlerTrackSteering_MaxSpeedScale | float32 | 1.0 | Multiplier for crawler track steering torque and sideways friction multiplier while driving at maximum speed. |
CrawlerTrackTilingMaterial dictionary
| Field | Type | Default | Purpose |
|---|---|---|---|
Path | string | , | Scene hierarchy path to a Renderer component relative to the vehicle's root transform. |
MaterialIndex | int32 | 0 | Index into the Renderer component's Materials list. |
WheelIndices | list of int32 | , | Index into wheel configurations list. The average of these wheels' RPM is used to calculate track speed. |
RepeatDistance | float32 | 0.0 | How far to travel to offset UV by one repeat. Calculated by selecting an edge parallel to the crawler track and dividing the UV distance by the physical 3D distance. |
UV_Direction | Vector2 | (0.0, 0.0) | Direction of UV offset. For example, (-1.0, 0.0) moves the UV offset left as the vehicle travels forward. |
Enumeration reference
The vehicle asset system uses 14 enumerations. Every enumeration value that appears in the source material is documented below.
EEngine
| Value | Description |
|---|---|
Car | Standard ground vehicle. Most handling properties apply. |
Plane | Aircraft with air-steering and lift mechanics. |
Blimp | Lighter-than-air vehicle. Uses unique physics scaling. |
Boat | Water vehicle with buoyancy mechanics. |
Train | Track-riding vehicle. Speed_Max is not multiplied by 1.25. |
EVehicleBuildablePlacementRule
| Value | Description |
|---|---|
None | Vehicle does not override placement. Barricades can be attached unless the barricade sets Allow_Placement_On_Vehicle to false. |
AlwaysAllow | Vehicle allows any barricade to be placed on it regardless of the barricade's setting. |
Block | Vehicle prevents any barricade from being placed on it. |
EVehicleDefaultPaintColorMode
| Value | Description |
|---|---|
None | Not configured. |
List | Pick from the DefaultPaintColors list. |
RandomHueOrGrayscale | Pick a random HSV using DefaultPaintColor_Configuration. |
EVehicleEngineSoundType
| Value | Description |
|---|---|
Legacy | Default. Uses Pitch_Idle and Pitch_Drive to control engine audio pitch. |
EngineRPMSimple | Set pitch and volume of a single clip according to engine RPM using RpmEngineSoundConfiguration. |
EWheelMotionEffectsMode
| Value | Description |
|---|---|
None | Turn off motion effects. Default for wheels not using collider pose. |
BothDirections | Enable motion effects. Default for wheels using collider pose. |
ForwardOnly | Enable motion effects, but turn them off while moving backward. |
BackwardOnly | Enable motion effects, but turn them off while moving forward. |
EWheelSteeringMode
| Value | Description |
|---|---|
None | Wheel does not affect steering. |
SteeringAngle | Set WheelCollider steering angle according to Steer_Min and Steer_Max. |
CrawlerTrack | Increase or decrease motor torque to rotate vehicle in-place. |
ECrawlerTrackForwardMode
| Value | Description |
|---|---|
Auto | Assigns a forward mode based on wheel collider position. Left-side wheels are Clockwise, right-side wheels are CounterClockwise. |
Clockwise | Positive motor torque on this wheel rotates the vehicle clockwise. |
CounterClockwise | Positive motor torque on this wheel rotates the vehicle counter-clockwise. |
EBatteryMode
| Value | Description |
|---|---|
None | Battery does nothing. |
Charge | Battery charges while active. |
Burn | Battery depletes while active. |
EItemRarity
| Value | Description |
|---|---|
Common | White highlight. |
Uncommon | Green highlight. |
Rare | Blue highlight. |
Epic | Purple highlight. |
Legendary | Orange highlight. |
Mythical | Red highlight. |
Worked .dat examples
Example 1: Passenger car
A standard four-seat passenger car with manual transmission, combustion engine, and trunk storage.
GUID a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d
ID 2001
Type Vehicle
Name MySedan
Rarity Common
Engine Car
Speed_Max 50
Speed_Min -10
Steering_Angle_Max 35
Steering_Angle_FullSpeed_Factor 0.5
Steering_Angle_Turn_Speed 180
Brake 8
EngineIdleRPM 1000
EngineMaxRPM 7000
EngineMaxTorque 1.0
EngineRPM_IncreaseRate 3000
EngineRPM_DecreaseRate 2000
ForwardGearRatios [ 3.5, 2.0, 1.4, 1.0, 0.75 ]
ReverseGearRatio 3.0
GearShift_UpThresholdRPM 5500
GearShift_DownThresholdRPM 1500
GearShift_Duration 0.5
GearShift_Interval 1.0
GearShift_AllowSkippingGears true
GearShift_VisibleInHUD true
Fuel 5000
Fuel_Burn_Rate 2.05
Fuel_Min 500
Fuel_Max 5000
Health 1000
Health_Min 200
Health_Max 1000
Trunk_Storage_X 4
Trunk_Storage_Y 4
Bumper_PlayerDamage 10
Bumper_ZombieDamage 15
Bumper_AnimalDamage 15
Bumper_ObjectDamage 30
Bumper_ResourceDamage 85
Bumper_Multiplier 1.0
Bumper_SelfDamageMultiplier 1.0
Bumper_SpeedDamageThreshold 3.0
Exit 2
Can_Be_Locked true
Pitch_Idle 0.5
Pitch_Drive 0.05
EngineSound_Type Legacy
WheelConfigurations
[
{
WheelColliderPath Tires/Tire_0
IsColliderSteered true
IsColliderPowered true
ModelPath Wheels/Wheel_0
ModelUseColliderPose true
}
{
WheelColliderPath Tires/Tire_1
IsColliderSteered true
IsColliderPowered true
ModelPath Wheels/Wheel_1
ModelUseColliderPose true
}
{
WheelColliderPath Tires/Tire_2
IsColliderSteered false
IsColliderPowered false
ModelPath Wheels/Wheel_2
ModelUseColliderPose true
}
{
WheelColliderPath Tires/Tire_3
IsColliderSteered false
IsColliderPowered false
ModelPath Wheels/Wheel_3
ModelUseColliderPose true
}
]Example 2: Military APC with turret
A heavy armored personnel carrier with two turrets, explosion armor, and limited fuel economy.
GUID b2c3d4e5f6a74b8c9d0e1f2a3b4c5d6
ID 2002
Type Vehicle
Name MilitaryAPC
Rarity Rare
Engine Car
Speed_Max 35
Speed_Min -8
Steering_Angle_Max 28
Steering_Angle_FullSpeed_Factor 0.4
Brake 12
EngineIdleRPM 800
EngineMaxRPM 5000
EngineMaxTorque 1.0
EngineRPM_IncreaseRate 2000
EngineRPM_DecreaseRate 1500
ForwardGearRatios [ 4.0, 2.5, 1.8, 1.2 ]
ReverseGearRatio 3.5
Fuel 8000
Fuel_Burn_Rate 4.2
Fuel_Min 1000
Fuel_Max 8000
Health 2500
Health_Min 500
Health_Max 2500
Invulnerable
Explosions_Invulnerable
Passenger_Explosion_Armor 2.0
Child_Explosion_Armor_Multiplier 0.5
Bumper_PlayerDamage 25
Bumper_ZombieDamage 30
Bumper_ObjectDamage 50
Bumper_ResourceDamage 100
Bumper_Multiplier 1.5
Bumper_SpeedDamageThreshold 2.0
Turrets 2
Turret_0_Seat_Index 0
Turret_0_Item_ID 1471
Turret_0_Yaw_Min -180
Turret_0_Yaw_Max 180
Turret_0_Pitch_Min -10
Turret_0_Pitch_Max 45
Turret_1_Seat_Index 1
Turret_1_Item_ID 1472
Turret_1_Yaw_Min -90
Turret_1_Yaw_Max 90
Turret_1_Pitch_Min -5
Turret_1_Pitch_Max 30
Trunk_Storage_X 6
Trunk_Storage_Y 4
Tire_ID 1451
Tires_Invulnerable
Pitch_Idle 0.625
Pitch_Drive 0.025
EngineSound_Type Legacy
WheelConfigurations
[
{
WheelColliderPath Tires/Tire_0
IsColliderSteered true
IsColliderPowered true
ModelPath Wheels/Wheel_0
ModelUseColliderPose true
}
{
WheelColliderPath Tires/Tire_1
IsColliderSteered true
IsColliderPowered true
ModelPath Wheels/Wheel_1
ModelUseColliderPose true
}
{
WheelColliderPath Tires/Tire_2
IsColliderSteered true
IsColliderPowered true
ModelPath Wheels/Wheel_2
ModelUseColliderPose true
}
{
WheelColliderPath Tires/Tire_3
IsColliderSteered true
IsColliderPowered true
ModelPath Wheels/Wheel_3
ModelUseColliderPose true
}
{
WheelColliderPath Tires/Tire_4
IsColliderSteered false
IsColliderPowered false
ModelPath Wheels/Wheel_4
ModelUseColliderPose true
}
{
WheelColliderPath Tires/Tire_5
IsColliderSteered false
IsColliderPowered false
ModelPath Wheels/Wheel_5
ModelUseColliderPose true
}
]Example 3: Train car
A train car with track-following configuration. Note that Speed_Max is not multiplied by 1.25 for Engine Train.
GUID c3d4e5f6a7b84c9d0e1f2a3b4c5d6e7
ID 2003
Type Vehicle
Name TrainCar
Rarity Common
Engine Train
Speed_Max 25
Speed_Min -8
Steering_Angle_Max 0
EngineIdleRPM 500
EngineMaxRPM 3000
EngineMaxTorque 1.0
EngineRPM_IncreaseRate 1000
EngineRPM_DecreaseRate 1000
ForwardGearRatios [ 2.0 ]
ReverseGearRatio 2.0
Fuel 10000
Fuel_Burn_Rate 4.2
Fuel_Min 5000
Fuel_Max 10000
Health 5000
Health_Min 1000
Health_Max 5000
Invulnerable
Train_Car_Length 8.0
Train_Track_Offset 0.5
Train_Wheel_Offset 2.0
Bumper_PlayerDamage 50
Bumper_ZombieDamage 80
Bumper_ObjectDamage 100
Bumper_ResourceDamage 200
Bumper_Multiplier 2.0
Bumper_SelfDamageMultiplier 0.5
Bumper_SpeedDamageThreshold 1.0
Buildable_Placement_Rule AlwaysAllow
Can_Be_Locked true
Trunk_Storage_X 8
Trunk_Storage_Y 6
Pitch_Idle 0.3
Pitch_Drive 0.01
EngineSound_Type LegacyMermaid diagrams
Vehicle system architecture
As shown in the architecture diagram above, the InteractableVehicle script populates its subsystems from the .dat fields. Each subsystem is independently configurable, and the subsystems that are not configured (for example, the train system on a car) are simply inactive.
PaintableSections chain
The paint chain is driven entirely by the PaintableSections array. Each section references a specific Renderer component and material index, and the _PaintColor shader property is set at runtime when the player uses a Vehicle Paint Tool.
Torque delivery pipeline
The torque delivery pipeline shown above is the complete calculation chain from engine RPM to per-wheel torque. Every vehicle modder tuning engine behavior should trace through the pipeline when diagnosing poor acceleration or gear-shifting behavior.
Frequently asked questions
What is the difference between EngineIdleRPM and the minimum RPM that the engine actually runs at?
EngineIdleRPM is the floor value below which engine RPM never drops. The actual minimum RPM during operation is the maximum of EngineIdleRPM and the RPM computed from wheel RPM multiplied by the current gear ratio. If the vehicle is stationary and in neutral, the engine runs at EngineIdleRPM. If the vehicle is coasting downhill in gear, the engine RPM is driven by the wheels through the gear ratio and may exceed idle RPM.
Can I set ForwardGearRatios to an empty list?
Yes, an empty or omitted ForwardGearRatios list means the vehicle has no gear shifting. The engine torque is applied directly to the wheels without any ratio multiplication. This is appropriate for vehicles with continuously variable transmissions or for very simple vehicles where gear simulation adds unnecessary complexity.
How do I make a vehicle that does not use fuel?
Set Fuel to 0 or omit the fuel fields entirely and use the Battery_Powered flag or Stamina_Powered flag. A battery-powered vehicle uses battery charge instead of fuel and recharges its battery through the Battery_Charge_Rate and BatteryMode_* fields. A stamina-powered vehicle uses no fuel or battery at all - the player's stamina bar is the energy source.
What happens if I set Turrets to 0 but configure Turret_0_* fields?
The turret fields are ignored when Turrets is 0. The vehicle loads without any turret, and the turret configuration fields produce no error. The turret subsystem only activates when Turrets is set to a value of 1 or greater and the corresponding numbered turret fields are present. Configure Turrets first, then configure the corresponding fields.
Can a vehicle have both turrets and trunk storage?
Yes. The turret system and the trunk storage system are independent. A military APC with a turret for the gunner and a trunk for the driver's supplies is a common configuration. The Trunk_Storage_X and Trunk_Storage_Y fields define the storage grid; the Turret_#_* fields define the weapon mount. Neither affects the other.
How do I configure crawler tracks for a tank-style vehicle?
Set the WheelConfigurations entries for the track wheels to use SteeringMode CrawlerTrack and configure CrawlerTrackForwardMode appropriately. The CrawlerTrackSteering_Torque field controls the differential turning force, and CrawlerTrackTilingMaterials handles the visual track material UV offset. Set CanExplode false on track wheels to prevent them from flying off individually on destruction.
What is the recommended Fuel_Burn_Rate for a car?
The default is 2.05 for Engine Car. The cohort-validated range for standard passenger vehicles is 1.5 to 3.0. Higher values (4.0+) produce vehicles that consume fuel rapidly and require frequent refueling, which is appropriate for military or high-performance vehicles. Lower values (0.5 to 1.5) produce fuel-efficient vehicles suitable for exploration or survival scenarios.
How do PaintableSections and AdditionalTransparentSections interact?
They are independent lists. PaintableSections controls which materials receive the _PaintColor shader property for vehicle painting. AdditionalTransparentSections controls which materials receive transparent sorting updates (periodic render-queue adjustment based on underwater state). A material can appear in both lists, in one list, or in neither.
What does Bypass_Hash_Verification actually do?
It disables the hash verification check that the asset loader runs when loading the vehicle bundle. Normally, the loader compares the bundle's content hash against a stored hash and rejects the bundle if they differ. Setting this flag allows the vehicle to load even if the bundle content has been modified outside the normal build pipeline. The cohort recommendation is to set this flag only for development vehicles and to remove it before publishing.
Can I have more than 255 in a uint16 field like ID or Fuel?
uint16 has a maximum value of 65535. ID, Fuel, and Health can hold values up to 65535. uint8 fields like Turrets, Trunk_Storage_X, Trunk_Storage_Y, Drops_Max, and Drops_Min have a maximum of 255.
How do I make a vehicle that cannot be locked?
Set Can_Be_Locked to false. Players will not be able to lock the vehicle with the lock interaction. This is appropriate for public transport vehicles, rental vehicles, or quest vehicles that need to be accessible to all players.
What is the use case for Shared_Skin_Lookup_ID?
This field was used by some official vehicles where each paint color used to be a separate vehicle asset file. The field tells the economy system to look up skin variants from another vehicle's skin set. For mod vehicles that use the modern paint system (PaintableSections and DefaultPaintColors), this field is not needed and should be omitted.
Why is the vehicle speed in kph different from Speed_Max in m/s?
Speed_Max is in meters per second. For all engine types except Train, this value is multiplied by 1.25 internally. The in-game display converts m/s to kph by multiplying by 3.6. A vehicle with Speed_Max 12.5 (m/s) has an effective top speed of 12.5 x 1.25 = 15.625 m/s, which displays as approximately 56.25 kph in the HUD.
How do PaintableSections work with vehicles that have multiple body materials?
Each entry in PaintableSections specifies a Path to a Renderer component, a MaterialIndex to identify which material on that Renderer to affect, and an AllMaterials flag that, when true, applies the paint to every material on that Renderer instead of just the indexed one. A vehicle with separate body, trim, and interior materials can configure PaintableSections entries for only the body materials while leaving trim and interior unpaintable.
What happens if WheelConfigurations references a WheelCollider path that does not exist?
The wheel configuration entry is silently skipped. The vehicle loads without that wheel. The remaining wheels function normally. This behavior can be useful for debugging - temporarily removing a wheel configuration entry to isolate a handling issue - but should not appear in a published vehicle.
Is EngineRPMMismatch_TorqueReduction_Enabled useful for anything other than preventing wheel spin?
Its primary purpose is to reduce wheel torque when the wheels are spinning faster than the engine can drive them - a wheel-spin scenario. When enabled, the torque reduction pulls wheel RPM back toward the expected value based on engine RPM and gear ratio. This is most useful for high-performance vehicles where wheel spin under acceleration would cause loss of control.
How do I configure the default physics profile for a car?
The default Car physics profile GUID is 6b91a94f01b6472eaca31d9420ec2367. The default Boat profile is 47258d0dcad14cb8be26e24c1ef3449e. The default Helicopter profile is bb9f9f0204c4462ca7d976b87d1336d4. The default Plane profile is 93a47d6d40454335b4784e803628ac54. These profiles are used when the Vehicle prefab's root Rigidbody mass is exactly 1.0 and any WheelCollider masses are also exactly 1.0. If your vehicle does not meet those conditions, no default profile is applied and you must either assign a Physics_Profile explicitly or tune the vehicle without a profile.
Best practices
- Always generate a fresh GUID for every vehicle asset. Do not reuse GUIDs from other assets.
- Use
Speed_Maxvalues that account for the 1.25 internal multiplier. A target display speed of 100 kph requires aSpeed_Maxof approximately 22.2 m/s in the.dat. - Configure
ForwardGearRatiosas a smooth progression. Abrupt ratio changes produce jerky acceleration. A typical 5-speed car uses ratios that decrease by approximately 30-40 percent per gear. - Set
EngineMaxTorqueto 1.0 and use theEngineCurvesComponenttorque curve for actual torque tuning. The field is a global multiplier; use it only for coarse adjustment. - Author
WheelConfigurationsfor every wheel on the vehicle. Even non-powered, non-steered wheels need entries to synchronize their visual models. - Match
WheelColliderPathandModelPathexactly. A typo in either path produces a missing wheel. - Set
ModelUseColliderPose trueon every wheel that has a corresponding collider. This ensures the visual model follows the physics pose exactly. - Use
CrawlerTrackSteering_MaxSpeedScaleto keep track steering controllable at high speeds. A value of 0.5 reduces steering torque by 50 percent at maximum speed. - Test paint masks with at least three different player paint colors before publishing. A mask that looks correct in the Unity Editor may reveal unexpected UV island assignments when painted in-game.
- Set
GearShift_AllowSkippingGears falsefor vehicles where sequential gear shifts are important for the driving feel, such as sports cars or racing vehicles.
Advanced considerations
Vehicles with complex multiple-battery configurations
The battery system supports four distinct BatteryMode states driven by separate conditions: BatteryMode_Driving (player is driving), BatteryMode_Empty (vehicle is empty), BatteryMode_Headlights (headlights are on), and BatteryMode_Sirens (siren is on). Each mode can be set to Charge, Burn, or None. A common configuration for an electric police vehicle is BatteryMode_Empty Charge (recharges while parked), BatteryMode_Driving Burn (uses charge while driving), BatteryMode_Headlights Burn (headlights drain the battery), and BatteryMode_Sirens Burn (sirens drain the battery). The Battery_Charge_Rate and Battery_Burn_Rate fields control the rate per second for each active mode.
Vehicle redirectors and paint color inheritance
Vehicle Redirector assets (Bundles/Vehicles/Redirectors/*.asset) can override a vehicle's spawn paint color without modifying the vehicle's .dat file. The redirector's LoadPaintColor property sets a fixed paint color for a specific vehicle spawn point, and LoadPaintColor_SelectFromDefaultPaintColors selects a random color from the vehicle's DefaultPaintColors list. The redirector system is how the 128 official color variants are implemented without duplicating vehicle assets.
Engine sound type selection considerations
The Legacy engine sound type is simpler to configure (only Pitch_Idle and Pitch_Drive are needed) but provides less realistic audio behavior because pitch is not directly tied to engine RPM. The EngineRPMSimple type requires an RpmEngineSoundConfiguration dictionary with four fields (IdlePitch, IdleVolume, MaxPitch, MaxVolume) but produces audio that more accurately reflects the engine state. For high-fidelity vehicle mods, the cohort recommendation is EngineRPMSimple.
Wheel balancing for motorcycles and bicycles
Motorcycles and bicycles use the Steering_LeaningForceMultiplier field to apply leaning torque based on steering input. The leaning force is scaled by normalized speed when Steering_LeaningForce_ScaleWithSpeed is true, with the Steering_LeaningForce_SpeedExponent controlling the response curve. The RollAngularVelocityDamping field is critical for damping the leaning oscillation - without it, the vehicle oscillates around the roll axis after every turn.
Explosion force directionality
The Explosion_Min_Force and Explosion_Max_Force vector3 fields allow directional explosion forces. The Y-axis component determines vertical force. The official default of (0, 1024, 0) produces a purely upward explosion force with some randomization between the min and max values. For vehicles that should explode outward as well as upward (e.g., an ammunition-laden military vehicle), set non-zero X and Z components.
Appendices
Appendix A: Quick-reference property card
| Category | Key fields |
|---|---|
| Identity | GUID, ID, Type, Name, Rarity, Engine |
| Speed and steering | Speed_Max, Speed_Min, Steering_Angle_Max, Steering_Angle_FullSpeed_Factor, Steering_Angle_Turn_Speed, Brake |
| Engine and gears | EngineIdleRPM, EngineMaxRPM, EngineMaxTorque, ForwardGearRatios, ReverseGearRatio, GearShift_* |
| Wheels | WheelConfigurations (list), Wheel_Collider_Mass_Override, Tire_ID, Tires_Invulnerable |
| Fuel | Fuel, Fuel_Burn_Rate, Fuel_Min, Fuel_Max |
| Battery | Battery_Powered, Battery_Burn_Rate, Battery_Charge_Rate, BatteryMode_*, Can_Steal_Battery, Default_Battery |
| Health and armor | Health, Health_Min, Health_Max, Invulnerable, Environment_Invulnerable, Explosions_Invulnerable, Bumper_* |
| Turrets | Turrets, Turret_#_Seat_Index, Turret_#_Item_ID, Turret_#_Yaw_*, Turret_#_Pitch_* |
| Paint | IsPaintable, PaintableSections, DefaultPaintColor_Mode, DefaultPaintColors, DefaultPaintColor_Configuration |
| Audio | EngineSound_Type, Pitch_Idle, Pitch_Drive, EngineSound, Has_Horn, HornAudioClip, IgnitionAudioClip |
| Explosion | Explosion, Explosion_Force_Multiplier, Explosion_Max_Force, Explosion_Min_Force, ShouldExplosionBurnMaterials, ShouldExplosionCauseDamage |
| Crawler tracks | CrawlerTrackTilingMaterials, CrawlerTrackSteering_Torque, CrawlerTrackSteering_SidewaysFrictionMultiplier, CrawlerTrackSteering_MaxSpeedScale |
| Train | Train_Car_Length, Train_Track_Offset, Train_Wheel_Offset |
| Storage | Trunk_Storage_X, Trunk_Storage_Y, Drops_Table_ID, Drops_Max, Drops_Min |
Appendix B: Enumeration reference
| Enumeration | Values |
|---|---|
EEngine | Car, Plane, Blimp, Boat, Train |
EVehicleBuildablePlacementRule | None, AlwaysAllow, Block |
EVehicleDefaultPaintColorMode | None, List, RandomHueOrGrayscale |
EVehicleEngineSoundType | Legacy, EngineRPMSimple |
EWheelMotionEffectsMode | None, BothDirections, ForwardOnly, BackwardOnly |
EWheelSteeringMode | None, SteeringAngle, CrawlerTrack |
ECrawlerTrackForwardMode | Auto, Clockwise, CounterClockwise |
EBatteryMode | None, Charge, Burn |
EItemRarity | Common, Uncommon, Rare, Epic, Legendary, Mythical |
Appendix C: Compatibility matrix
| Vehicle type | Wheels | Turrets | Fuel | Battery | Train system | Paint | Steering |
|---|---|---|---|---|---|---|---|
| Car | Standard | Optional | Standard | Optional | No | Yes | Standard |
| Truck | Standard | Optional | Standard | Optional | No | Yes | Standard |
| APC | Standard + crawler | Yes | Standard | Optional | No | Yes | Standard + crawler |
| Helicopter | No (uses rotors) | Optional | Standard | Optional | No | Yes | Air |
| Plane | No (uses wheels + lift) | Optional | Standard | Optional | No | Yes | Air |
| Boat | No (uses water physics) | Optional | Standard | Optional | No | Yes | Water |
| Blimp | No (uses lift) | No | Standard | Optional | No | Yes | Air |
| Train | Standard | No | Standard | Optional | Yes | Yes | None (track-following) |
| Bicycle | Standard (2) | No | No | No | No | Optional | Standard |
| Motorcycle | Standard (2) | No | Standard | Optional | No | Optional | Standard + leaning |
Appendix D: Diagnostic tables
| Symptom | Most likely cause | Resolution |
|---|---|---|
| Vehicle does not spawn | GUID or ID conflict | Confirm GUID is unique and ID not in use by another mod |
| Vehicle spawns but is invisible | Master bundle missing or prefab path wrong | Confirm bundle in correct folder and prefab named correctly |
| Vehicle does not move | Speed_Max is 0 or not set | Set a positive value |
| Vehicle moves but accelerates very slowly | EngineMaxTorque too low, gear ratios too high, or no EngineCurvesComponent attached | Increase EngineMaxTorque or adjust gear ratios |
| Vehicle shifts gears but torque drops to zero for too long | GearShift_Duration too high | Reduce to 0.3-0.5 seconds |
| Vehicle does not shift gears | GearShift_UpThresholdRPM never reached or ForwardGearRatios empty | Verify engine can reach shift RPM and gear list is populated |
| Wheels do not rotate visually | ModelUseColliderPose false or WheelColliderPath incorrect | Set ModelUseColliderPose true and verify path |
| Wheels float above ground | WheelCollider radius larger than wheel mesh | Match radius to mesh dimensions |
| Turret does not fire | Turret_#_Item_ID missing or invalid | Verify item ID is a valid GunAsset with Turret property |
| Turret does not rotate | Turret_#_Yaw_Min equals Turret_#_Yaw_Max | Set a range of at least 90 degrees |
| Paint does not apply | IsPaintable false or PaintableSections empty | Set IsPaintable true and configure sections |
| Paint applies to wrong areas | MaterialIndex references wrong material on the Renderer | Verify the material index in the Renderer's material list |
| Fuel decreases too fast | Fuel_Burn_Rate too high | Reduce to 2.05 for cars or lower for efficient vehicles |
| Battery does not charge while driving | BatteryMode_Driving not set to Charge | Set BatteryMode_Driving Charge |
| Cannot enter the vehicle | Exit transforms at wrong position or missing InteractableVehicle script | Add script to prefab root and verify exit transforms |
| Horn does not play | HornAudioClip not set or Has_Horn false | Assign a valid audio clip and set Has_Horn true |
Cross-references
- Vehicle Mod Basics - the prerequisite article covering prefab structure, WheelCollider configuration, and seat transform placement.
- Vehicle Paint Tool Reference - the companion article for the Vehicle Paint Tool item type.
- Vehicle Repair Tool Reference - the companion article for vehicle repair tools.
- Vehicle Lockpick Tool Reference - the lockpick item that interacts with vehicle locking mechanics.
- Object Asset Reference - the previous article in this series covering object assets.
- Vehicle Physics Profile Reference - the next article covering physics profile assets that provide bulk vehicle configuration.
- Project Folder Structure and GUIDs - GUID authoring workflow and folder layout for all item mods.
- Master Bundle Export - Unity bundling pipeline for packaging vehicle prefabs.
- Smartly Dressed Games modding documentation - official field reference.
- Unturned on Steam - game page and community.
Document history
| Version | Date | Author | Notes |
|---|---|---|---|
| 1.0 | 2026-07-26 | 57 Studios | Initial publication. Complete vehicle asset .dat field reference covering all 19 property dictionaries, 14 enumerations, engine RPM and gear ratio mechanics, wheel configuration system, turret system, paint system, sound system, battery and fuel systems, health and armor subsystem, crawler track properties, train system, three worked .dat examples, Mermaid architecture diagrams, 20 FAQ entries, quick-reference appendices, and compatibility matrix. |
