Физика

· 15606 words · 74 minute read

Arch’s Physics Pipeline doc fed to Opus 4.6 with samples for every suspension type and COSMIC cars.

Introduction 🔗

As a physics creator of simulation vehicles, your goal is to obtain real-world information about the vehicle, from now on referred to as data, interpret it correctly and input it into the simulation as correct parameters in order to produce an intended input-in, output-out behavior.

A simplified model of creating car physics could be as follows: Look for data -> calculate parameters from the data -> input into the ini files -> test and verify -> back to beginning.

The simulation is sufficient enough that accurate parameters are required and are able to produce reasonably accurate behavior. In the case that accurate parameters cannot be determined with complete certainty, as is the case when creating most car physics in the context of an amateur hobbyist, educated guesses must be made. Currently there does not exist enough information to realistically determine every parameter with certainty, particularly for tires, so there will inevitably be some differences in parameters between different car physics creators. However the large majority of the car should be created on the basis of acquiring more accurate information and striving to implement it correctly into the simulation.

Assetto Corsa is an empirically based tire load and slip simulator. The tire is a pseudo-brush model with currently a single load and slip contact point (More may be added via Cphys) determined by a radius from the center of the tire dimensions. The tire has a spring and damping rate and there are various parameters to control the behavior of the tire which we will go over later. The tire can also wear and is subject to temperature behavior which can be expanded with the use of Custom Shaders Patch.

Coupled to the tire is an unsprung mass element, which attaches to a sprung mass element via a spring-and-damper system. Location of the tire in relation to the sprung mass element, from now on referred to as chassis, is accomplished via several suspension type options. Suspensions in Assetto Corsa are kinematically solved, which means that you must input in coordinates for joint locations and the program will generate behavior from them. Further freedom is offered via use of COSMIC suspension via Cphys.

As the physics creator you must also specify stiffness rates for the corner springs, the stabilizer bars (Commonly referred to as anti-roll bar or ‘ARB’), the corner spring dampers, the packers, bump and rebound rubbers, from now on referred to as packers and bumpstops, and possibly heave springs and any possible future additions.

Assetto Corsa is currently a hard-body simulation, which means that the chassis does not deflect or introduce its own springrate onto any elements. The suspension links have a specified, very stiff, currently fixed springrate and are able to deflect somewhat, but you should not consider suspension elastokinematics (For example the deflection of soft rubber elements like slide bushings on the joints of control arms in the suspension geometry) to be a significant theme of Assetto Corsa’s simulation. More complex geometries may be achieved via use of COSMIC. Simple controllers for a rear wheel steering system and active stabilizer bars are also available.

A simplified parameter based brake-torque system is available alongside (quite lacking) temperature behavior. The use of Custom Shaders Patch will make possible an object based brake-torque system and an expanded temperature behavior. There are also simple controllers for some of the brake behavior.

Power generation is accomplished via look-up table files for torque input in Nm (newton meter) and specific gear ratios can be chosen. Simplified turbocharger behavior is also available. Assetto Corsa currently offers a simplified pseudo-mechanical differential model for torque splitting capabilities, and rear-wheel, front-wheel and all-wheel drivetrains. Simple controllers for some of the behavior of drivetrain and differential elements are also present. A few look-up tables are also available to control the behavior of the throttle pedal input in relation to torque generation.

A simple but effective force location based aerodynamics model is also present, and with the use of Custom Shaders Patch, more specific aerodynamic look-up tables called ‘aeromaps’ can be implemented.

Various physics parameters may also be changed from a list of predetermined parameters in-game via a specific menu, from now on referred to as the setup.

Folder structure 🔗

The physics files necessary to produce vehicle behavior are located inside of a folder in the car directory called data. It can also appear encrypted into the .acd format used by Assetto Corsa.

Cars are stored in assettocorsa -> content -> cars. Car folder names MUST be input in all undercase letters and must not contain spaces, input such as example_car in order to avoid unintended bugs in the interface or other features of Assetto Corsa.

A typical car directory will contain the folders animations, data, sfx, skins, texture, ui and the files body_shadow, collider, driver_pase_pos.knh, logo, .kn5 file(s) for the car 3D and tyre_X_shadow files. With Custom Shaders Patch, a folder called extension can also be created for more configuration functionality.

We will be focusing on the data folder in this document, as it contains all of the physics-related files.

Additionally, other tools provided by the developers of Assetto Corsa can be found in assettocorsa -> sdk -> dev such as ksSusEditor, a basic suspension geometry viewer which is compatible with DWB and STRUT layouts.

car.ini 🔗

car.ini is the central file for the car which determines basic parameters for visuals, physics and interface. I will provide a basic explanation of the important physics related lines.

VERSION controls the version of the car that the engine will load. It does NOT represent the development version of the car. Acceptable inputs are 1 or 2, with 2 being preferred as it introduces various features. With Custom Shaders Patch, extended-1 or extended-2 may also be used and are necessary to enable extended physics features, from now on referred to as Cphys. Recommended input is extended-2.

[_EXTENSION] 🔗

REQUIRED_VERSION provides the minimum allowable CSP version that the car may load in with. Input is the CM CSP ID. For example, CSP version 0.1.73 is 1430. Not necessary, but recommended if using features not introduced in older versions.

[INFO] 🔗

SCREEN_NAME controls the name of the car in some interfaces. Uppercase and lowercase characters may be used alongside numbers, but some special characters may be limited.

SHORT_NAME is an alternative name that is used for in-session naming of the car.

[BASIC] 🔗

GRAPHICS_OFFSET moves the VISUAL sprung mass of the car, the body, in relation to the wheels. The body is referenced to the center of gravity, or CG of the car. The GRAPHICS_OFFSET must be adjusted every time a change to the CG is made. Input is in meters. Width, height, depth will be the standard format used by Assetto Corsa dimensions.

GRAPHICS_PITCH_ROTATION rotates the body. Input is in degrees.

TOTALMASS determines the mass of the sprung and unsprung masses + driver, but NOT fuel. Other fluids should be included. Input is in kilograms, kg.

INERTIA determines the SPRUNG inertia of the car in the form of a dimension box that has mass specified by TOTALMASS. Unsprung mass generates its own inertia separately. You must NOT input in the total car box dimensions. A solver to solve for sprung inertia from total car inertia has been developed and may be shared in the future. Input is in meters. Typical values are smaller than the physical constraints of the vehicle.

[GRAPHICS] 🔗

DRIVEREYES controls the position of the driver’s eye point for the onboard camera. Input is X, Y, Z in meters relative to the CG.

ONBOARD_EXPOSURE controls the exposure value used by the onboard camera. Input is an integer.

OUTBOARD_EXPOSURE controls the exposure value used by outboard cameras. Input is an integer.

ON_BOARD_PITCH_ANGLE controls the pitch angle of the onboard camera. Input is in degrees.

BUMPER_CAMERA_POS controls the position of the bumper camera. Input is X, Y, Z in meters relative to the CG.

BONNET_CAMERA_POS controls the position of the bonnet camera. Input is X, Y, Z in meters relative to the CG.

BUMPER_CAMERA_PITCH controls the pitch angle of the bumper camera. Input is in degrees.

BONNET_CAMERA_PITCH controls the pitch angle of the bonnet camera. Input is in degrees.

CHASE_CAMERA_PITCH controls the pitch angle of the chase camera. Input is in degrees.

MIRROR_POSITION controls the position used to render the interior mirror. Input is X, Y, Z in meters.

USE_ANIMATED_SUSPENSIONS toggles whether animated suspension geometry is used. 1 enables animated suspensions, 0 disables them. Note that animated suspensions are not updated in real time when setup changes are made.

VIRTUAL_MIRROR_ENABLED toggles the virtual mirror on or off by default. 1 enables, 0 disables.

SHAKE_MUL controls the onboard camera G-force shake multiplier.

FUEL_LIGHT_MIN_LITERS controls the minimum fuel level in liters at which the low fuel warning indicator activates.

[CONTROLS] 🔗

FFMULT controls the car-specific gain for the Force Feed Back, from now on referred to as FFB. Steering forces are generated via simulation of forces at the rack-end positions and depend on the situation of the car and relevant suspension geometry.

STEER_ASSIST is a gamma function for load-based effects of FFB. It does NOT determine powersteering or anything similar. Values other than 1.0 should generally be avoided. The default setting is 1.0, or linear.

STEER_LOCK controls the in-cockpit steering wheel rotation of the car physics. It must be input in as the real-world value and does not need to be matched to the user’s simulation peripheral wheel. The input is from center to one side, so divide the total range by 2 to solve for STEER_LOCK. Input is in degrees.

STEER_RATIO controls the effective steering ratio and is used in solving the roadwheel’s steering angle. The real-world rack’s value should be entered if in doubt.

LINEAR_STEER_ROD_RATIO must be input manually and is used in solving the roadwheel’s steering angle. You should reverse the value if the car steers in the wrong direction, as it is dependent on the location of the steering rack, in front or behind the wheel center.

The definition is meters of rack travel per degree of steering wheel steering * STEER_RATIO.

CPHYS CONTROLS

RACK_TRAVEL_LUT specifies a LUT file that maps steering wheel degrees to rack travel in meters via Cphys. This replaces the LINEAR_STEER_ROD_RATIO calculation with a non-linear steering relationship, allowing simulation of variable-ratio racks and u-joint nonlinearities. LUT input is steering wheel angle in degrees and output is rack travel in meters. The LUT is automatically mirrored — only positive steering angles are needed.

ENABLE_REAL_FEEL enables the Cphys Real-Feel force feedback module when set to 1. This normalizes steering torques to the user’s sim wheel steering torque (configured in CSP settings) so that the felt force is 1:1 with what the simulation produces. Required for power steering simulation. Defaults to unassisted torque when enabled.

ASSIST_TORQUE_MAX controls the maximum power steering assist torque via Cphys. This defines the ceiling for how much torque the power steering system can apply. Higher values produce stronger assist and lighter steering feel. Input is in Nm.

ASSIST_MAP_0 specifies a LUT file for the power steering assist curve via Cphys. The LUT maps driver input torque in Nm to an assist factor from 0 to 1, representing the ratio of ASSIST_TORQUE_MAX applied. Multiple maps may be specified by incrementing the index (ASSIST_MAP_1, ASSIST_MAP_2, etc.) and selected in-game via the [POWER_STEERING_SETTING] setup item.

[FUEL] 🔗

CONSUMPTION controls engine fuel consumption. The hint inside of Kunos car.ini reads fuel consumption. In one second the consumption is (rpm*gas*CONSUMPTION)/1000 litres.

FUEL controls the starting fuel amount that the car loads in with. Input is in liters.

MAX_FUEL controls the maximum fuel capacity. Input is in liters.

[FUELTANK] 🔗

POSITION controls the position of the fuel mass relative to CG. Input is in meters.

[RIDE] 🔗

PICKUP_FRONT_HEIGHT controls the display ride-height inside of setup and is used by ride height rules. It is referenced from CG and the unit is meters. It does NOT control anything related to the physics. PICKUP_REAR_HEIGHT is the above, for the rear height.

[RULES] 🔗

MIN_HEIGHT controls the minimum allowable setup ride height as determined by the above. Input is in meters. Including the MIN_HEIGHT line is not recommended due to some issues with the ground plane calculation.

[PIT_STOP] 🔗

TYRE_CHANGE_TIME_SEC, the hint inside of KS car inis reads time spent to change each tyre. I will repeat the hints for each line in this section.

  • FUEL_LITER_TIME_SEC time spent to put 1 lt of fuel inside the car
  • BODY_REPAIR_TIME_SEC time spent to repair 10% of body damage
  • ENGINE_REPAIR_TIME_SEC time spent to repair 10% of engine damage
  • SUSP_REPAIR_TIME_SEC time spent to repair 10% of suspension damage

brakes.ini 🔗

brakes.ini is the file which controls the brake torque and bias parameters for the car.

[HEADER] 🔗

VERSION controls the version of the brakes file that the engine will load. Acceptable inputs are 1 and 2. VERSION=2 enables the Cphys object-based brake system which uses physical caliper piston dimensions and master cylinder pressures instead of simplified torque values. Recommended input is 2 when using Cphys.

[_EXTENSION] 🔗

ENABLE enables extended brake features via Cphys. Input is 1 for on, 0 for off.

USE_ADVANCED_SYSTEM enables the Cphys advanced object-based brake torque system when set to 1. Requires VERSION=2. When set to 0, the simple extended system is used — this still provides the reworked thermal model and PERF_CURVE functionality, but brake torque is derived directly from MAX_TORQUE in [DATA] rather than from physical piston/pressure calculations. The simple system normalizes PERF_CURVE so that MAX_TORQUE is always the absolute maximum torque the system can produce.

THERMAL_VERSION controls the version of the Cphys brake thermal model. Input is 2 for the current recommended version.

[DATA] 🔗

