Vehicles (Scripting Parameters)
Here is a list of the necessary parameters to be included in a vehicle script. For further reference, see
- prop_vehicle_airboat: airboat.txt
- prop_vehicle_apc: apc.txt / apc_npc.txt
- prop_vehicle_crane: crane.txt
- prop_vehicle_prisoner_pod: prisoner_pod.txt
- prop_vehicle_jeep: jalopy.txt (New with Source 2007) / jeep_test.txt
- There is also reference_vehicle.txt, which you can modify to make your own vehicle or use as-is.
Body
// parameters for the body object control of the vehicle
struct vehicle_bodyparams_t
{
DECLARE_SIMPLE_DATADESC();
Vector massCenterOverride; // leave at vec3_origin for no override
float massOverride; // leave at 0 for no override
float addGravity; // keeps car down
float tiltForce; // keeps car down when not on flat ground
float tiltForceHeight; // where the tilt force pulls relative to center of mass
float counterTorqueFactor;
float keepUprightTorque;
float maxAngularVelocity; // clamp the car angular velocity separately from other objects to keep stable
};
Wheels
// wheel objects are created by vphysics, these are the parameters for those objects
// NOTE: They are paired, so only one set of parameters is necessary per axle
struct vehicle_wheelparams_t
{
DECLARE_SIMPLE_DATADESC();
float radius;
float mass;
float inertia;
float damping; // usually 0
float rotdamping; // usually 0
float frictionScale; // 1.5 front, 1.8 rear
int materialIndex;
int brakeMaterialIndex;
int skidMaterialIndex;
float springAdditionalLength; // 0 means the spring is at it's rest length
};
Suspension
struct vehicle_suspensionparams_t
{
DECLARE_SIMPLE_DATADESC();
float springConstant;
float springDamping;
float stabilizerConstant;
float springDampingCompression;
float maxBodyForce;
};
// NOTE: both raytrace and wheel data here because jetski uses both.
Axle
struct vehicle_axleparams_t
{
DECLARE_SIMPLE_DATADESC();
Vector offset; // center of this axle in vehicle object space
Vector wheelOffset; // offset to wheel (assume other wheel is symmetric at -wheelOffset) from axle center
Vector raytraceCenterOffset; // offset to center of axle for the raytrace data.
Vector raytraceOffset; // offset to raytrace for non-wheel (some wheeled) vehicles
vehicle_wheelparams_t wheels;
vehicle_suspensionparams_t suspension;
float torqueFactor; // normalized to 1 across all axles
// e.g. 0,1 for rear wheel drive - 0.5,0.5 for 4 wheel drive
float brakeFactor; // normalized to 1 across all axles
};
Steering
struct vehicle_steeringparams_t
{
DECLARE_SIMPLE_DATADESC();
float degreesSlow; // angle in degrees of steering at slow speed
float degreesFast; // angle in degrees of steering at fast speed
float degreesBoost; // angle in degrees of steering at fast speed
float steeringRateSlow; // this is the speed the wheels are steered when the vehicle is slow
float steeringRateFast; // this is the speed the wheels are steered when the vehicle is "fast"
float steeringRestRateSlow; // this is the speed at which the wheels move toward their resting state (straight ahead) at slow speed
float steeringRestRateFast; // this is the speed at which the wheels move toward their resting state (straight ahead) at fast speed
float speedSlow; // this is the max speed of "slow"
float speedFast; // this is the min speed of "fast"
float turnThrottleReduceSlow; // this is the amount of throttle reduction to apply at the maximum steering angle
float turnThrottleReduceFast; // this is the amount of throttle reduction to apply at the maximum steering angle
float brakeSteeringRateFactor; // this scales the steering rate when the brake/handbrake is down
float throttleSteeringRestRateFactor; // this scales the steering rest rate when the throttle is down
float powerSlideAccel; // scale of speed to acceleration
float boostSteeringRestRateFactor; // this scales the steering rest rate when boosting
float boostSteeringRateFactor; // this scales the steering rest rate when boosting
float steeringExponent; // this makes the steering response non-linear. The steering function is linear, then raised to this power
bool isSkidAllowed; // true/false skid flag
bool dustCloud; // flag for creating a dustcloud behind vehicle
};
Engine
struct vehicle_engineparams_t
{
DECLARE_SIMPLE_DATADESC();
float horsepower;
float maxSpeed;
float maxRevSpeed;
float maxRPM; // redline RPM limit
float axleRatio; // ratio of engine rev to axle rev
float throttleTime; // time to reach full throttle in seconds
// transmission
int gearCount; // gear count - max 10
float gearRatio[VEHICLE_MAX_GEAR_COUNT]; // ratio for each gear
// automatic transmission (simple auto-shifter - switches at fixed RPM limits)
float shiftUpRPM; // max RPMs to switch to a higher gear
float shiftDownRPM; // min RPMs to switch to a lower gear
float boostForce;
float boostDuration;
float boostDelay;
float boostMaxSpeed;
float autobrakeSpeedGain;
float autobrakeSpeedFactor;
bool torqueBoost;
bool isAutoTransmission; // true for auto, false for manual
};
References
- source-sdk-2013/mp/src/public/vphysics/vehicles.h