ArcadeWheeled Handling Guide
ArcadedWheeled provides a different handling system from the default StdWheeled.
There are various differences, but crucially all the handling physics is done in the game code rather than in the low level physics code.
Specifically the friction values, power, pedal, and brake are set to zero for the low level physics code and only the suspension springs and collisions are processed by the low level.
The actual handling, such as speed, acceleration, lateral friction and hand braking, are instead done by the game code.
Most setup features such as damage, components, parts and actions are the same as previous. The only differences concern the friction, tweak modifiers, the gears and engine power. However, the values canBrake, density, driving, maxFriction, ninFriction, slipFrictionMod, rimRadius, and torqueScale are no longer used since these were used by the low level code. In fact the friction values are zeroed by the game code. The stabilizer value is still available in the <Wheeled> node.
In the xml the <ArcadeWheeled> lives underneath <MovementParams>.
The <Handling> Node
The <Handling> node encapsulates all the pertinent handling features of the vehicle. The handling description is now specified in the <handling> node in a simplified way for the front wheels and the back wheels.
There are no gears and no engine specification. Also, everything is mass independent, acceleration and decceleration rates, and braking etc are not affected if you change the mass box.
- acceleration - This is the rate of acceleration.
- decceleration - This is the rate of natural deceleration when there is no throttle or brake.
- topSpeed - Top speed in meters per second.
- reverseSpeed - Reverse speed in meters per second.
- front - The lateral friction of the front wheels (note the forwards friction is internally calculated).
- back - The lateral friction of the back wheels.
- offset - The vertical positional offset, where handling forces are applied for forwards and lateral friction relative to the mass box.
Friction Offset - The handling forces are not actually applied at the wheel positions. The vertical offset from the mass boss is overridden using this value. So if you move the mass box up or down the handling will stay roughly the same. Making this value zero, will apply frictional forces at the same height as the mass box. This will give you handling that doesn't tip the vehicle side to side. Generally, this position wants to be negative. The more negative this value the more tipping both side to side and forwards when braking.
- lateralSpring - Lateral damping value.
- angSpring - Angular correction value.
Angular and Lateral Correction - The angular value makes the vehicle corner like it was on rails. It calculates the ideal turning circle set by the steering and corrects the angular speed to keep the vehicle steering on that circle. The lateral value controls how much side sliding is allowed. A high value will stop the vehicle from sliding laterally. The vehicle can be made to steer using these values alone. For example, you could turn friction to zero on the front and back wheels and set these values to be high (+30). The vehicle will then corner in a arcade fashion.
- Overview - The forward friction value of the wheels is auto calculated from the acceleration specified in the <Power> node. When accelerating the change in wheel speed is just enough to power the vehicle by the specified amount, without the wheels slipping. To make the wheels slip use the following modifiers.
- accelMultiplier1 - Scale the acceleration by this at low speed (2.0 is a good number).
- accelMultiplier2 - Scale the acceleration by this at top speed. This value should be low, i.e. 0.5, since you don't normally want wheel slipping and the acceleration should drop off.
- grip1 - Scale the default friction by this amount when the wheel is not slipping.
- grip2 - Scale the default friction by this amount when the wheel has a high slip speed. Usually you should set this to 1.0.
If you always want the wheel to slip make it less than 1.0.
If you want the wheel to have more friction that the default make this larger than 1.0 (though you may not notice much difference here)
- gripRecoverSpeed - See WheelSlip section.
- lockFront - Should the front wheels lock.
- lockBack - Should the back wheels lock.
- deccleration - How much deceleration should the full hand brake provide.
- deccelerationPowerLock - How much deceleration should the hand brake provide when the accelerator is also still pressed.
- frontFrictionScale - How much to scale the lateral friction by, of the front wheels, when the hand brake is pressed.
- backFrictionScale - How much to scale the lateral friction by, of the back wheels, when the hand brake is pressed.
- angCorrectionScale - How much to scale the angSpring value by when the hand brake is pressed.
- latCorrectionScale - How much to scale the lateralSpring value by when the hand brake is pressed.
- reductionAmount - Reduce the top speed, fractionally, by this amount when steering is at steer max.
- reductionRate - The rate at which to reduce the speed by.
- frictionBoost - Increase friction when suspension becomes compressed.
- frictionBoostHandBrake - Same as above for but when hand brake is pressed.
Compression frictionBoost - In a real car the amount of friction force depends on the downwards load on the tyre. If the suspension is compressed friction increases. If the chassis is traveling upwards (i.e. going over bumpy terrain), then the suspension expands and the load decreases along with the friction. This value controls how much the suspension effects the friction. Setting this value to zero will leave friction unaffected. Sensible values 0 - 5. This value only allows for increasing friction. The friction value will not decrease when the suspension is expanded.
- radius - The effect radius of the chassis.
Inertia radius - The game code treats the chassis as a physics sphere. This radius affects how the vehicle rotates dues to handling forces. The larger this value the more "trunk" like and heavy the vehicle will feel.
The steering is specified as per <StdWheeled> using vMaxSteerMax etc.
|v0SteerMax||The maximum steering angle at zero speed.|
|kvSteerMax||The amount of steering degrees subtracted from v0SteerMax when speed is equal or higher than vMaxSteerMax.|
|vMaxSteerMax||The top speed as far as steering is concerned.|
|steerSpeed||The speed at which the wheels reach full turning lock at max speed.|
|steerSpeedMin||The speed at which the wheels reach full turning lock at zero speed.|
|steerRelaxation||The speed at which the wheels center when you are turning then let go of the stick.|
- The Tweak Groups are not implemented. These used to influence the low level physics parameters such as power, which are not used.
- Gears are not used by <ArcadeWheeled>. From experience it was felt that gears just got in the way of the desired handling. The aim is to fake gears for sound purposes only.
- Similarly nearly all the low level physics params underneath <Wheeled> including <gearRatios> are currently ignored. Though at the moment the init code still parses these (will git rid of this at some point).
- Note, however, that the stabilizer value for the suspension is the still used from the <Wheeled> node.