MAX_TORQUE controls the maximum total brake torque available at full pedal input. Input is in Nm. When using the Cphys advanced system, this value is still used as a reference/fallback.

FRONT_SHARE controls the proportion of total brake torque applied to the front axle. Input is in percent, for example 67% = 0.67. The remainder is applied to the rear axle. When using the Cphys advanced system with [DATA2], the physical bias is determined by piston sizes and pressure distribution instead.

HANDBRAKE_TORQUE controls the brake torque applied by the handbrake at the rear wheels. Input is in Nm.

COCKPIT_ADJUSTABLE toggles whether the brake bias can be adjusted from the cockpit. 0 disables cockpit bias adjustment, 1 enables it.

ADJUST_STEP controls the step size of each cockpit brake bias adjustment increment. Input is in percent.

[DATA2] 🔗

This section defines the Cphys object-based brake system using physical master cylinder and proportioning valve parameters.

MAX_PRESSURE_SUM controls the maximum total hydraulic pressure produced by the master cylinder. This is the sum of maximum expected front and rear brake line pressures. Input is in PSI.

PEDAL_FORCE_REF controls the reference pedal force at which MAX_PRESSURE_SUM is achieved. This enables the CSP Real-Feel pedal force calibration — users can match pedal forces to the real car via the FFB Tweaks settings page. When the master cylinder implementation is used (see below), this also serves as a fallback value if Real-Feel is not enabled or clamp forces are disabled. Input is in kgf at the pedal face.

MASTER_CYL_F_DEFAULT controls the default index of the front master cylinder size (selectable in setup via [BRAKE_MC_F]).

MASTER_CYL_R_DEFAULT controls the default index of the rear master cylinder size (selectable in setup via [BRAKE_MC_R]).

PEDAL_RATIO controls the mechanical pedal ratio (pedal leverage). Used in the master cylinder force calculation to derive line pressure from pedal force.

PRESSURE_THRESHOLD_REAR controls the rear brake line pressure threshold at which the proportioning valve begins reducing rear pressure. Input is in PSI.

REDUCTION_RATIO_REAR controls the proportioning valve reduction ratio for the rear brake line above the threshold. For example 0.40 means that above the threshold, the rear line only receives 40% of additional pressure.

PEDAL_FORCE_LUT specifies a LUT file mapping pedal travel to brake force, simulating a brake booster or pedal feel curve.

[FRONT] / [REAR] 🔗

These sections define the physical caliper dimensions for each axle when using the Cphys object-based brake system.

DISC_EFFECTIVE_RADIUS controls the effective friction radius of the brake disc. If measured data is unavailable, a reasonable approximation is (outer radius + inner radius) / 2. Input is in meters.

PISTON_DIAMETER_0 through PISTON_DIAMETER_X define the diameter of each caliper piston. Multiple pistons can be specified for multi-piston calipers (up to 12 total). Input is in meters. The total piston area determines the clamping force for each axle.

MASTER_CYL_DIA_0 through MASTER_CYL_DIA_X define selectable master cylinder bore diameters for this axle. These are the options available in the setup menu — there is no limit to the number of options. The default selection is controlled by MASTER_CYL_F_DEFAULT / MASTER_CYL_R_DEFAULT in [DATA2]. Larger diameter master cylinders produce more line pressure for the same pedal force, but require more pedal travel. Input is in meters.

[TEMPS_FRONT] / [TEMPS_REAR] 🔗

These sections control the Cphys brake thermal model for each axle.

TORQUE_K controls the proportion of brake torque energy that converts into rotor heat.

COOL_TRANSFER controls the base cooling rate of the rotor to ambient.

COOL_SPEED_FACTOR_0 controls additional speed-dependent cooling from airflow.

CORE_TRANSFER_IN controls the rate of heat transfer from the rotor surface into the rotor core.

CORE_TRANSFER_OUT controls the rate of heat transfer from the rotor core back to the surface.

CORE_TRANSFER_AIR controls the rate of heat transfer from the rotor core to ambient air.

RADIATION_CONSTANT controls the radiative heat loss constant.

CONDUCTIVITY_FALLOFF controls how brake pad conductivity falls off with temperature.

COOL_SPEED_FACTOR controls an additional speed-dependent cooling parameter.

DEFAULT_BLANKING controls the default brake duct blanking level. 0 is fully open, higher values restrict airflow.

PERF_CURVE specifies a LUT file for the brake pad friction coefficient as a function of temperature. Different pad compounds can be modeled by using different LUT files.

[DISCS_GRAPHICS] 🔗

This section controls the visual representation of brake discs and their glow effect. It is not physics-relevant.

DISC_LF, DISC_RF, DISC_LR, DISC_RR specify the names of the 3D geometry objects used for each brake disc.

FRONT_MAX_GLOW and REAR_MAX_GLOW control the maximum glow intensity of the brake discs at high temperature.

LAG_HOT and LAG_COOL control the lag speed for the glow heating and cooling visual effects respectively.

suspensions.ini 🔗

suspensions.ini is the file which determines most parameters for the sprung and unsprung mass, placement of the wheels and suspension linkages, stiffness of the springs and dampers etc.

[HEADER] 🔗

VERSION controls the version of the suspensions that the engine will load. It does NOT represent the development version of the car. Acceptable inputs are 1 through 4, with 4 being preferred as it includes latest features. Recommended input is 4.

[_EXTENSION] 🔗

TORQUE_MODE_EX controls the version of internal force calculation used by Cphys. Acceptable inputs are 0 through 2.

0 produces vanilla behavior, while 2 is corrected behavior for DWB, ML and STRUT suspensions. 1 should not be used as it is a faulty implementation. Input 2 is recommended when using accurate suspension geometry

FIX_PROGRESSIVE_RATE is a fix for progressive spring rates via Cphys.

USE_DWB2 toggles various more comprehensive Cphys DWB suspension features on or off. Inputs are 0 for off, 1 for on.

DAMPER_LUTS toggles look-up table functionality for dampers with DWB2 and COSMIC. Inputs are 0 for off, 1 for on.

SEPARATE_BSH_GAPS controls whether the heave bumpstop gap is independent from PACKER_RANGE for DWB2. When 0 or not present, BUMPSTOP_GAP equals PACKER_RANGE. When 1, BUMPSTOP_GAP in [HEAVE_FRONT]/[HEAVE_REAR] is used independently. Inputs are 0 for off, 1 for on.

[BASIC] 🔗

WHEELBASE controls the longitudinal dimension between the front and rear axle. Input is in meters.

CG_LOCATION controls the distribution of the SPRUNG MASS over the wheels. It is NOT the total car CG. Input is percent, for example 50% = 0.50.

[ARB] 🔗

FRONT controls the WHEELRATE of the front ARB. Input is in N/m.

REAR controls the WHEELRATE of the rear ARB. Input is in N/m.

EXTEND controls Cphys functionality for the ARB. Inputs are 0 to 1. FRONT and REAR are SPRINGRATES when used with Cphys.

FRONT_MOTION_RATIO controls the motion ratio of the front ARB when used with Cphys. Input is in %, with 1.0 being 1:1. An MR of 1.0 may be used if wheelrates are to be retained as the input.

REAR_MOTION_RATIO controls the motion ratio of the rear ARB when used with Cphys. Input is in %, with 1.0 being 1:1. An MR of 1.0 may be used if wheelrates are to be retained as the input.

[FRONT] 🔗

TYPE controls the suspension type used. Acceptable inputs are DWB, STRUT and for the rear AXLE, ML may be used as well.

BASEY controls the sprung CG height. It can be thought of as the position the suspension connects to the chassis. A negative BASEY produces a positive CGH. The formula is RADIUS - BASEY. Bear in mind that the loaded tire radius should be used for accuracy. Input is in meters.

TRACK controls the lateral dimension between the left and right tire contact patch, when the camber angle is 0 degrees and the suspension is at design height. Input is in meters.

ROD_LENGTH controls the suspension height. A ROD_LENGHT value which matches up with the suspension travel value will result in the suspension loading in at the design height, or the height that the coordinate points for the arms are inputted in and all of the lines are referenced from. Suspension travel is the amount of static spring deflection for that wheel, from now on referred to as SUSTRVL. Input is in meters, with more negative being compression, from now on referred to as bump, and more positive being extension, from now on referred to as rebound.

HUB_MASS controls the mass of the unsprung portion for one wheel. With AXLE, it controls the portion for both wheels. Take care to include the actual unsprung distribution, as parts of the assembly are shared with the sprung mass, such as struts and driveshafts.

NOTE: STRUT suspension types convert per-corner 20% of HUB_MASS as a sprung mass, placed probably between STRUT_TYRE and STRUT_CAR. Additionally, 20% of original HUB_MASS per corner is added as sprung mass at the sprung CG. You must enter a higher HUB_MASS value for STRUT to attain intended values.

Example: 40kg per corner = 40 / 0.80 = 50 HUB_MASS.

Refer to Car Analyzer. Consider using COSMIC suspension type.

RIM_OFFSET controls the wheel offset. Effectively, it adds the amount to the X coordinates of the suspension linkages. Take care to adjust TRACK after adjusting RIM_OFFSET if the intention is to change wheels. Not required, but it simplifies suspension creation, as you can use one set of coordinates with multiple wheels.

TOE_OUT controls the setup toe angle. It is lateral displacement of the tie rod. Input is in meters. Currently not functional for AXLE. Consider using COSMIC suspension type.

STATIC_CAMBER controls the setup camber angle. Bear in mind that camber adjustment will not move TYRE suspension points, it simply pivots the wheel. Input is in degrees. Currently not functional for AXLE. Consider using COSMIC suspension type.

MOTION_RATIO specifies a motion ratio LUT for DWB2. The LUT maps wheel deflection from the zero-point to the instantaneous motion ratio. This replaces the kinematically-solved motion ratio. LUT format is deflection in meters vs ratio.

BUMP_STOP_LUT specifies a bumpstop force curve LUT for DWB2. The LUT format is deflection in meters vs force in N and must begin with 0|0. This is the legacy implementation; the current recommended approach uses bumpstops.ini.

SPRING_RATE controls the WHEELRATE of a single corner spring on that axle, with the value being shared for left and right. Input is in N/m.

NOTE: STRUT suspension types apply a pseudo-motion ratio to the SPRING_RATE, approximately equivalent to Actual Motion Ratio * SPRING_RATE. The motion ratio is kinematically solved. Actual SPRING_RATE can be checked via referring to SUSTRVL in apps.

Example: 0.90 * 20000 = 18000.

PROGRESSIVE_SPRING_RATE controls the progressive WHEELRATE. Input is in N/m/m. Can and commonly should be paired with SPRING_RATE.

BUMP_STOP_RATE controls the WHEELRATE of the PACKER_RANGE and BUMPSTOP_UP/DN. Bear in mind that STRUT and AXLE suspensions currently have a hardcoded 500000 N/m~ rate for the BUMPSTOP entries.

BUMP_STOP_PROGRESSIVE controls the progressive WHEELRATE of the PACKER_RANGE. Input is in N/m/m.

BUMPSTOP_UP controls the deflection on the wheel, referenced from design height, until impacting the bump rubber. It should commonly be placed farther than PACKER_RANGE. Input is in meters.

BUMPSTOP_DN controls the deflection on the wheel, referenced from design height, until impacting the rebound rubber. Input is in meters.

PACKER_RANGE controls the position of the packer (such as a plastic packer for racecars, or rubber bumpstop for roadcars) along the SUSTRVL wheel deflection.

The formula is SUSTRVL + intended gap to packer from the intended height. For example 0.100 + 0.030 = 0.130, resulting in a 30mm packer gap if your static spring deflection is 100mm. Input is in meters.

DAMP_BUMP controls the wheel damping rate for bump travel when the wheel is traveling slower than the DAMP_FAST_BUMPTHRESHOLD value. Input is in N/m/s.

DAMP_FAST_BUMP controls the wheel damping rate for bump travel when the wheel is traveling faster than the DAMP_FAST_BUMPTHRESHOLD value. Input is in N/m/s.

DAMP_FAST_BUMPTHRESHOLD controls the transition point, or knee for the bump damping to change from SLOW to FAST. Input is in m/s.

DAMP_REBOUND controls the wheel damping rate for rebound travel when the wheel is traveling slower than the DAMP_FAST_REBOUNDTHRESHOLD value. Input is in N/m/s.

DAMP_FAST_REBOUND controls the wheel damping rate for rebound travel when the wheel is traveling faster than the DAMP_FAST_REBOUNDTHRESHOLD value. Input is in N/m/s.

DAMP_FAST_REBOUNDPTHRESHOLD controls the transition point, or knee for the rebound damping to change from SLOW to FAST. Input is in m/s.

[REAR] 🔗

Same as above.

[HEAVE_FRONT] / [HEAVE_REAR] 🔗

CPHYS FEATURE — Requires USE_DWB2=1.

These sections configure the heave element (third spring/damper) for each axle.

MOTION_RATIO specifies a motion ratio LUT for the heave element. LUT format is deflection in meters vs ratio.

BUMP_STOP_LUT specifies a bumpstop force curve LUT for the heave element. LUT format is deflection in meters vs force in N, must begin with 0|0.

BUMPSTOP_GAP controls the gap to the heave bumpstop under static loading. Only used when SEPARATE_BSH_GAPS=1 is set in [_EXTENSION]. Input is in meters.

Location of suspension links are accomplished via an X, Y, Z coordinate system, referenced from the wheel center of one corner. For example 0.100, 0.050, -0.250.

The suspension coordinates are relative to the wheel center, meaning that a position of 0, 0, 0 would be positioned in the middle of the wheel. The suspension points should be built where they are when the car is sitting at its design height, which refers to the location when ROD_LENGTH equals SUSTRVL.

Positive values on X refer to positioning towards the car center, while negative values refer to positioning away from the car center.

Positive values on Y refer to positioning above the wheel center, while negative values refer to positioning below the wheel center.

Positive values on Z refer to positioning in front of the wheel center, while negative values refer to positioning behind the wheel center.

NOTE: AXLE suspension type references the points from the center of the axle instead of the wheel.

To start off, use the in-game suspensions app to analyze the positions of links and become comfortable with viewing assemblies. knSusEditor is also suitable for viewing DWB and STRUT suspensions. I will provide a list of the lines used for each suspension type. The order of the lines is not particularly important, but I suggest sticking to one standard format.

TYPE=STRUT
STRUT_CAR=
STRUT_TYRE=

WBCAR_BOTTOM_FRONT=
WBCAR_BOTTOM_REAR=
WBTYRE_BOTTOM=

WBCAR_STEER=
WBTYRE_STEER=

TYPE=DWB
WBCAR_TOP_FRONT=
WBCAR_TOP_REAR=

WBCAR_BOTTOM_FRONT=
WBCAR_BOTTOM_REAR=

WBTYRE_TOP=
WBTYRE_BOTTOM=

WBCAR_STEER=
WBTYRE_STEER=

TYPE=ML
JOINT0_CAR=
JOINT0_TYRE=

JOINT1_CAR=
JOINT1_TYRE=

JOINT2_CAR=
JOINT2_TYRE=

JOINT3_CAR=
JOINT3_TYRE=

JOINT4_CAR=
JOINT4_TYRE=

The named suspension coordinate points are described as follows. All inputs are X, Y, Z coordinates in meters.

For TYPE=STRUT:

STRUT_CAR is the car-side top mount attachment point of the strut.

STRUT_TYRE is the tyre-side bottom attachment point of the strut.

WBCAR_BOTTOM_FRONT is the front car-side attachment point of the lower wishbone or control arm.

WBCAR_BOTTOM_REAR is the rear car-side attachment point of the lower wishbone or control arm.

WBTYRE_BOTTOM is the tyre-side attachment point of the lower wishbone or control arm.

WBCAR_STEER is the car-side attachment point of the steering rod.

WBTYRE_STEER is the tyre-side attachment point of the steering rod.

For TYPE=DWB, all of the above apply for the lower arm, plus:

WBCAR_TOP_FRONT is the front car-side attachment point of the upper wishbone.

WBCAR_TOP_REAR is the rear car-side attachment point of the upper wishbone.

WBTYRE_TOP is the tyre-side attachment point of the upper wishbone.

WBTYRE_BOTTOM is the tyre-side attachment point of the lower wishbone.

[AXLE] 🔗

LINK_COUNT controls the amount of TOTAL suspension links used for AXLE suspensions. Due to high stiffness of suspension links, an input of 5 is not recommended and 4 should be used instead. 5 results in frequent, unintended binding of the suspension assembly.

TORQUE_REACTION controls the torque reaction of AXLE suspensions. NEEDS MORE DETAILED DOCUMENTATION.

ATTACH_REL_POS controls the motion ratio for the corner springs and dampers for AXLE suspensions. It causes a change in wheelrate when the suspension rolls. The formula is Length between links / TRACK. For example 1.500 / 2.400 = 0.625

LEAF_SPRING_LAT_K controls the lateral resistance springrate of the axle. Unsure if functional, unsure about input.

The suspension linkage inputs are as follows:

J0_CAR=
J0_AXLE=

J1_CAR=
J1_AXLE=

J2_CAR=
J2_AXLE=

J3_CAR=
J3_AXLE=

J4_CAR=
J4_AXLE=

Inputs may be excluded depending on LINK_COUNT input. For example excluding J4 if using LINK_COUNT=4.

[GRAPHICS_OFFSETS] 🔗

I shall copy the hints present in KS suspensions.ini files.

WHEEL_LF ;Left front graphical offset of the wheel positioning in the x axis (width). + is left - is right movement

SUSP_LF ;Left front graphical offset of the suspension positioning in the x axis (width). + is left - is right movement

As above for RF, LR and RR.

[DAMAGE] 🔗

MIN_VELOCITY controls the minimum impact velocity in km/h required to start taking suspension damage.

GAIN controls the amount of steering rod deflection per km/h of impact velocity above MIN_VELOCITY.

MAX_DAMAGE controls the maximum allowable steering rod deflection from damage. Input is in meters.

DEBUG_LOG toggles damage debug output in the log. Inputs are 0 for off, 1 for on.

COSMIC suspension type via Cphys offers more freedom for designing geometries.

https://github.com/ac-custom-shaders-patch/acc-extension-config/wiki/Cars-%E2%80%93-Cosmic-Suspension

TYPE=COSMIC 🔗

COSMIC is a Cphys suspension type that replaces the vanilla DWB, STRUT, ML and AXLE types with a fully user-defined multi-body constraint system. It uses named distance joints (DJ), ball joints (J0), slider joints, hinge joints, and auxiliary bodies to define suspension geometry from first principles. The standard [FRONT]/[REAR] parameters (BASEY, TRACK, HUB_MASS, RIM_OFFSET, TOE_OUT, STATIC_CAMBER) still apply. The vanilla spring/damper/bumpstop lines (SPRING_RATE, DAMP_BUMP, PACKER_RANGE etc.) are NOT used with COSMIC; instead, springs and dampers are defined as coilover, spring, and damper objects.

[ODE] (optional)

ERP controls the Error Reduction Parameter for the ODE solver. Higher values correct joint error more aggressively. The AC default is 0.9 for certain joint types, others (and the global value) default to 0.3. Tuning this can help with stability.

CFM controls the Constraint Force Mixing parameter for the ODE solver. The value is multiplied by 10^-7 internally. Higher values soften constraints, which can improve stability at the cost of accuracy.

Distance Joints (DJ)

DJ0 through DJX define named distance joints. Each joint constrains two bodies at specified attachment points, maintaining a fixed distance between them (like a rigid link). The naming is user-defined, for example DJ0=F_S13_LCA_FRONT.

DJX_BODY_A and DJX_BODY_B specify which bodies the joint connects. Built-in bodies include CHASSIS (the sprung mass), HUB_L (the left wheel hub/upright), and any user-defined BODY_X or CHASSIS_REAR_X bodies.

DJX_POS_A and DJX_POS_B specify the attachment point coordinates on each body. Input is X, Y, Z in meters.

DJX_POS_A_1, DJX_POS_A_2 etc. define alternative positions for setup adjustment. These can be selected in-game via DJX_POS_A_SETTING in setup.ini.

DJX_KP indicates that this joint’s POS_B + BODY_B coordinate/body combination defines a kingpin point for the steering axis. 0 marks the kingpin bottom (also applies to ball joints), 1 marks the kingpin top. The steering axis is determined by the line between these two points.

DJX_LENGTH_OFFSET adjusts the constrained distance of the joint by adding or subtracting length in meters. This is the primary mechanism for alignment adjustments (camber, toe, caster) in COSMIC suspensions and can be exposed in setup.ini.

DJX_PARITY controls whether the joint is mirrored. -1 mirrors left and right (default), 0 creates the joint on the left side only, 1 creates the joint on the right side only.

Ball Joints (J0)

J0 defines a named ball joint that constrains translation at a point while freely allowing rotation. Ball joints are used to connect rigid bodies together in a socket, for example a strut top mount.

J0_BODY_A and J0_BODY_B specify which bodies the ball joint connects. Default BODY_A is CHASSIS, default BODY_B is HUB_L.

J0_POS specifies the position of the ball joint. Input is X, Y, Z in meters relative to the wheel center (or use J0_CARPOS for car-frame coordinates).

J0_KP indicates a kingpin point for the steering axis, identical to DJX_KP. 0 marks the kingpin bottom, 1 marks the kingpin top.

J0_PARITY controls whether the joint is mirrored. -1 mirrors left and right (default), 0 left only, 1 right only.

Steering Joints

STEER_JOINT_0 defines the steering tie rod. It works like a DJ but is additionally displaced by the steering rack.

STEER_JOINT_0_BODY_A and STEER_JOINT_0_BODY_B specify the connected bodies.

STEER_JOINT_0_POS_A and STEER_JOINT_0_POS_B specify the attachment coordinates, and _1 variants define alternative positions for setup.

STEER_JOINT_0_LENGTH_OFFSET adjusts the tie rod length for toe alignment.

Auxiliary Bodies

BODY_X_NAME defines a named auxiliary rigid body (for example a strut body or subframe). Index starts at 0.

BODY_X_MASS controls the mass of the auxiliary body in kg.

BODY_X_INERTIA controls the inertia of the body. Input is X, Y, Z in kgm^2*.

BODY_X_POS controls the initial position of the body. Input is X, Y, Z in meters.

BODY_X_MIRROR controls whether the body is mirrored for the opposite side. 1 mirrors, 0 does not (used for bodies like a shared subframe that exists as one piece spanning both sides).

BODY_X_CARPOS positions the body relative to the car CG instead of the wheel center when used. Input is X, Y, Z in meters.

BODY_X_USE_FOR_ARB specifies that this body should be used as the reference for ARB calculation when set to 1. Useful when the ARB acts between a subframe body and the chassis rather than wheel and chassis.

Note: if you list the same name for BODY_A and BODY_B on any joint, spring, damper, or coilover, the code will connect the left and right side’s mirrored instances of that body. For example, for a heave spring connecting to a rocker on each side, set both BODY_A=ROCKER and BODY_B=ROCKER.

Chassis Split Bodies

CHASSIS_REAR_0 (via BODY_X_NAME) defines a rear chassis body that can articulate relative to the main CHASSIS. This allows modeling of chassis torsional flex.

Hinge Joints

HJ0 defines a named hinge joint that constrains rotation between two bodies to one degree of freedom about a single axis. Used for rocker arms, chassis flex, and any pivot connection.

HJ0_BODY_A and HJ0_BODY_B specify the connected bodies. Defaults are CHASSIS for BODY_A and HUB_L for BODY_B.

HJ0_POS_A and HJ0_POS_B define the hinge axis via two points in the wheel reference frame. Input is X, Y, Z in meters. The hinge axis direction is determined by the line between these two points.

HJ0_CARPOS_A and HJ0_CARPOS_B define the hinge axis via two points in the car reference frame (relative to car CG). Input is X, Y, Z in meters. Note: CARPOS for joints is relative to the reference frame of BODY_A.

HJ0_PARITY controls whether the joint is mirrored. -1 mirrors left and right (default), 0 left only, 1 right only.

Slider Joints

SLIDER_0 defines a named slider joint that constrains one body to translate along an axis relative to another (such as a strut sliding within its housing).

SLIDER_0_BODY_A and SLIDER_0_BODY_B specify the connected bodies.

SLIDER_0_AXIS directly specifies the slider axis direction as a vector. Input is X, Y, Z.

SLIDER_0_POS_A and SLIDER_0_POS_B define the slider axis via two points. If both AXIS and POS_A/POS_B are defined, the positions take precedence.

SLIDER_0_PARITY controls whether the joint is mirrored. -1 mirrors left and right (default), 0 left only, 1 right only.

Engine Torque Body

ENGINE_TORQUE_BODY specifies which body receives engine reaction torque. This allows torque to act on a subframe body rather than the main chassis.

[FRONT_COILOVER_0] / [REAR_COILOVER_0] 🔗

These sections define the corner spring and damper as a physical coilover unit for COSMIC suspensions. The _0 index refers to the first coilover; additional coilovers can be added by incrementing the index.

BODY_A and BODY_B specify the bodies the coilover connects.

POS_A and POS_B specify the attachment coordinates. The coilover acts along the axis between these two points, and the motion ratio is implicitly determined by the geometry.

RATE controls the spring rate of the coilover spring. Input is in N/m. This is the physical spring rate, not a wheelrate.

INSTALL_RATE controls the link stiffness (installation stiffness) of the coilover. A very high value (e.g. 16670000) makes the coilover effectively rigid in its mounting.

PRELOAD controls the spring preload as a displacement offset in meters. Negative values preload the spring in compression.

PRELOAD_FORCE controls the spring preload force in N.

PULL_FORCE toggles the coilover between push-type and pull-type operation. 0 for a normally-compressed (push) spring/damper, 1 for a pull spring/damper. Note that on coilovers, PULL_FORCE=1 flips the sign of the force. On simple springs, PULL_FORCE=1 pulls from both positive and negative deflection.

MIN_LENGTH controls the minimum compressed length of the coilover. Input is in meters.

MAX_LENGTH controls the maximum extended length of the coilover. Input is in meters.

BUMPSTOP_GAP controls the distance from the current coilover length to the bumpstop contact point, measured from the design length. Input is in meters.

END_RATE controls the spring rate of the hard stops at MIN_LENGTH and MAX_LENGTH. Input is in N/m.

END_VTAPER controls the velocity at which the end stop rate tapers off in rebound. Input is in m/s.

END_VMAX controls the velocity at which the end limit adds zero force in rebound. Together with END_VTAPER, this prevents energy trapping and bouncing after crash landings. Input is in m/s.

FLIP_PRELOAD flips the sign of the preload value from the setup menu. Useful when the setup UI needs to display “gap” instead of “preload” (i.e., the user increases the value to decrease preload). Acceptable inputs are 0 (default) and 1. Note: in CSP 0.1.79, this accidentally defaulted to 1.

HELPER_RATE controls the rate of a helper spring on the coilover. The helper spring acts in parallel with the main spring but only over a limited range of travel. Input is in N/m. Note: does not work with SPRING_LUT (the LUT acts in parallel with linear springs, not in series).

HELPER_TRAVEL controls the deflection distance at which the helper spring compresses fully. Input is in meters.

SPRING_LUT specifies an optional nonlinear spring force curve LUT as an alternative to the linear RATE. LUT format is displacement in meters vs force in N. Acts in parallel with any linear RATE.

BUMPSTOP_LUT specifies an optional bumpstop force curve LUT directly on the coilover. LUT format is deflection in meters vs force in N.

DAMP_BUMP controls the bump damping rate for simple (non-LUT) damping directly on the coilover. Input is in Ns/m*.

DAMP_REBOUND controls the rebound damping rate for simple damping. Input is in Ns/m*.

DAMP_FAST_BUMP controls the high-speed bump damping rate. Input is in Ns/m*.

DAMP_FAST_BUMPTHRESHOLD controls the velocity crossover from slow to fast bump damping. Input is in m/s.

DAMP_FAST_REBOUND controls the high-speed rebound damping rate. Input is in Ns/m*.

DAMP_FAST_REBOUNDTHRESHOLD controls the velocity crossover from slow to fast rebound damping. Input is in m/s.

Note: simple damping rates on coilovers are available in CSP 0.2+. For adjustable dampers, use dampers.ini LUTs instead. Only use simple rates for non-adjustable dampers.

PARITY controls whether the coilover is mirrored. -1 mirrors left and right (default), 0 left only (e.g. a single heave spring), 1 right only.

ELECT_LOG controls the logging identifier for the coilover in telemetry. Acceptable values are CORNER and HEAVE. Use this once per axle to designate which coilover’s travel should be logged as the corner or heave damper travel.

[FRONT_SPRING_0] / [REAR_SPRING_0] 🔗

These sections define simple standalone springs for COSMIC suspensions, separate from coilovers.

BODY_A and BODY_B specify the bodies the spring connects. Defaults are CHASSIS and HUB_L.

POS_A and POS_B specify the attachment coordinates. Input is X, Y, Z in meters.

RATE controls the spring rate. Input is in N/m.

INSTALL_RATE controls the installation stiffness of the spring. Input is in N/m.

SPRING_LUT specifies an optional nonlinear spring force curve LUT. LUT format is displacement in meters vs force in N.

BUMPSTOP_LUT specifies an optional bumpstop force curve LUT. LUT format is deflection in meters vs force in N.

BUMPSTOP_GAP controls the gap to the bumpstop. Input is in meters.

PULL_FORCE toggles pull-spring behavior. 0 for standard push spring, 1 for pull spring. On simple springs, PULL_FORCE=1 pulls from both positive and negative deflection (unlike coilovers where the sign is simply flipped).

[FRONT_TORSION_0] / [REAR_TORSION_0] 🔗

These sections define torsion springs acting on hinge joints, used for modeling chassis torsional stiffness between split chassis bodies.

RATE controls the torsional spring rate. Input is in Nm/deg.

HINGE specifies the name of the hinge joint that the torsion spring acts on.

PRELOAD_TORQUE controls the torque preload applied to the hinge. Input is in Nm.

PRELOAD controls the angular preload applied to the hinge. Input is in degrees. This is additive with PRELOAD_TORQUE.

PARITY controls the direction convention. -1 mirrors (default), 0 left only, 1 right only.

[FRONT_DAMPER_0] / [REAR_DAMPER_0] 🔗

These sections define standalone damper elements for COSMIC suspensions, separate from coilover damping.

BODY_A and BODY_B specify the connected bodies. Defaults are CHASSIS and HUB_L.

POS_A and POS_B specify the attachment coordinates. Input is X, Y, Z in meters.

DAMP_BUMP controls the slow-speed bump damping rate. Input is in Ns/m*.

DAMP_FAST_BUMP controls the high-speed bump damping rate. Input is in Ns/m*.

DAMP_FAST_BUMPTHRESHOLD controls the velocity crossover from slow to fast bump damping. Input is in m/s.

DAMP_REBOUND controls the slow-speed rebound damping rate. Input is in Ns/m*.

DAMP_FAST_REBOUND controls the high-speed rebound damping rate. Input is in Ns/m*.

DAMP_FAST_REBOUNDTHRESHOLD controls the velocity crossover from slow to fast rebound damping. Input is in m/s.

MIN_LENGTH controls the minimum compressed length of the damper. Input is in meters.

MAX_LENGTH controls the maximum extended length of the damper. Input is in meters.

END_RATE controls the spring rate of the hard stops at the travel limits. Input is in N/m.

END_VTAPER controls the velocity at which the end stop rate tapers off in rebound. Input is in m/s.

END_VMAX controls the velocity at which the end limit adds zero force in rebound. Input is in m/s.

PARITY controls whether the damper is mirrored. -1 mirrors (default), 0 left only, 1 right only.

bumpstops.ini 🔗

bumpstops.ini is a Cphys file that defines bumpstop force curves as LUTs, replacing the simplified BUMP_STOP_RATE and BUMP_STOP_PROGRESSIVE parameters. It supports both DWB2 and COSMIC suspension types.

[HEADER] 🔗

ENABLE enables the LUT-based bumpstop system. 1 for on, 0 for off.

DWB2 Format 🔗

For DWB2 suspensions, section names use [FRONT], [REAR], [FRONT_HEAVE], [REAR_HEAVE]:

[FRONT] / [REAR] 🔗

DEFAULT controls the default bumpstop configuration index.

STACK controls the number of bumpstop elements in the stack.

[FRONT_0] / [REAR_0] 🔗

LUT specifies the bumpstop force curve LUT file. LUT input is compression distance in meters and output is force in N. Must begin with 0|0.

Additional configurations are indexed as [FRONT_1], [FRONT_2] etc.

[FRONT_HEAVE] / [REAR_HEAVE] 🔗

Same parameters as [FRONT]/[REAR], for the heave bumpstop.

[FRONT_HEAVE_0] / [REAR_HEAVE_0] 🔗

LUT specifies the heave bumpstop force curve. Same format as corner bumpstops.

COSMIC Format 🔗

For COSMIC suspensions, section names use [FRONT_C0] for coilovers and [FRONT_0] for simple dampers, where the index matches suspensions.ini:

[FRONT_C0] / [REAR_C0] 🔗

DEFAULT controls the default bumpstop configuration index.

STACK controls the number of bumpstop elements in the stack. Multiple elements can be stacked by defining [FRONT_C0_0], [FRONT_C0_1] etc.

[FRONT_C0_0] / [REAR_C0_0] 🔗

LUT specifies the bumpstop force curve LUT file. LUT input is compression distance in meters and output is force in N.

dampers.ini 🔗

dampers.ini is a Cphys file that defines damper force curves as LUTs, replacing the simplified DAMP_BUMP/DAMP_REBOUND parameters with full velocity-force curves and multi-position adjustment. Supports both DWB2 and COSMIC suspension types.

[HEADER] 🔗

ENABLE enables the LUT-based damper system. 1 for on, 0 for off.

DWB2 Format 🔗

For DWB2 suspensions, section names use [FRONT] and [REAR]:

[FRONT] / [REAR] 🔗

Damper LUTs are specified with the naming pattern BUMP_SLOW_X and REBOUND_SLOW_X, where X is the damper click position (matching the setup adjustment range). You must at least define the first and last entries in the range; intermediate positions are linearly interpolated. SLOW entries do not extrapolate — ensure velocities cover the intended operating range (at least up to 5 m/s is suggested). LUT format is velocity in m/s vs force in N (sign does not matter).

BUMP_FAST_X and REBOUND_FAST_X specify optional high-speed damping LUTs. If present, the SLOW LUT handles low-speed damping and the FAST LUT handles high-speed, with crossover determined by the velocity range of each.

BUMP_SLOW_0=damp_bump_slowf_0.lut
BUMP_SLOW_4=damp_bump_slowf_4.lut
BUMP_SLOW_9=damp_bump_slowf_9.lut
REBOUND_SLOW_0=damp_reb_slowf_0.lut
REBOUND_SLOW_4=damp_reb_slowf_4.lut
REBOUND_SLOW_9=damp_reb_slowf_9.lut
BUMP_FAST_0=damp_bump_fastf_0.lut
REBOUND_FAST_0=damp_reb_fastf_0.lut

[FRONT_BLOWOFF] / [REAR_BLOWOFF] 🔗

Blowoff sections define the blowoff valve behavior for DWB2 dampers (not yet documented in detail).

COSMIC Format 🔗

For COSMIC suspensions, section names use [FRONT_C0] for coilovers and [FRONT_0] for simple dampers, where the index matches suspensions.ini:

[FRONT_C0] / [REAR_C0] 🔗

Same LUT naming as above (BUMP_SLOW_X, REBOUND_SLOW_X, BUMP_FAST_X, REBOUND_FAST_X).

BUMP_SLOW_0=dampers_front_bs_0.lut
BUMP_SLOW_9=dampers_front_bs_9.lut
BUMP_SLOW_17=dampers_front_bs_17.lut

REBOUND_SLOW_0=dampers_front_rs_0.lut
REBOUND_SLOW_9=dampers_front_rs_9.lut
REBOUND_SLOW_17=dampers_front_rs_17.lut

Intermediate click positions are interpolated between the defined LUTs. LUT input is velocity in m/s and output is force in N.

[FRONT_C0_BLOWOFF] / [REAR_C0_BLOWOFF] 🔗

Blowoff sections for COSMIC coilover dampers.

aero.ini 🔗

aero.ini is the file which defines the aerodynamic elements of the car. Each element is referred to as a wing regardless of whether it is a literal wing, the car body, a splitter etc. The car can have as many wing elements as necessary. The first is indexed 0, the second 1 etc.

[HEADER] 🔗

VERSION controls the version of the aero file that the engine will load. Acceptable inputs are 1, 2 and 3. VERSION=3 is required for Cphys aero features such as FIN elements and YAW_CL_GAIN. Recommended input is 3 when using Cphys.

[WING_0] 🔗

NAME is the display name of the wing element. Input is a string.

CHORD controls the chord length of the wing, which is the front-to-rear depth of the element. Together with SPAN, it determines the reference area used in aerodynamic force calculations. Input is in meters.

SPAN controls the span width of the wing element. Together with CHORD, it determines the reference area used in aerodynamic force calculations. Input is in meters.

POSITION controls the position of the wing element relative to the center of gravity. Input is X, Y, Z in meters.

LUT_AOA_CL specifies the look-up table file for the coefficient of lift as a function of angle of attack. Input is the filename of the LUT. LUT input is angle of attack in degrees and output is coefficient of lift.

LUT_GH_CL specifies an optional look-up table for a ride-height-based lift multiplier. Leave blank if not used.

CL_GAIN is a multiplier applied to the coefficient of lift. Used for fine tuning. A value of 0 disables lift for this element.

LUT_AOA_CD specifies the look-up table file for the coefficient of drag as a function of angle of attack. Input is the filename of the LUT. LUT input is angle of attack in degrees and output is coefficient of drag.

LUT_GH_CD specifies an optional look-up table for a ride-height-based drag multiplier. Leave blank if not used.

CD_GAIN is a multiplier applied to the coefficient of drag. Used for fine tuning. A value of 0 disables drag for this element.

ANGLE controls the default starting angle of the wing element in degrees.

The ZONE_X_CL and ZONE_X_CD parameters control how body damage affects the aerodynamic forces for this wing element. There are four damage zones: FRONT, REAR, LEFT and RIGHT. The formulas are:

CL = CL / (1.0 + ZONE_X_CL * DAMAGE)
CD = CD * (1.0 + ZONE_X_CD * DAMAGE)

Where DAMAGE is the damage level from 0 to 1. A value of 0 means the zone has no effect on that force component.

CPHYS AERO (VERSION=3)

YAW_CL_GAIN controls the change in lift coefficient as a function of yaw angle for a wing element via Cphys. This allows modeling of aerodynamic lift changes when the car is at a yaw angle (such as during cornering or drifting).

[FIN_0] 🔗

FIN elements are lateral aerodynamic surfaces available with VERSION=3 via Cphys. They generate side force and yaw-induced drag, modeling the lateral aerodynamic characteristics of the car body. They use the same parameters as WING elements (NAME, CHORD, SPAN, POSITION, LUT_AOA_CL, LUT_AOA_CD, CL_GAIN, CD_GAIN, ANGLE etc.), but the angle of attack is determined by the car’s yaw angle rather than pitch. Multiple FIN elements may be used by incrementing the index (FIN_0, FIN_1 etc.), typically split front and rear to model the lateral aerodynamic center.

[MAP_0] 🔗

CPHYS FEATURE — Full aero map implementation using 2D lookup tables. At least one [WING] element is still required for AC to load the aero system. Multiple maps can be defined by incrementing the index (MAP_0, MAP_1, etc.) and selected via setup.

NAME is the display name of the aero map.

MAP_CL_RH specifies a 2D LUT for CL*area as a function of front and rear ride heights. LUT format is a 2D table with front ride height on the x-axis and rear ride height on the y-axis, in meters.

MAP_CD_RH specifies a 2D LUT for CD*area as a function of ride heights. Same format as above.

MAP_BALANCE_RH specifies a 2D LUT for front:rear CL*area balance ratio as a function of ride heights.

MAP_YAW_CL, MAP_YAW_CD, MAP_YAW_BALANCE specify 1D LUTs for yaw angle effects. LUT input is yaw angle in degrees, output is multiplier (CL, CD) or addition (balance).

MAP_ROLL_CL, MAP_ROLL_CD, MAP_ROLL_BALANCE specify 1D LUTs for roll angle effects. Same format as yaw.

MAP_STEER_CL, MAP_STEER_CD, MAP_STEER_BALANCE specify 1D LUTs for steering angle effects. LUT input is average steering angle at wheels in degrees.

MAP_SPEED_CL, MAP_SPEED_CD, MAP_SPEED_BALANCE specify 1D LUTs for speed effects. LUT input is speed in kph.

FRONT_RH_OFFSET and REAR_RH_OFFSET add a static ride height offset to the 2D LUT lookup input. Input is in meters.

CL_MULT and CD_MULT are global multipliers on CL and CD output.

BALANCE_OFFSET controls a static offset to the aerodynamic balance. Input is a ratio (percentage / 100).

INTERPOLATION controls the 2D LUT interpolation method. Acceptable inputs are LINEAR and CUBIC.

DRAG_OFFSET controls the position offset of the drag force application point. Input is two values: left/right offset, up/down offset, in meters.

FRONT_FORCE_DELAY, REAR_FORCE_DELAY, DRAG_FORCE_DELAY control the first-order lag filters for force application. Higher numbers mean less lag (faster response). Input is in seconds.

The 2D LUT files use a tab/space-separated table format. X-axis values (front ride height) must ascend left to right, y-axis values (rear ride height) must ascend top to bottom.

[FAN_0] 🔗

CPHYS FEATURE — Aero fan implementation for active downforce systems (e.g. Chaparral 2J fan car).

NAME is the display name.

MAP_FORCE_RH specifies a 2D LUT for force produced as a function of ride heights.

MAP_BALANCE_RH specifies a 2D LUT for front balance as a function of ride heights. Output is a ratio (percentage / 100).

MAP_SPEED_FORCE specifies a 1D LUT for speed-dependent force multiplier. LUT input is speed in kph.

MAP_SPEED_BALANCE specifies a 1D LUT for speed-dependent balance offset. LUT input is speed in kph.

FRONT_RH_OFFSET and REAR_RH_OFFSET add static ride height offsets. Input is in meters.

FORCE_MULT is a global force multiplier.

BALANCE_OFFSET controls a static balance offset. Input is a ratio (percentage / 100).

INTERPOLATION controls the 2D LUT interpolation method. Acceptable inputs are LINEAR and CUBIC.

[DYNAMIC_CONTROLLER_0] 🔗

CPHYS FEATURE — Dynamic aero controllers allow wing parameters to be driven by various inputs.

WING specifies the index of the wing element this controller affects.

COMBINATOR controls how the controller value combines with the base value. Acceptable inputs are ADD and MULT.

INPUT specifies the controller input signal. Standard AC inputs apply, plus Cphys adds HEADLIGHTS (0 when off, 1 when on).

LUT specifies the transfer function LUT (input value vs output value). Inline LUTs are supported.

FILTER controls the first-order filter time constant for smoothing. Input is in seconds.

UP_LIMIT and DOWN_LIMIT control the upper and lower limits of the controller output.

tyres.ini 🔗

Tyres.ini is the file which controls parameters for the load and slip characteristics, stiffness, damping, resistances, heating etc. of the tire. Assetto Corsa uses a semi-empiric tire model, meaning that you as the physics creator must input parameters and pre-determined look-up tables and the model will generate behavior from them. You do not however directly input physical characteristics like dimensions of the sidewall, or softness of the rubber or whatever such as in some other tire models. However there is a large degree of interactivity within the tire behavior and complex situations can be generated from relatively few inputs resulting in relatively high telemetry correlation of car behavior.

[HEADER] 🔗

VERSION controls the tire model version that the engine will load. Multiple inputs are available, but the current relevant one is 10. The suggested input is 10.

[_EXTENSION] 🔗

CPHYS FEATURE

PRACTICAL_TEMP_RATIO controls the ratio used for practical temperature calculation from surface and carcass temperatures. Input is a ratio from 0 to 1.

USE_NEW_RR_SLIP toggles a newer rolling resistance slip calculation via Cphys. Acceptable inputs are 0 and 1.

LATERAL_RAYS controls the number of lateral contact patch rays used for tyre ground interaction via Cphys. Higher values increase fidelity but cost performance.

LONGITUDINAL_RAYS controls the number of longitudinal contact patch rays used for tyre ground interaction via Cphys. Higher values increase fidelity but cost performance.

SMOOTH_LOAD_SENS controls the load sensitivity interpolation mode via Cphys. 1 uses cubic (default), 0 uses linear.

ENABLE_RAY_FORCE_WEIGHTING toggles the use of DY and DX to influence the weighting of contact patch rays via Cphys. This may improve lateral and longitudinal force position accuracy but reduce vertical accuracy. Acceptable inputs are 0 and 1.

[THERMAL_MODEL] 🔗

CPHYS FEATURE

VERSION controls the thermal model version via Cphys. VERSION=2 enables the extended thermal model with carcass layer simulation, using the [THERMAL2_FRONT] and [THERMAL2_REAR] sections.

[VIRTUALKM] 🔗

USE_LOAD toggles load effects for virtual kilometers, which is a function of tire slip distance. It is used for wear effects namely. Acceptable inputs are 0 and 1. The suggested input is 1.

[EXPLOSION] 🔗

TEMPERATURE controls the tire popping temperature of the tire. Input is in celsius.

[ADDITIONAL1] 🔗

BLANKETS_TEMP controls the initial core temperature of the tire when entering the session. For street cars that do not use tyre blankets, this represents the average core temperature after driving to the track. Input is in celsius.

[COMPOUND_DEFAULT] 🔗

INDEX controls the default tire that is loaded in the setup. The first tire set is entry 0, while the second is 1 etc. Bear in mind that currently, default pressure for the tire is loaded only from index 0 regardless of what is selected.

[FRONT] 🔗

Add _X for every further compound.

Example: FRONT_1 for the 2nd tire set in the index.

NAME controls the display name of the tire in setup. Uppercase and lowercase letters may be used alongside numbers, but some special symbols may not display correctly.

SHORT_NAME controls the display name of the tire in the leaderboard, and is also used for some automatically generated behavior with Cphys. Standard inputs are SV, ST, SM, S and such. It is currently recommended to use standard inputs if possible so that auto-guessed Cphys rain behavior will work correctly.

TYPE_HINT specifies the tyre type explicitly for Cphys weather behavior, replacing the name-guessing system. Without this, Cphys defaults to SLICK, which can make cars extra slippery in rain. Acceptable values are: TREADED (regular street tyres), VINTAGE_PERFORMANCE (older sporty tyres), RACING_TREADED (racing tyres that channel water but poor on gravel), SLICK (slick tyres, terrible on wet), SEMISLICK (some wet difficulties), RAIN (actual rain tyres — if present, Cphys will not auto-generate rain tyres), GRAVEL (offroad tyres, activates SurfacesFX), ICE (studded tyres).

TYPE_HINT_MODIFIER provides an optional modifier for certain TYPE_HINT values. For GRAVEL: RALLY1 enables modern aggressive rally tyres. For ICE: RALLY enables more aggressive studs. ICE also supports additional parameters: _SFX_ICE_FORCE_MULT_K (base grip multiplier on ice, default 0.4), _SFX_ICE_DAMP_MULT_K (grip multiplier on snow, default 1.4), _SFX_ICE_BASE_SIZE (load threshold in kg, default 1400), _SFX_ICE_BASE_STIFF (grip stabilization coefficient, default 0.0005).

WIDTH controls the width of the skid decal of the tire. It does not control any physical characteristics. When in doubt, input the section width. Input is in meters.

RADIUS controls the UNLOADED tire radius at nominal inflation. Bear in mind that real tires may differ from the theoretical spec. Input is in meters.

RIM_RADIUS controls the collision radius for the simulated wheel for use with ground collision. Input is in meters.

ANGULAR_INERTIA controls the rotational inertia for the tire + wheel + brake disc assembly, and any other rotating unsprung mass. Input is in kg*m^2.

DAMP controls the damping rate of the tire at nominal load and inflation. Input is in N/m/s.

RATE controls the vertical springrate of the tire at nominal load and at the inflation pressure specified in PRESSURE_STATIC. If you change your PRESSURE_STATIC but wish to maintain the same springrate, adjust RATE while respecting PRESSURE_SPRING_GAIN. Input is in N/m.

DY0, DY1, DX0 and DX1 are outdated load sensitivity values used in old tire models. They are necessary to be included for the tire to load properly, but are unused in the current suggested version.

WEAR_CURVE specifies the look-up table to be used for wear characteristics. The format is vkm | grip percent, in whole numbers. The LUT must be included in the data folder.

Example: tire_example_wear.lut

Example LUT format:

0 |100
30 |90

SPEED_SENSITIVITY controls the mechanical and chemical speed sensitivity of the tire. Higher means lower grip with more slip velocity.

Recommended value is 0 due to issues.

force/(speed_sensitivity * ((sin(slip_angle_rad) * m/s)^2+(cos(slip_angle_rad) * m/s * slip_ratio)^2)^(0.5) + 1.0)

OR

1/( total tire slip in m/s * speed_sensitivity + 1)

RELAXATION_LENGTH controls the relaxation length input used by the complex interaction of the tire model. The input is in meters.

ROLLING_RESISTANCE_0 is the constant parameter used in RR calculations.

ROLLING_RESISTANCE_1 is the squared velocity parameter used in RR calculations.

pgain=1+(PRESSURE_IDEAL / current_pressure - 1) * PRESSURE_RR_GAIN
RR=(ROLLING_RESISTANCE_0 + ROLLING_RESISTANCE_1 * V^2) * pgain

Divide by 1000.

Load Curve Helper has a solver.

ROLLING_RESISTANCE_SLIP controls rolling resistance gain from tire slip. Consider using lower than standard values.

FLEX is an outdated tire profile flex input. Must be included for the suggested tire version to load, but is otherwise unused.

CAMBER_GAIN controls the amount of camber thrust. It is a slip angle shift from camber angle.

CAMBER_GAIN * sin(camber)

DCAMBER_0 is the first parameter used by formula based camber sensitivity.

DCAMBER_1 is the second parameter used by formula based camber sensitivity.

1 / (1 + camberRAD*DCAMBER_0 - camberRAD^2 * DCAMBER_1)

Where camberRAD refers to the absolute value of the camber angle in radians.

DCAMBER_LUT specifies the LUT used for LUT based camber sensitivity.

Example: tire_example_camber.lut.

Lut input is angle in degrees and output is grip in percent, such as 1.05 = 105%.

DCAMBER_LUT_SMOOTH toggles smoothing for DCAMBER_LUT on or off, with 0 being off and 1 being on.

FRICTION_LIMIT_ANGLE controls the peak lateral slip angle at nominal values to attain maximum grip. It interacts with many parameters such as load and should be built for the FZ0 you have chosen. Input is in degrees.

XMU is an outdated friction parameter. Must be included for the suggested tire version to load, but is otherwise unused.

PRESSURE_STATIC controls the nominal cold pressure of the tire. Actual cold pressure will vary based on temperature conditions. RATE is referenced from this pressure. Input is in psi.

PRESSURE_SPRING_GAIN controls the springrate gain of the tire from the PRESSURE_STATIC value for every one psi. Value is in N/m.

PRESSURE_FLEX_GAIN controls the flex gain of the tire from the PRESSURE_IDEAL value for every one psi.

PRESSURE_RR_GAIN controls the RR gain of the tire from the PRESSURE_IDEAL value for every one psi.

PRESSURE_D_GAIN controls the grip loss for every one psi under and above PRESSURE_IDEAL. For example a value of 0.004 means a loss of 0.4% DY and DX for every one psi deviating from optimal pressure.

PRESSURE_IDEAL controls the optimal pressure for grip and is referenced by many lines. The input is in psi.

FZ0 is the reference load for much of the tire behavior, and the load where values are referenced from. Avoid very low or high values. Tire behavior is relatively nonlinear, so data attained at a load of 1000N might not apply at all at a load of 10000N. The input is in Newtons.

LS_EXPY is a lateral load sensitivity exponential parameter used by formula based load sensitivity.

LS_EXPX is a longitudinal load sensitivity exponential parameter used by formula based load sensitivity.

DX_REF is the reference mu for the longitudinal load sensitivity formula, referenced from the FZ0 value.

DY_REF is the reference mu for the lateral load sensitivity formula, referenced from the FZ0 value.

DY_CURVE specifies the LUT used by LUT based lateral load sensitivity. Take care to include high enough loads and consider having the last six points be the same mu so that extrapolation does not change the mu unfavourably in high-load incidents. The LUT input is vertical load in N and the output is mu.

DX_CURVE is the same as above, except for longitudinal load sensitivity.

FLEX_GAIN is a parameter in the contact patch flex equations. It is additive to the slip angle. The author is unaware of the specific formula(s) used by the engine. An approximation would be that FLEX_GAIN gets added to FRICTION_LIMIT_ANGLE when load is 2*FZ0, however this is not completely truthful. The log outputs relevant information for determining the practical effects.

FALLOFF_LEVEL controls the grip the tire will produce when slipping at infinite SR. In vanilla, the falloff curve is shared between lateral and longitudinal. It is input in percent, such as 0.70 = 70%.

FALLOFF_SPEED controls the speed of grip dropoff after peak slip angle. A higher value means more dropoff.

CX_MULT controls the optimal slipratio longitudinally.

tan(slip_angle_opt) / CX_MULT.

RADIUS_ANGULAR_K is an input in the formula for tire radius growth in millimeters from angular speed.

RADIUS_ANGULAR_K * angularVelocity in rad/s

BRAKE_DX_MOD controls how much more longitudinal grip the tire has in braking compared to acceleration. Formula is (1+BRAKE_DX_MOD)*D. For example, a value of 0.02 will provide +2% D when braking, and a value of -0.02 will provide -2% D when braking.

COMBINED_FACTOR controls the combined lateral + longitudinal slip grip gain. A value of 2.0 is standard ie: traction circle, while values above 2.0 will square it out, providing more grip in combined situations.

CPHYS COMPOUND PARAMETERS

CAMBER_SPRING_MULT specifies a LUT file that controls how the tyre spring rate is modified by camber angle via Cphys. LUT input is camber angle and output is spring rate multiplier.

DCAMBER_LUT_SMOOTH toggles smoothing for DCAMBER_LUT on or off, with 0 being off and 1 being on.

DX_CAMBER_REF controls the reference camber angle for longitudinal camber sensitivity via Cphys. Input is in degrees.

DX_CAMBER_MULT controls the longitudinal grip multiplier at the reference camber angle specified in DX_CAMBER_REF via Cphys.

COMBINED_FACTOR_1 controls an additional combined slip factor via Cphys. It works alongside COMBINED_FACTOR.

COMBINED_FACTOR_BRAKE_MULT controls a multiplier on the combined factor specifically during braking via Cphys.

COMBINED_FACTOR_LOAD_K controls a load-dependent modifier to the combined factor via Cphys.

FALLOFF_LEVEL_CURVE specifies a LUT file that controls the falloff level as a function of tyre temperature via Cphys. When used, this replaces the static FALLOFF_LEVEL value. LUT input is temperature and output is falloff level.

FALLOFF_SPEED_CURVE specifies a LUT file that controls the falloff speed as a function of tyre temperature via Cphys. When used, this replaces the static FALLOFF_SPEED value. LUT input is temperature and output is falloff speed.

DROPOFF_FACTOR_0 controls the first parameter for grip dropoff behavior beyond peak slip via Cphys.

DROPOFF_FACTOR_1 controls the second parameter for grip dropoff behavior beyond peak slip via Cphys.

FALLOFF_YSPEED_MULT controls a multiplier on lateral speed influence on falloff via Cphys.

SAT_MULT controls the self-aligning torque multiplier via Cphys.

SAT_SPEED controls the self-aligning torque speed sensitivity via Cphys.

SAT_PEAK_K controls the self-aligning torque peak coefficient via Cphys.

SAT_MULT_K controls the self-aligning torque multiplier coefficient via Cphys.

SAT_MIN_REF controls the minimum self-aligning torque reference via Cphys.

SAT_LOAD_K controls the self-aligning torque load sensitivity coefficient via Cphys.

SIDEWALL_K_MULT controls the sidewall stiffness multiplier for lateral force compliance via Cphys.

SIDEWALL_K_MULT_X controls the sidewall stiffness multiplier for longitudinal force compliance via Cphys.

RADIUS_ANGULAR_K_2 is a secondary input in the formula for tire radius growth from angular speed via Cphys. It provides a second-order correction alongside RADIUS_ANGULAR_K.

ROLLING_RADIUS_MULT controls a multiplier on the effective rolling radius behavior via Cphys.

[REAR] 🔗

Same as above.

[THERMAL_FRONT] 🔗

Add _X for every further compound.

Example: THERMAL_FRONT_1 for the 2nd tire set in the index.

SURFACE_TRANSFER controls how quickly external heat sources (primarily road surface friction) heat the tyre tread. Acceptable inputs are 0 to 1. Higher values mean faster heat pickup from the road.

PATCH_TRANSFER controls how quickly heat transfers between different locations across the tyre contact patch. Acceptable inputs are 0 to 1.

CORE_TRANSFER controls the rate of bidirectional heat transfer between the tyre carcass and the inner air. Acceptable inputs are 0 to 1.

INTERNAL_CORE_TRANSFER controls an internal heat transfer rate within the tyre structure.

FRICTION_K controls how much of the energy from tyre slip is converted into heat. Higher values make the tyre heat up faster from sliding.

ROLLING_K controls how much heat is generated from rolling resistance.

PERFORMANCE_CURVE specifies the look-up table file that defines the grip multiplier as a function of tyre temperature. LUT input is temperature and output is grip multiplier.

GRAIN_GAMMA controls the gamma exponent for the graining vs slip curve. Higher values make graining more strongly influenced by slip.

GRAIN_GAIN controls the rate at which graining develops from slip and temperature difference. A value of 100 means slipangle * (1 + grain%) grip effect.

BLISTER_GAMMA controls the gamma exponent for the blistering vs slip curve. Higher values make blistering more strongly influenced by slip.

BLISTER_GAIN controls the rate at which blistering develops from slip and temperature difference. Think of blistering as accumulated heat cycle damage; a value of 100 corresponds to approximately 20% grip loss.

COOL_FACTOR controls the rate at which the tyre cools. Higher values produce faster cooling.

SURFACE_ROLLING_K controls the rolling resistance contribution to surface heating.

[THERMAL_REAR] 🔗

Same as above.

[THERMAL2_FRONT] 🔗

CPHYS FEATURE — Requires [THERMAL_MODEL] VERSION=2.

Add _X for every further compound.

Example: THERMAL2_FRONT_1 for the 2nd tire set in the index.

CARCASS_ROLLING_K controls the heat generated in the carcass layer from rolling resistance.

SURFACE_TO_AMBIENT controls the rate of heat transfer from the tyre surface to the ambient air.

SURFACE_TO_CARCASS controls the rate of heat transfer from the tyre surface to the carcass layer.

CARCASS_TO_SURFACE controls the rate of heat transfer from the carcass layer back to the surface.

CARCASS_TO_CORE controls the rate of heat transfer from the carcass layer to the inner core (air cavity).

CORE_TO_CARCASS controls the rate of heat transfer from the inner core back to the carcass layer.

CORE_TO_AMBIENT controls the rate of heat transfer from the inner core to the ambient air.

BRAKE_TO_CORE controls the rate of heat transfer from the brake assembly to the tyre inner core.

FRICTION_TEMP_K controls the friction-to-temperature conversion coefficient for the extended thermal model.

[THERMAL2_REAR] 🔗

Same as above.

drivetrain.ini 🔗

Drivetrain.ini is the file which controls parameters for the transmission and differential.

[HEADER] 🔗

VERSION controls the version of the drivetrain that the engine will load. It does NOT represent the development version of the car. Acceptable inputs are 1 through 3, with 3 being preferred as it includes latest features. Recommended input is 3.

[TRACTION] 🔗

TYPE controls the driveline type. Acceptable inputs are RWD, FWD, AWD, AWD2.

[GEARS] 🔗

COUNT controls the amount of gears used. Maximum amount unknown.

GEAR_R controls the gear ratio for the reverse gear with any possible overdrive, but without final gear. Input example: -3.382

GEAR_1 through GEAR_X control the gear ratios for forward driving gears with any possible overdrive, but without final gear. Input example: 3.321

FINAL controls the final gear ratio. Input example: 4.363

[DIFFERENTIAL] 🔗

POWER controls the maximum lock % for the limited-slip differential in the acceleration direction. Inputs are in %, so that 50% = 0.50.

COAST controls the maximum lock % for the limited-slip differential in the deceleration direction. Inputs are in %, so that 50% = 0.50.

Note: 1.0 in both POWER and COAST is an exception for a welded or spool-type differential where the wheels are coupled directly together with no differential action. Use an input such as 0.999 for a 100% clutchplate differential. Bear in mind also that real-world open differentials typically have some effective lock %, perhaps from 3 to 10% depending on friction ie: more when turning.

PRELOAD controls the amount of differential preload. Input is in Nm.

CPHYS RAMP DIFFERENTIAL

RAMP_POWER controls the ramp angle for the acceleration direction in a ramp-type (Salisbury/cam and pawl) LSD via Cphys. Input is in degrees.

RAMP_COAST controls the ramp angle for the deceleration direction via Cphys. Input is in degrees.

RAMP_LOCK_LUT specifies a LUT file that maps ramp angle to lock percentage via Cphys. LUT input is ramp angle in degrees and output is lock percent. When used, POWER and COAST are ignored and the lock is determined by this LUT based on RAMP_POWER and RAMP_COAST.

[AWD] 🔗

FRONT_SHARE controls the AWD front mechanical split in full % values. For example 50% = 50. Acceptable inputs are 0 to 100.

FRONT_DIFF_POWER same as POWER but for AWD type. FRONT_DIFF_COAST same as COAST but for AWD type. FRONT_DIFF_PRELOAD same as PRELOAD but for AWD type.

CENTRE_DIFF_POWER same as POWER but for AWD type. CENTRE_DIFF_COAST same as COAST but for AWD type. CENTRE_DIFF_PRELOAD same as PRELOAD but for AWD type.

REAR_DIFF_POWER same as POWER but for AWD type. REAR_DIFF_COAST same as COAST but for AWD type. REAR_DIFF_PRELOAD same as PRELOAD but for AWD type.

[AWD2] 🔗

FRONT_DIFF_POWER same as POWER but for AWD2 type. FRONT_DIFF_COAST same as COAST but for AWD2 type. FRONT_DIFF_PRELOAD same as PRELOAD but for AWD2 type.

CENTRE_RAMP_TORQUE controls ramp-up torque for Viscous center differential. Unit is Nm per rad/s of differential speed between front and rear axle.

CENTRE_MAX_TORQUE controls maximum torque for Viscous center differential. Input is in Nm, at the wheels after gearing.

REAR_DIFF_POWER same as POWER but for AWD2 type. REAR_DIFF_COAST same as COAST but for AWD2 type. REAR_DIFF_PRELOAD same as PRELOAD but for AWD2 type.

Bear in mind that AWD2 is only capable of 0/100 to 50/50 split, but not FWD biased.

  • ctrl_single_lock.ini may be used to control RWD/FWD preload.
  • ctrl_awd.ini may be used to control AWD center preload.
  • ctrl_awd2.ini may be used to control AWD2 center preload.

CPHYS FEATURES

[DIFFERENTIAL] 🔗

VISCOUS_FACTOR_1 is a parameter used in viscous differential calculation via Cphys since CSP version 0.1.73.

VISCOUS_FACTOR_2 is a parameter used in viscous differential calculation via Cphys since CSP version 0.1.73.

VISCOUS_FACTOR_EXP_K is a parameter used in viscous differential calculation via Cphys since CSP version 0.1.73.

VISCOUS_FACTOR_EXP is a parameter used in viscous differential calculation via Cphys since CSP version 0.1.73.

Formula:

viscousTorque = (VISCOUS_FACTOR_1*SPEED_DIFFERENCE_RAD+VISCOUS_FACTOR_2*SPEED_DIFFERENCE_RAD^2+(VISCOUS_FACTOR_EXP_K-VISCOUS_FACTOR_EXP_K/EXP(VISCOUS_FACTOR_EXP*SPEED_DIFFERENCE_RAD)))

Output is in rad/s | Nm.

Note: Viscous coupling effect can and should be overlaid with a weak mechanical coupling effect in typical assemblies from the open differential inside.

Refer to Car Analyzer for a visual grapher tool to solve Viscous Coupling torques with.

[GEARBOX] 🔗

CHANGE_UP_TIME controls the time taken to complete an upshift. Input is in milliseconds.

CHANGE_DN_TIME controls the time taken to complete a downshift. Input is in milliseconds.

AUTO_CUTOFF_TIME controls the automatic ignition cut duration during upshifts. Input is in milliseconds. Set to 0 to disable.

SUPPORTS_SHIFTER controls whether the car supports an H-pattern shifter peripheral. 1 enables shifter support, 0 limits the car to paddle shifters only.

VALID_SHIFT_RPM_WINDOW controls the RPM window around the exact rev-match point within which a gear engage is permitted. Input is in RPM.

CONTROLS_WINDOW_GAIN controls the sensitivity of clutch, throttle and brake pedal inputs for permitting gear engagement at different rev-match conditions. Lower values make it more difficult to engage gears without precise rev matching.

INERTIA controls the rotational inertia of the gearbox. Defaults to 0.02 if not set. Input is in kg·m².

[CLUTCH] 🔗

MAX_TORQUE controls the maximum torque capacity of the clutch. Input is in Nm.

[AUTOCLUTCH] 🔗

UPSHIFT_PROFILE specifies the name of the autoclutch timing profile to use during upshifts. Set to NONE to disable the autoclutch on upshifts.

DOWNSHIFT_PROFILE specifies the name of the autoclutch timing profile to use during downshifts. Set to NONE to disable.

USE_ON_CHANGES controls whether the autoclutch operates during gear changes even when the autoclutch assist is disabled by the user. 1 enables this behavior, which is required for semi-automatic gearboxes. 0 disables it.

MIN_RPM controls the minimum RPM at which the autoclutch engages. Input is in RPM.

MAX_RPM controls the maximum RPM at which the autoclutch engages. Input is in RPM.

FORCED_ON forces the autoclutch to always be active regardless of user settings when set to 1.

[UPSHIFT_PROFILE] / [DOWNSHIFT_PROFILE] 🔗

These sections define the clutch travel timing curve for automatic clutch operation during shifts. The three points define a three-phase sequence:

POINT_0 is the time in milliseconds to reach a fully depressed clutch from the start of the shift.

POINT_1 is the time in milliseconds at which the clutch begins to release.

POINT_2 is the time in milliseconds at which the clutch is fully released.

[AUTOBLIP] 🔗

ELECTRONIC controls whether the autoblip is a feature of the car hardware and cannot be disabled by the user. 1 makes it always active, 0 makes it a user-toggleable assist.

POINT_0 is the time in milliseconds to reach the full blip throttle level.

POINT_1 is the time in milliseconds at which the blip throttle begins to release.

POINT_2 is the time in milliseconds at which the blip throttle reaches zero.

LEVEL controls the throttle level reached at the peak of the blip. Input is in percent, for example 0.8 = 80% throttle.

[DAMAGE] 🔗

RPM_WINDOW_K controls the gearbox damage sensitivity related to RPM mismatch during shifts. Higher values increase the rate of damage from poorly matched shifts.

[AUTO_SHIFTER] 🔗

UP controls the RPM at which the automatic gearshift system upshifts. Input is in RPM.

DOWN controls the RPM at which the automatic gearshift system downshifts. Input is in RPM.

SLIP_THRESHOLD controls the slip ratio threshold below which automatic shifts are permitted. Prevents shifting during wheelspin.

GAS_CUTOFF_TIME controls the duration of the throttle cut during automatic upshifts. Input is in seconds.

[DOWNSHIFT_PROTECTION] 🔗

This section provides automatic downshift protection to prevent money-shifts (accidental over-rev from downshifting too early).

ACTIVE enables downshift protection when set to 1. 0 disables it.

DEBUG enables debug logging for downshift protection when set to 1.

OVERREV controls the RPM margin above the limiter that is allowed before a downshift is blocked. Input is in RPM.

LOCK_N controls whether shifting into neutral is also blocked when downshift protection is active. 1 blocks neutral, 0 allows it.

electronics.ini 🔗

electronics.ini controls the active electronic driver aids present in the car: ABS, traction control, and electronic differential lock.

[ABS] 🔗

SLIP_RATIO_LIMIT controls the wheel slip ratio limit at which ABS engages to reduce brake pressure. Input is a ratio, for example 0.10.

CURVE specifies an optional look-up table file defining different slip ratio limits for multiple ABS levels. Leave blank for a single level defined by SLIP_RATIO_LIMIT. Levels are toggled with Ctrl+A in-game.

PRESENT controls whether ABS hardware is present in the car. 1 means ABS is fitted, 0 means it is not. Note that ABS will still function as an assist if enabled by the user in the realism menu regardless of this setting.

ACTIVE controls whether ABS starts active when the car loads. 1 starts active, 0 starts inactive. Only relevant if PRESENT=1. Toggled with Ctrl+A in-game.

RATE_HZ controls the ABS pulse frequency. The actual ABS pump refresh rate of the real car should be used rather than the ECU or sensor frequency. Input is in Hz.

[ABS_V2] 🔗

ABS_V2 is a Cphys replacement for the [ABS] section that provides improved ABS behavior. It uses the same parameters as [ABS] (SLIP_RATIO_LIMIT, CURVE, PRESENT, ACTIVE, RATE_HZ), plus:

CHANNELS controls the number of ABS channels. 2 for a 2-channel (front/rear) system, 4 for a 4-channel (per-wheel) system.

[ABS_EXT] 🔗

CPHYS FEATURE — Available from CSP 0.2.8. Enables a programmable variable-gain PID controller ABS system. Must be used alongside [ABS] or [ABS_V2], which still defines the baseline slip ratio target. It is recommended to research PID tuning before experimenting with this system.

ENABLE enables the CSP ABS extension system. 1 for on, 0 for off.

DEBUG enables debug logging to the CSP Logger for all ABS channels. Do not enable this in release builds — it logs many channels at maximum rate. 1 for on, 0 for off.

USE_WHEEL_SPEED_SLIP switches the slip ratio input to use ECU wheel speeds instead of true slip ratio. Not yet implemented; use 0.

RESPONSE_TIME controls the 95% response time of the first-order filter applied to ABS output. This is a very important parameter that controls the overall aggressiveness of the system. Do not set this unrealistically low. Input is in seconds.

INTEGRAL_ERROR_LIM clamps the integral controller’s accumulated error to prevent windup. Format is min,max. Without clamping, the system can develop undershoot situations. Example: -0.01,10000.

The ABS extension uses four families of controllers, each with an indexed naming pattern (e.g. [ABS_TARGET_CONTROLLER_0], [ABS_TARGET_CONTROLLER_1] etc.). All controllers share a common set of parameters:

LUT specifies the transfer function. Input is the controller’s input signal value, output is the controller’s contribution. Inline LUT format is supported (e.g. LUT=(0=0|0.05=1)).

INPUT specifies the input signal. Available inputs are: GAS (0–1 pedal), THROTTLE (0–1 engine output), BRAKE (0–1 pedal), BRAKE_PRESSURE (psi per wheel), LATG (G), LONG (G), SPEEDKMH, GEAR, STEER (deg at handwheel), WHEEL_ACCEL (rad/s²), ABS_SETTING, SLIP_RATIO, ABS_SLIP_RATIO (ABS-estimated SR), ABS_TARGET_SLIP (net target SR), ABS_SLIP_DIFF_TARGET (SR minus target), ABS_SLIP_DIFF_LAT (SR minus opposite side, 2-wheel), ABS_SLIP_DIFF_LONG (SR minus opposite axle side, 2-wheel), ABS_SLIP_DIFF_SIDE (SR minus opposite side, 4-wheel), ABS_SLIP_DIFF_AXLE (SR minus opposite axle side, 4-wheel), ABS_SLIP_DIFF_RATIO (SR divided by target), YAW_RATE (deg/s), YAW_RATE_ACCEL (deg/s²), RPM. Use NONE for constant-input controllers.

COMBINATOR controls how this controller’s output combines with previous controllers of the same type. ADD for the first controller of each type (all default to 0), MULT to multiply subsequent controllers.

FILTER_TIME_CONSTANT applies a first-order filter to the controller output, modeling real-world signal filtering. Input is time constant in seconds. Useful for noisy inputs like G forces or derivative signals.

ENABLED_WHEELS restricts the controller to specific wheels. Format is four values (FL, FR, RL, RR), 1 to enable and 0 to disable. Example: 0,0,1,1 for rear wheels only.

FLIP_RHS flips the sign of the input value for the right-hand side of the car, enabling opposite effects on each side. 1 to enable, 0 to disable (default).

[ABS_TARGET_CONTROLLER_X] — These controllers modify the slip ratio target of the ABS system. The baseline target from [ABS]/[ABS_V2] is the starting value; these modulate on top of it. Output values are applied as multipliers or additions to the slip target.

[ABS_GAIN_CONTROLLER_X] — “Constant” gain controllers output an intervention amount from 0 (no ABS intervention) to 1 (full brake release). These are the most intuitive but least stable controller type. They do not use the slip error as the main control parameter — they can respond to any available input. The first controller in this family must use COMBINATOR=ADD.

[ABS_PROPORTIONAL_GAIN_CONTROLLER_X] — Proportional controllers multiply the ABS slip error (ABS_SLIP_DIFF) by the gain value from the LUT. Net output = gain * ABS_SLIP_DIFF. They are quite similar in effect to constant gain controllers but scale with slip error magnitude.

[ABS_INTEGRAL_GAIN_CONTROLLER_X] — Integral controllers integrate the ABS slip error over time and multiply by the gain. Net output = gain * clampedIntegral(ABS_SLIP_DIFF). They eliminate steady-state error but can cause overshoot with high gains.

[ABS_DERIVATIVE_GAIN_CONTROLLER_X] — Derivative controllers multiply the rate of change of the ABS slip error by the gain. Net output = gain * derivative(ABS_SLIP_DIFF). They dampen system response and reduce oscillation. A FILTER_TIME_CONSTANT should generally be applied to model real-world derivative filtering.

Note: RATE_HZ in [ABS] is deprecated as of CSP 0.2.8 but should be kept at 333 for backwards compatibility.

[TRACTION_CONTROL] 🔗

SLIP_RATIO_LIMIT controls the wheel slip ratio limit at which TC engages to reduce power. Input is a ratio, for example 0.12.

CURVE specifies an optional look-up table file defining different slip ratio limits for multiple TC levels. Leave blank for a single level defined by SLIP_RATIO_LIMIT. Levels are toggled with Ctrl+T in-game.

PRESENT controls whether TC hardware is present in the car. 1 means TC is fitted, 0 means it is not. Note that TC will still function as an assist if enabled by the user regardless of this setting.

ACTIVE controls whether TC starts active when the car loads. 1 starts active, 0 starts inactive. Only relevant if PRESENT=1. Toggled with Ctrl+T in-game.

RATE_HZ controls the TC intervention frequency. The actual TC pump refresh rate of the real car should be used. Input is in Hz.

MIN_SPEED_KMH controls the minimum speed below which TC is automatically disabled, even if selected by the user. Input is in km/h.

[EDL] 🔗

The EDL (Electronic Differential Lock) section controls a brake-based torque vectoring system that applies brake torque to the faster-spinning driven wheel to redistribute torque.

PRESENT controls whether EDL is present in the car. 1 if fitted, 0 if not.

ACTIVE controls whether EDL starts active when the car loads. 1 starts active, 0 starts inactive.

MAX_SPIN_POWER controls the wheel speed ratio threshold that triggers brake torque application under power. 0 means no difference, 1 means the fast wheel is spinning at twice the speed of the slow wheel.

MAX_SPIN_COAST controls the same threshold under coasting conditions.

BRAKE_TORQUE_POWER controls the brake torque in Nm applied to the faster-spinning wheel under power.

BRAKE_TORQUE_COAST controls the brake torque in Nm applied to the faster-spinning wheel under coasting.

DEAD_ZONE_POWER controls the dead zone for the brake torque ramp under power. No torque is applied until the spin difference exceeds this value.

DEAD_ZONE_COAST controls the dead zone for the brake torque ramp under coasting.

engine.ini 🔗

[HEADER] 🔗

VERSION controls the version of the engine that the engine will load. It does NOT represent the development version of the car. Acceptable input is 1.

POWER_CURVE controls the TORQUE look-up table file loaded. Units are revolutions per minute and torque in Nm, at the wheels after drivetrain loss.

Example: engine_example.lut.

Example LUT:

0|100
1000|125
2000|150

COAST_CURVE controls the coast torque method. Recommended input is FROM_COAST_REF.

CPHYS HEADER

POWER_CURVE_STANDARD controls the power correction standard used for the torque curve via Cphys. The engine will correct torque values from the specified standard to simulated ambient conditions. Acceptable inputs are: 0 = AC (no correction), 1 = SAE J1349, 2 = SAE J1995, 3 = SAE J607, 4 = DIN 70020.

HUMIDITY_REF overrides the reference humidity used by the power correction standard. Input is in percent. Set to 0 to use the standard’s default humidity.

[ENGINE_DATA] 🔗

ALTITUDE_SENSITIVITY controls altitude sensitivity of the engine. Non-functional in vanilla. Default value is 0.1.

INERTIA controls moment of inertia of the engine. Typical value is 0.100 - 0.200. Input is in kgm^2*.

LIMITER controls the engine limiter RPM. Setting an RPM of 0 will remove the limiter.

LIMITER_HZ controls the frequency of power cut when hitting LIMITER. Input is in Hz.

MINIMUM controls idle RPM. A negative value (e.g. -9000) disables the built-in idle controller, which is useful when idle control is handled via a Lua script.

DEFAULT_TURBO_ADJUSTMENT controls default pressure amount when using adjustable turbos. Example: 0.5 = 50% boost.

[COAST_REF] 🔗

RPM controls reference RPM for coasting torque.

TORQUE controls coasting torque at reference RPM. Input is in Nm.

NON_LINEARITY controls the shape of the coast torque curve from zero RPM up to the reference RPM. A value of 0 produces a linear ramp from zero torque to the TORQUE value. A value of 1 produces a fully exponential curve. Input is in the range 0 to 1.

[TURBO_0] 🔗

Can have multiple. First in index is 0, second is 1 etc.

LAG_DN controls the filtering amount for turbo lag when spooling down. 1.0 being fully filtered, 0.0 being unfiltered. Typical values are over 0.980 - 0.990, lag increases dramatically for every 0.01 when nearing 1.0.

LAG_UP same as above for spooling up.

MAX_BOOST controls the maximum theoretical boost pressure.

WASTEGATE controls the maximum allowed boost pressure. It is not the real-world wastegate spring pressure or anything similar, but a practical max pressure.

Refer to car physics app to troubleshoot in-game boost pressure.

Formula: T*(1.0 + boost). When pressure is 1.0, torque is 2.0.

Example: 100*(1.0 + 1.0) = 200.

DISPLAY_MAX_BOOST is the boost pressure considered to be maximum by display apps.

REFERENCE_RPM controls the theoretical earliest RPM where MAX_BOOST can be attained, at full throttle with no lag.

GAMMA controls the gamma function used for the turbo pressure buildup under REFERENCE_RPM.

COCKPIT_ADJUSTABLE toggles in-cockpit pressure adjustability, with 0 for off and 1 for on.

Useful resource for building engines: https://acstuff.ru/u/torque-helper/ by Ilja Jusupov.

[COAST_DATA] 🔗

COAST0, COAST1 and COAST are unused legacy lines which must be included to load the engine.ini.

[COAST_CURVE] 🔗

FILENAME controls the LUT used for coasting torque curve. Input may be invalid without an existing file. Commonly coast.lut. Unsure if functional. Needed to load engine.ini.

[THROTTLE_RESPONSE] 🔗

RPM_REFERENCE controls RPM where LUT curve is in effect.

LUT controls LUT curve used by 2D throttle map. Linear interpolation between throttle.lut and LUT is done until RPM_REFERENCE. Refer to log for table.

Example: throttle2.lut.

LUT example:

0|0
50|50
100|100

NOTE: throttle.lut controls first throttle curve and is required. Throttle.lut may also be used alone without [THROTTLE_RESPONSE] section. Input is %|% in full values.

LUT example:

0|0
50|75
100|100

[THROTTLE_LUA] 🔗

This section configures throttle behavior via a Cphys Lua-based throttle system, replacing or supplementing the [THROTTLE_RESPONSE] and throttle.lut system.

THROTTLE_GAMMA controls the gamma curve applied to throttle pedal input. Higher values make the throttle more progressive. Defaults to 1.1 if not specified.

THROTTLE_SLOPE controls the slope steepness of the throttle curve. Defaults to 2.5 if not specified.

IDLE_RPM controls the target idle RPM for the Lua idle controller. Defaults to 1000 if not specified.

THROTTLE_TYPE controls the type of throttle linkage modeled. 0 for cable throttle, 1 for drive-by-wire. Defaults to 0 if not specified.

[DAMAGE] 🔗

TURBO_BOOST_THRESHOLD controls amount of boost before engine takes damage. Example: 1.10

TURBO_DAMAGE_K controls damage per second when over TURBO_BOOST_THRESHOLD. Depends on (boost - threshold).

Example: 5

RPM_THRESHOLD controls RPM before engine takes damage.

Example: 9000

RPM_DAMAGE_K controls engine damage per second.

Example: 1

For specific help with development, feel free to ask in the AC Custom Shaders Discord’s mod-talk section.

setup.ini 🔗

setup.ini controls which parameters are exposed to the driver in the in-game setup menu, and their ranges and step sizes. Each adjustable item is defined as a named section. Parameters not present in this file will not appear in the setup menu and cannot be adjusted in-game.

[DISPLAY_METHOD] 🔗

SHOW_CLICKS controls whether setup values are displayed as click counts (1) or as raw values (0). This is a global setting for the entire setup menu.

[GEARS] 🔗

USE_GEARSET controls the type of gear ratio setup available. 0 exposes individual gear ratio sliders. 1 provides predefined gearset selections from .rto files.

Setup item sections 🔗

Each adjustable setup parameter is defined as a section named after the parameter it controls, for example [SPRING_RATE_LF] or [ARB_FRONT]. The standard parameters available include suspension spring rates, ride heights, ARBs, dampers, toe, camber, tyre pressures, fuel load, brake bias, brake power, differential settings, and final gear ratio.

Within each section the following keys are used:

TAB controls which tab in the setup menu the item appears under. Standard tab names are TYRES, ALIGNMENT, SUSPENSION, DAMPERS, DRIVETRAIN and GENERIC. Custom tab names are allowed — any string that does not match a standard name creates a new tab with that label.

NAME controls the display label shown for the item in the setup menu.

MIN controls the minimum allowable value. Units depend on the parameter being controlled.

MAX controls the maximum allowable value.

STEP controls the increment size per click of adjustment.

DEFAULT controls the default value loaded when the setup is reset. Input is the raw value (not click index). Used in place of the vanilla approach of deriving default from car ini values.

LUT specifies a LUT file as an alternative to MIN/MAX/STEP. The LUT format is display_name|value or display_name|index, depending on the parameter. When LUT is used, MIN/MAX/STEP are not needed. Particularly useful for named options (e.g. spring rate selections by name).

SHOW_CLICKS controls whether this specific item displays as a click count (1) or as a raw value (0), overriding the global [DISPLAY_METHOD] setting if present. When using Cphys options, use SHOW_CLICKS=0.

POS_X and POS_Y control the grid position of the item within its tab. POS_X=0 places the item on the left column, POS_X=1 on the right, and POS_X=0.5 centers it. POS_Y controls the vertical row position.

HELP specifies the help text identifier displayed when hovering over the item.

DISPLAY_VALUE_IN_BRACKETS toggles whether the current value is displayed in brackets next to the item name in the setup window. 1 to enable, 0 to disable (default). Used with Cphys extended items like [ARB_F]/[ARB_R] and [SPRING_LF] etc.

EXTEND enables the Cphys extended ARB system for [ARB_F]/[ARB_R] items. Must be 1 for Cphys ARBs where FRONT/REAR values in [ARB] are spring rates rather than wheel rates.

RATIOS specifies the .rto file to use for gearset selection when USE_GEARSET=1 under [GEARS].

COSMIC suspension section naming 🔗

For COSMIC suspensions, section names use the joint name and corner suffix instead of vanilla names:

  • [DJX_LENGTH_OFFSET_LF] / _RF / _LR / _RR — adjust the length offset of a distance joint per corner. The index X matches the joint index in suspensions.ini. Input is in 0.1mm units (i.e. STEP=1 means 0.1mm per click). Used for camber, caster, toe adjustments.
  • [STEER_JOINT_0_LENGTH_OFFSET_LF] etc. — adjust tie rod length per corner for toe.
  • [DJX_POS_A_SETTING_LF] / [STEER_JOINT_0_POS_A_SETTING_LF] etc. — select alternative geometry coordinate sets defined in suspensions.ini (via DJX_POS_A_1, _2 etc.). Can use LUT for named options or MIN/MAX/STEP for indexed. Use DEFAULT to set the default geometry index.
  • [SPRING_RATE_LF_C0] / _RF_C0 etc. — spring rate for coilover C0 per corner. The C prefix and index must match the suspensions.ini coilover index.
  • [SPRING_PRELOAD_LF_C0] etc. — spring preload for coilover per corner. Input is in 0.1mm units.
  • [DAMPER_BUMP_LF_C0] / [DAMPER_REBOUND_LF_C0] etc. — bump and rebound damper settings for coilover C0 per corner. The index now matches the suspensions.ini coilover index (e.g. if a PARITY=0 damper is at index 1, LF_1 exists but RF_1 does not). Use DEFAULT for the default damper click position.
  • [BUMPSTOP_LF_C0] / [BUMPSTOP_GAP_LF_C0] / [BUMPSTOP_NUM_LF_C0] — bumpstop selection, gap, and stack count per coilover corner.
  • [DIFF_RAMP_POWER] / [DIFF_RAMP_COAST] / [DIFF_PRELOAD_EXT] — ramp differential setup items for Cphys ramp diffs.

[GEAR_SET_X] 🔗

CPHYS FEATURE — Predefined gearbox ratio compilations selectable in-game. Requires USE_GEARSET=1 in [GEARS]. Multiple gear sets can be defined by incrementing the index (GEAR_SET_0, GEAR_SET_1, etc.).

NAME controls the display name of the gear set in the setup menu.

GEAR_1 through GEAR_6 (or more) specify the individual gear ratios. A ratio of 0.000 disables that gear.

[BRAKE_DUCT_F] / [BRAKE_DUCT_R] 🔗

CPHYS FEATURE — Exposes front and rear brake duct blanking (airflow restriction) as setup adjustments. Requires the Cphys advanced brake thermal system.

Uses standard setup keys (TAB, NAME, MIN, MAX, STEP, POS_X, POS_Y, HELP). MIN=0 is fully open, MAX=100 is fully blocked. STEP=10 is a typical increment.

[BRAKE_MC_F] / [BRAKE_MC_R] 🔗

CPHYS FEATURE — Exposes master cylinder diameter selection for front and rear as a setup item. Requires MASTER_CYL_DIA_X entries in brakes.ini [FRONT]/[REAR].

LUT specifies the LUT file mapping display name to master cylinder index (not size). Format: display_label|index. The index corresponds to MASTER_CYL_DIA_X in brakes.ini.

Uses standard setup keys. HELP may include text about the effect of master cylinder size on pedal effort.

[AEROMAP] 🔗

CPHYS FEATURE — Exposes aero map selection as a setup item. Requires [MAP_X] sections in aero.ini.

LUT specifies the LUT file mapping display name to aero map index. Format: display_name|aeromap_index.

DEFAULT controls the default aero map index loaded. Maps not selected are automatically switched off.

Uses standard setup keys (TAB, NAME, POS_X, POS_Y, HELP).

[POWER_STEERING_SETTING] 🔗

CPHYS FEATURE — Exposes power steering assist map selection as a setup item. Requires ASSIST_MAP_X entries in car.ini [CONTROLS].

Uses standard setup keys. MIN should always be 0. MAX is the maximum assist map index defined in car.ini. DEFAULT selects the default map. HELP should note that Real-Feel must be enabled in CSP settings for power steering to function.