TYRES by Bristow
This is the tbc file for the BMW Sauber F1 2006. TBC files are text files and may be viewed and edited in any decent text editor or even Notepad.
I have added comments about new or uprated statement lines which have been found in tbc files released since the '06 BMW F1, and they are placed where they appear in the files concerned.
The original is shown in regular text. My comments are in bold.
Top of File
// Tire brand found in *.hdv files refer to file name.
"//" symbols are used to delimit comments in the original file and in other physics files. All characters after // and before the next Carriage Return are ignored by the game
// Slip curves do not represent the coefficient of grip. Instead they represent
// the reaction to the current slip. Regardless of the peak value in this curve,
// it will be automatically normalized to have a peak of 1.0.
// The peak of the slip curve is dynamically adjusted to higher or lower slip
// values based on current load and speed. The second value of "SpeedEffects"
// is an equivalency value for load and speed. To calculate the slip peak, we
// use the following input which is a combination of load and speed:
// <load/speed combination> = <load> + (<speed> * <equivalency>)
// Obviously a larger equivalency value will make speed a more dominant factor
// in the calculation of the peak. See the SpeedEffects, LatPeak, and
// LongPeak tire parameters for more info.
// Slip curve data points are connected using a cubic spline, so there is no
// need to use a massive amount of data points unless the curve is really busy.
// Lateral slip angles are normalized so that you need to take the sine of the
// angle to get the slip. For example, 12 degrees is a slip of 0.208 and vice
// versa. Longitudinal slip ratios closely match the SAE definition.
// All curves should probably go out to at least a slip of 2.0, even the lateral
// and braking curves. Although locking up your brakes is a slip of 1.0, there
// are situations where you can spin your wheels in the opposite direction of
// your velocity (like shifting into reverse while moving forwards).
// Note that the initial slope of the curve may have an effect on how some
// features behave, such as traction control, ABS, skids, and tire smoke.
// The "DropoffFunction" is a new feature (new in rF) in the [SLIPCURVE] section. It
// describes how the slip curve dropoff is affected when the peak of the
// slip curve changes. The peak of the slip curve may move to a smaller
// or larger slip when load or speed changes. When this happens, the
// slip curve is stretched or shrunk to match. The DropoffFunction parameter
// allows you to affect the behavior beyond the peak when this happens:
// -1.0 = dropoff occurs faster when peak increases
// 0.0 = dropoff curve does NOT change shape when the peak changes
// 1.0 = dropoff curve is stretched or shrunk with the rest of the curve,
// which means the dropoff may feel more gradual as the peak increases.
// This is the default.
[SLIPCURVE]
Name="LatSlip"
Note that the name of the curve is enclosed in double-quotes/inverted commas/rabbit's ears, and the same applies further down where the curve is called for use.
Step=0.009000 // Slip step
DropoffFunction=-0.10 // See explanation above
Data:
0.000000 0.174836 0.349483 0.518060 0.668882 0.790665 0.878928 0.936783 0.971287 0.989751
0.997978 1.000000 0.999632 0.998538 0.996690 0.994069 0.990622 0.986566 0.982162 0.977223
0.972191 0.967169 0.962158 0.957368 0.952395 0.947268 0.942100 0.937138 0.932347 0.927646
0.923216 0.918857 0.914620 0.909990 0.905347 0.900211 0.894754 0.888562 0.881919 0.874943
0.867751 0.860449 0.853111 0.845815 0.838611 0.831522 0.824611 0.817849 0.811257 0.804850
0.798539 0.792387 0.786377 0.780673 0.775277 0.770211 0.765415 0.760879 0.756604 0.752550
0.748670 0.744944 0.741404 0.737984 0.734717 0.731545 0.728464 0.725526 0.722667 0.719902
0.717246 0.714664 0.712174 0.709790 0.707439 0.705187 0.703003 0.700892 0.698841 0.696828
0.694901 0.693027 0.691223 0.689478 0.687770 0.686107 0.684496 0.682947 0.681417 0.679925
0.678489 0.677069 0.675672 0.674308 0.672985 0.671663 0.670389 0.669153 0.667905 0.666712
0.665554 0.664420 0.663300 0.662203 0.661157 0.660122 0.659088 0.658104 0.657138 0.656191
0.655272 0.654370 0.653475 0.652626 0.651793 0.650965 0.650161 0.649373 0.648597 0.647836
0.647068 0.646312 0.645579 0.644848 0.644128 0.643430 0.642753 0.642067 0.641411 0.640745
0.640110 0.639464 0.638837 0.638220 0.637611 0.637022 0.636430 0.635857 0.635295 0.634733
0.634179 0.633635 0.633100 0.632573 0.632055 0.631545 0.631044 0.630550 0.630065 0.629587
0.629116 0.628654 0.628198 0.627749 0.627307 0.626873 0.626445 0.626023 0.625608 0.625199
0.624797 0.624401 0.624011 0.623626 0.623248 0.622876 0.622509 0.622147 0.621792 0.621441
0.621096 0.620756 0.620422 0.620092 0.619768 0.619448 0.619133 0.618823 0.618518 0.618218
0.617922 0.617631 0.617344 0.617061 0.616783 0.616511 0.616241 0.615976 0.615716 0.615459
0.615206 0.614958 0.614714 0.614474 0.614237 0.614005 0.613776 0.613552 0.613330 0.613114
0.612900 0.612690 0.612484 0.612282 0.612082 0.611887 0.611695 0.611507 0.611322 0.611141
0.610963 0.610788 0.610617 0.610449 0.610281 0.610118 0.609957 0.609799 0.609647 0.609496
0.609346 0.609199 0.609051 0.608909 0.608766 0.608626 0.608491 0.608363 0.608238 0.608115
0.608000 0.607887 0.607788 0.607697 0.607612 0.607534 0.607500
The strings of numbers above is a sequence of values that go to make a column in a table. In the tbc file they are arranged in 23 lines of 10 values, plus another seven values. The Slip Step is used to increment the value that each number is when matched up with in the table so you get something like this -
The first column is the step number. The second is the step value and the third is the slip value. There will be further posts in this thread which discusses slip curves in more detail.
-----1----------0--------------0.000000
-----2----------0.009----------0.174836
-----3----------0.018----------0.349483
-----4----------0.027----------0.518060
-----5----------0.036----------0.668882
-----6----------0.045----------0.790665
-----7----------0.054----------0.878928
-----8----------0.063----------0.936783
-----9----------0.072----------0.971287
----10----------0.081----------0.989751
and so on going down to 237 values. Plot that with the slip value on the Y axis and you get a chart like those in post #9 and following.
rF can handle multiple examples of these tables of slip values and this example file has three, each one having a separate name. They are called by the LatCurve, BrakingCurve and TractiveCurve statements in each of the compound types below.
These tables describe the type of behaviour of the tire as the the forces build up to and beyond the breakaway point where gripping gives way to sliding. Since forces and the response of the tire to them may not be equal in all directions, it could be quite useful to employ three curves.
[SLIPCURVE]
Name="AccelSlip"
Step=0.009000 // Slip step
DropoffFunction=0.8 // See explanation above
Data:
Table removed for clarity
[SLIPCURVE]
Name="DecelSlip"
Step=0.009000 // Slip step
DropoffFunction=0.0 // See explanation above
Data:
Table removed for clarity
// Note that the dry and wet performance numbers are NOT relative.
// They will still be scaled by the terrain dry/wet values in terrain.tdf.
// For example, if normal pavement has the scaling parameters dry=1.0 and wet=0.8,
// and a rain tire has scaling parameters of dry=1.30 and wet=1.35,
// then the overall grip in the dry will be (1.0 * 1.30) = 1.30,
// while the overall grip in the wet will be (0.8 * 1.35) = 1.08.
// FYI - we may add "Compound" to each name in order to translate it,
// because these names are not necessarily unique to tire compounds.
[COMPOUND]
At the time of writing rF did not support wet weather, so there is no requirement for wet compounds with defined names. Compound names in rF are free. The only requirement I know of is that they are unique within the file. Compounds are called from the hdv by number, with the first compound in the file being zero.
Name="Super Soft"
Note that the name of the compound is enclosed in double-quotes/inverted commas/rabbit's ears. Compounds are called from the hdv by number starting from 0 (zero). The name is displayed in the garage without the quotes. Names without quotes still work.
FRONT: // Arguments: ALL, FRONT, REAR, LEFT, RIGHT, FRONTLEFT, FRONTRIGHT, REARLEFT, REARRIGHT
Defines to which tyre position(s) the following parameters apply. All possible combinations are available.
DryLatLong=(2.2687702619, 2.3799400047) // Lateral/longitudinal coefficients in dry weather
Maximum Coefficients of Friction (CoF) for this compound on dry pavement in the lateral and longitudinal directions. Note that in simple terms, grip is coeficient times vertical load on the tyre.
Formula tires supplied by ISI have tires have about 5% more longitudinal than lateral grip while the longitudinal grip coefficient of other car types are about the same as their lateral grip coefficient.
rF does not use width to recalculate grip or apportion it between front and rear. Any actual differences in static no-load grip between front and back tyres are input directly as Dry or Wet Lat values in each compound. Please note that the LoadSens parameter further down defines the change in grip with load on the tyres and can play a part in managing actual grip levels.
WetLatLong=(0.920, 0.932) // Lateral/longitudinal coefficients in wet weather
I guess this is a placemaker since there is no current support for wet tracks.
Radius=0.327 // Radius of tire
Outside rolling radius, stationary. Feeds into the distance the car travels per 1000 rpm, so contributes to overall gearing and hence possibly top speed. Also defines the size of the tire on the car as seen on-screen. If the car floats in the air or has part of the tyres underground then there is a mismatch between the size of the tyres in this file and the size defined in the graphics.
RadiusRPM=1.722e-6 // Increased radius per unit RPM
How fast the radius grows with rotational speed of the wheel.
Width=0.340 // Width of tire
Used as input to the width of skid marks. No effect on grip.
Rim=(0.166, 750000.0, 7500.0, 3.0) // Rim radius, spring rate, damper rate, minimum velocity to produce sparks
Defines the wheel rim size and the physical characteristics as a sprung damped body. Presumably used to model what happens when a tire comes off a wheel - say after a blowout or other catastrophic failure. Velocity is in m/s.
This line is not compulsory and appears in only some of the ISI tire files.
SpringBase=50460.0 // Base spring rate with no pressure
SpringkPa=1200.00 // Spring rate per unit pressure
Defines how springy the tire is and relates to elasticity and deformation of the tyre under load. Analogous to load bearing capacity as it relates to tire heating. Does not affect grip. First parameter is the springyness of the carcass of the tire at zero inflation and the second is the springyness of the air inside which increases with inflation. The total value is the sum of the two.
The total of SpringBase plus SpringKpa * tire pressure may be several times larger than the base. For a typical F1 front tire, the inflation contribution is 160,000 while the base is 50,500, which is about 3.1:1.
This springiness is a measure of the tire's load-bearing capacity and is expressed in N/m. It also has an effect on the calculations about generation of heat, as a tire with low springyness for the load on it will compress and flex more and so get hotter at the same settings for heating and dissipation.
Low springyness will also reduce the rolling rotation of the tyre due to compression, affecting the overall gearing - the tyre runs a bit flat.
The ratio of SpringBase to SpringkPa affects the way in which the tire responds to changes in pressure. Please also see AirTreadRate.
This tyre is compressed by about 5.6mm by the weight of the car.
Damper=521.4 // Damping rate of tire
It was during the 60's that people discovered that tires with high hysteresis had more grip than tires with low hysteresis, particularly in the wet. Hysteresis is the amount of internal absorption of energy when a tire is flexed. So I presume that high values of damper translate into increased rolling resistance and to build up of heat. Todays road tire technology permits high hysteresis with low rolling resistance.
SpeedEffects=(267.5, 18.5) // Speed at which grip drops to half (m/s, 0.0 to disable), speed load equivalency (see above)
Described in the preamble at the beginning of the file. Permits management of the relative importance of load and speed on grip
The first parameter effects grip as follows. If the speed across the ground is equal to the first parameter, then the grip is halved compared with grip at zero speed. At 2:1, grip is reduced to 1/3rd, at 3:1, it is reduced to 1/4, and so on. At slower speeds, the grip is reduced to 3/4 at a speed of 1/3rd of the first parameter. Obviously, as speed increases, grip eventually approaches zero..
LoadSensLat=( -3.88e-6, 0.365, 23350) // Load sensitivity for lateral grip (initial slope, final grip multiplier, final load)
LoadSensLong=(-3.86e-6, 0.435, 23350) // Load sensitivity for longitudinal grip (initial slope, final grip multiplier, final load)
Defines the effect of vertical load on tyre grip.
rF permits differing LoadSens values to be applied to lateral and to longitudinal forces. A simpler version is supported as an alternative, in which case there is a single line like -
LoadSens=( -3.88e-6, 0.365, 23350) // Load sensitivity for lateral grip (initial slope, final grip multiplier, final load)
Load sensitivity is a multiplying factor from 0.0 to 1.0 to be applied to the grip defined in DryLatLong and the like. At zero load, the multiplier is assumed to be 1.0. The initial slope, final grip multiplier and final load then provide a total of 4 pieces of information, for which you can solve for the unknowns in the following cubic equation:
Grip multiplier = a*t^3 + b*t^2 + c*t + d
where t = current load as a fraction of final load, or (current load / final load).
Any load greater than the "final load" returns a grip multiplier of "final grip".
In that equation, d is 1.0 and c is the initial slope, so you really only need to solve for a and b.
The form of that equation used by ISI is
mult = ((2 + LSFL*LSIS - 2*LSFM) / LSFL^3)* Fz^3 + ((3 * LSFM - 3 - 2 * LSFL * LSIS) / LSFL^2) * Fz^2 + LSIS*Fz + 1
where:
LSIS = LoadSensInitialSlope - first parameter
LSFM = LoadSensFinalMultiplier - second parameter
LSFL = LoadSensFinalLoad - third parameter
Fz = NormalLoad on the tyre - in Newtons
Thanks to Kangaloosh and ISI for the above explanations - better than me guessing at it.
In general, larger tyres and tyres for heavier cars would have smaller Initial Slopes so the grip falls off more slowly, and higher Final Loads so there is more headroom. Typical Final Load values are around 10 times the static load on the tyre or more.
Tyre designers have the option of using LoadSens to manage the difference in grip found for tyres of different sizes - notionally, larger tyres have slower fall-off with load than smaller tyres and this results in higher grip for the wider tyre at the same load, or the same grip at a higher load. Alternately the extra grip can be factored into DryLatLong, or one can have a bit each way.
In rF, inappropriate LoadSens values may cause the car to feel like it is driving on ice. This can happen, for instance, when a tyre for a light car is applied to a heavy car. In general terms, if you wish to duplicate behaviour, the 1st parameter decreases with increases in the mass of the car while the 3rd parameter increases as the mass of the car goes up.
LatPeak=( 0.0817, 0.233, 13825.0) // Slip range where lateral peak force occurs depending on load
LongPeak=(0.0937, 0.247, 13850.0) // Slip range where longitudinal peak force occurs depending on load
Defines the effect of load on the peak slip range.
LatPeak defines a curve where the load on the tire is along the x-axis and the y-axis is the sine of the slip angle where peak forces occur.
The slip curve data at the top of the file gives the shape of the slip curve. The LatPeak and LongPeak parameters shrink and stretches those curves along the horizontal axis according to the load on the tire.
LatPeak and LongPeak define where the peak of the curve should be in terms of slip angle/ratio. What we use as slip "angle" is really a lateral slip ratio. Take the sin(slip-angle) to find the lateral slip ratio. Between a load of zero and the load specified as the third parameter, the peak ratio follows half of a sine wave smoothly between the two values (starts level and ends level). Beyond the specified max load, the peak stays constant at the second ratio.
At zero load, the sine of this slip angle is 0.0817, so the slip angle at which maximum lateral force is generated is 4.7 deg. At a load on the tire of 13825 N, from the third value, the sine of the slip angle is then the second value, or 0.233, so the angle is 13.5 deg.
13825 N is 9-10 g so that is probably outside the active range for a car, even with with downforce, except for very vigorous changing states of motion such as impacts.
The first value dictates how sharp and grippy the tire feels, or in tire technology terms, the "stiffness". Low values mean a tire which responds rapidly to applied side forces, as you might expect from a racing tire. Higher values up to 0.15 and maybe higher mean a tire which feels like it was built for comfort, not handling, or possibly a cross-ply tyre. It will be looser, less precise and less demanding.
LatCurve="LatSlip" // Slip angle curve (data uses normalized angle)
BrakingCurve="DecelSlip" // Slip ratio curve under braking
TractiveCurve="AccelSlip" // Slip ratio curve under acceleration
Define the slip curve table names used for each axis. Note that as standard practise the name of the curve is enclosed in double-quotes/inverted commas/rabbit's ears as it was when named, although it will still work without the quotes. CarFactory (v1.82) analysis does not read the slip curve names unless they are in quotes.
CamberLatLong=(2.70, 0.125, 0.560) // Peak camber angle, lateral gain at peak, longitudinal loss at 90 degrees
Defines what happens when camber is set in the hdv. The first value is the upper limit for camber (in degrees) that gives a change in CoF. The second value is the fraction of additional lateral grip gained at that camber value. It follows one quarter of a sine wave up to the peak angle (starts with a slope, ends level), then it is just a linear drop-off after that. The 3rd value is the loss of longitudinal grip because a cambered wheel is not flat on the road, also at the max camber value. The loss of longitudinal grip is linear with camber angle. These are relatively weak representations of what truly happens with camber.
Note that negative camber increases grip in the direction towards the centreline of the car.
Camber will affect total heat generated and temperature distribution across a tire. Negative camber will increase relative grip at that end of the car at the expense of both local heating and added wear at the inside edge of the tire.
The first parameter is a matter for the designer of the tire - at some point the tire stops responding to camber changes. The second and third parameters should relate to the design and purpose of the tyre.
RollingResistance=3172.0 // Resistance torque (Nm) per unit deflection (m) on ground
The amount of effort to roll the tire along the road. Part of the acceleration and top speed equations. Feeds into heat build-up equation, as do the Heating and Transfer parameters, as well as contributing to the mechanical drag of the car.
Also related to relative width front and back.
PneumaticTrail=6.00e-7 // Pneumatic trail per unit load (m/N), adjusted based on slip
Pneumatic trail is the distance by which the cornering force of the tire trails the sideways force at the axle. This distance produces a moment or torque, which is the cornering force multiplied by that distance. The moment provides the self-aligning torque which loads up the steering when cornering and tends to realign the road wheel with the direction of straight travel. Presumably the "load" above is the vertical force on the tyre and depends on mass and downforce.
In reality Pneumatic Trail is responsible for generating one of the self-aligning torques which cause the steering to feel like it loads up as cornering rate increase - others are from caster and mechanical trail. Self-aligning torque from pneumatic trail rises to a maximum at about half the maximum slip angle, and then falls away. My observation is the the tyres for the standard ISI cars do not exploit pneumatic trail to the full extent that they could, to the detriment of handling and feel and the way they work with RealFeel.
The pneumatic trail calculation is based on an estimate of what fraction of the tire contact is actually sliding. This estimate is done by comparing the current point on the slip curve with an extension of the initial slip curve slope. For example if you drove a straight line from the origin along the initial slip curve slope, you might get a value of say, 3.0 near the peak slip angle. Since the grip multiplier at peak slip is 1.0, then the estimate is that 2/3 of the contact patch is sliding. Not perfectly realistic, but it could be made to be close with the right inputs.
Based on the numbers for this car, a 600kg F1 car with 3g of downforce would generate about 3.5mm of pneumatic trail. References suggest that this is too small by a factor of 10x or more, although the value may be particular to F1 tyres as they are quite specialised.
HeatBasePeak=(0.16, 0.05) // Base peak slip to compute friction heat, fraction of base to use (0.0=use dynamic peak slip only)
Permits a base friction heating load from Sliding to be defined at no slip.
This line is not compulsory and appears in only some of the ISI tire files.
Heating=( 4.9833e-1, 10.683e-3) // Heat caused by (rolling, friction)
Self evident. The first Heating parameter creates heat linearly with rolling speed and vertical tire deflection (which depends on pressure, of course, so less pressure builds up more heat). The second Heating parameter compares the current slip value to either the realtime peak slip (which changes with load using LatPeak and LongPeak), or a constant peak slip, or a combination of those two depending on the values in HeatBasePeak. Adjusting these is usually done through trial and error
Transfer=(7.30e-3, 4.00e-3, 1.40e-4) // Heat transfer to (road, static air, moving air)
Similarly
HeatDistrib=(25.00, 163.0) // (Max camber angle, max off-pressure) that affects heat distribution (higher number -> less temperature difference)
Determines how much of the heat goes to the left, center, and right side of the tread based on how much current camber and pressure there is compared to the values given here.
The words suggest that higher values reduce the actual temperature difference that results from these conditions. The values in this file are quite large - about 5-8 times max camber and twice a typical pressure value.
AirTreadRate=0.011 // Heat transfer between tread and inside air
Trials suggest that this factor permits management of heat distribution across the tire. For a given tyre, any increase in weight supported causes the outside edges of the tyre to heat in preference to the middle. This can be addressed in part by increasing the pressure in the tyre. Alternatively, the tyre will heat more evenly if this parameter is increased in line with the increase in weight supported. Trial also suggest that wide tyres need higher values than relatively narrower tyres, for the same weight.
WearRate=9.720e-7 // Wear rate constant
WearGrip1=(0.989,0.981,0.9745,0.9715,0.969,0.967,0.9 655,0.9645) // Grip at 6/13/19/25/31/38/44/50% wear (defaults to 0.980->0.844), grip is 1.0 at 0% wear
WearGrip2=(0.964,0.9638,0.963,0.961,0.9535,0.936,0.8 50,0.775) // Grip at 56/63/69/75/81/88/94/100% wear (defaults to 0.824->0.688), tire bursts at 100% wear
Permits detailed mapping of the relationship between grip and wear over the life of the tire by modifying the internal defaults.
These lines are optional and the internal defaults will apply if they are omitted. At the time of writing they are found in the tire files for formula cars. A short one-line version using the label "WearGrip" is found in some but not all other ISI tire files.
Softness=0.66 // Softness is now just for AI strategic use
Not sure what the AI do that is strategic, although a lot of their tactics are rubbish...
AIGripMult=1.021 // Grip multiplier for AI vehicles (due to tire model simplification)
Enables control over difference between the player and AI cars for overall grip and F/R balance. Typically AI cars oversteer compared with player cars using the same physics, but less than they used to in F1C. F1 values are 1.021 front and 1.032 rear. Others may differ. Cars with little or no downforce or which respond more slowly than Formula cars and/or cars with predominant oversteer characteristics may need the value for the rear tires increased to enable the AI to stay on the track through S-bends.
AIPeakSlip=0.07 // Simple peak slip angle for AI vehicles
Analogous to the first value for LatPeak and used by the AI to define peak slip.
AITireModel=0.3 // 0.0 = original AI tire model in terms of slip, 1.0 = more similar to player tire model
This line is an overide for the AI Tire Model line in the plr file. The default line in that file is -
AI Tire Model="0.40000" // 0.0 = use AI peak slip, 1.0 = use player's dynamic slip, or a blend between the two (can be overrode in TBC with AITireModel)
The line is optional in the tbc and appears in only some of the ISI tire files. The tyre model defaults to the original behaviour in its absence.
AIWear=3.888e-7 // AI wear rate constant
Temperatures=(104.0, 75.0) // Optimum operating temperature for peak forces (Celsius), starting temperature
Defines the best operating tire temperature and the start temperature for the session.
OptimumPressure=(60.5, 0.0221) // Base pressure to remain flat on ground at zero deflection, and multiplier by load to stay flat on ground
First value defines the pressure for a properly formed tire with no load applied. The second value is the kpa/N of applied load required to maintain that shape. So a 1000kg car, with 50:50 weight distribution, would have 2452 N force on each tire. That requires 2452 x 0.0221 or 54 kpa to maintain the tire shape - so the loaded tire pressure would be 114.5 kpa. This compares with the value from the hdv of 132 kpa.
GripTempPress=(2.524, 1.323, 0.845) // Grip effects of being below temp, above temp, and off-pressure (higher number -> faster grip dropoff)
Some numeric (fudge?) factors which are used to change the grip when the tire is, respectively, too cold, too hot and off-pressure. The smaller the number, the less the effect.
//
REAR:
Same again at the back
Repeated for each compound
[COMPOUND]
Name="Soft"
...
more compounds
Currently there are no rules about compounds and weather, so number and names of compounds are a free choice.
Tyre files will be found by the game in any location under the Vehicles folder level. This provides opportunities and challenges.
Tyres which may be shared by a group of cars may be located at the folder level above the folder in which the hdv, pm and engine files are located. This may save dulpication and version management issues.
For example, if you have
rFactor\GameData\Vehicles\Woots\Woot1\WTeamA...F
...\Woot2\JTeamA...G
...\Woot3... and so on
Any common tbc files for this class can be located in Vehicle\Woots and will be found by all the Woots, while Woot1 may have a different set of other physics files from Woot2 and so forth.
I strongly recommend that each tyre file be named unambigously as one cannot guarantee that, where duplicate names exist, the preferred file in a particular location is selected by the game.
Rolling produces heat in a tyre due to distortion of the carcass due to the springyness of the tyre and hysteresis. I have always assumed that "friction" means "everything else", mostly sliding.
Experiment suggests that the rates of heating and cooling are affected by a number of factors.
1: If a set of tyres from one car are used on another car with quite different mass, the rate of accumulation of heat changes - heavier car, hotter tyres. This can be dealt with by amending the ability of the tyre to carry weight - the SpringBase= and SpringkPa= values - have a look at post#2.
2: Trials also show that the temperature of a tyre may be managed by appropriate selection of the values in Heating= and Transfer= if the tyre is reasonably close to having the right springyness for the mass. Typically I make changes in steps of around 10% when making trials. If the tyre is way off, then the changes in Heating= and Transfer= are too big and it becomes silly.
I suspect that if the tyres are overheating quite fast, that they have been copied from a lighter car or the SpringBase= and SpringkPa= values are wrongly selected.
Optimum temperature has no effect on the rate of change of temperature per se, only on the tyre's reaction to that temperature - which may affect how much it slides, which will play though to temperature build-up...
Locking the wheels is a matter of brake torque, car mass and grip. If the wheels are not locking and the car stops too fast then the grip is too high. The slip curve is normalised back to an effective max of 1.00 anyhow, so that has no effect.
Slip Curves
There has been some discussion recently (early part of 2007) about the shape of the slip curves used in ISI games and comparison with some Real World data. This couple of posts is an exploration of what is supplied with the ISI cars and some observations.
The attached jpeg files show the shape of the slip curves. They can be grouped into categories according to shape and usage.
I am never sure how attachments arrange themselves, and it would be useful to be able to imbed them in this text, but we will make do with what we have so they are at the bottom.
In order -
1: BMW F1 has two curves, lateral and longitudinal, the latter serving both acceleration and braking. The Longitudinal curve seems to be a conventional smooth shape. The Lateral curve shows evidence of being stretched just after the peak, so the portion after that is displaced to the right. In my view, this is an attempt to overcome a perceived shortfall in behaviour due, in part, to the slip curve dropping off too fast for the physics.
There are other examples of slip curves with this type of shape provided by ISI in the F1xxx series of sims and other cars in rF. .
As well as the stretching, the lateral curve flattens out at a higher value (60.75% of the maximum) than the longitudinal curve (52.5%).
Both curves share common values on the front of the curve. The maximum value for both occurs at the 12th step, or 11 x the step value of 0.009, which is 0.099.
The BMW curves are also used by the FormulaIS cars.
2: The Hammer and Howston share slip curves. These cars all have the same curves for Lateral and Longitudinal grip. The Level 2 curve is also used for Level 3. Presumably the assumption is that the higher grip of the higher-performing Level 2 and 3 tyres is partially offset by faster drop-off of grip with increasing slip angle, so the car is potentially faster but a bit harder to drive.
Both curves show a version of the stretched section just after the peak, similar to the BMW F1. These curves most strongly resemble those used by ISI in F1C.
These curves share common values on the front of the curve and the maximum value for both occurs at the 12th step, or 11 x the step value of 0.009, which is 0.099.
3: The next set of curves are a common shape with the same values up to the peak. Again, the maximum value for all curves occurs at the 12th step. The only difference between the curves is the rate at which they fall away and the final value.
These curves are a variant of the stretched curve, with a section after the maximum which is a reflex wave shape, holding up for a while, then falling more rapidly to eventually turn up and flatten out. These curves most strongly resemble those used by ISI in F1-2002.
These curves are used for a variety of cars. For all applications, the Lateral and Longitudinal curves are the same. The three lower curves are used for one each of the tree performance levels for the Rayzor, both Rhez', the Venom and the ZR. The fourth curve is used for the Level 1 rF Trainer. The Level 2 Trainer and the rF3 formula car use the Rayzor Level 3 curve.
The usual story applies to the front of the curve up to the maximum - all the curves are the same, and the maximum is at the 12th value.
The behaviour of cars using these curves depends on the steepness of the first portion and the rate of decline after the peak. The behaviour is modified by the values selected for LatPeak and LongPeak. As a simplification, the lowering of the steepness of the initial portion of the curve decreases the feeling of sharpness or bite on turn-in and increases the tendency to skid marks and skidding sounds. That is, the behaviour is skewed towards a road tyre or towards a cross-ply relative to a radial-ply. The first value of those parameters affects the steepness of the actual applied curve, so smaller values give more bite
The Panoz is the latest car released by ISI for rF. Its release happens to come after a couple of vigorous discussions about slip curves and car behaviour. It is tempting to believe the Panoz is a partial reaction to those discussions, or at least a symbol that ISI has some of the same questions about car dynamics when sliding as do their user-base.
From a tyre perspective their are three Panoz variants - Road, GT1 and GT2/GTS. The car set comes with 16 tyre files, two of which are not used.
1: The road car has slip curves which are amended versions of curves from previous cars from ISI. They strongly resemble the shape of the curves for the Rayzor and it's friends, but have been stretched horizontally, so things happen more slowly. The maximum value is reached way over on step #30. This is part of the reason why these cars are a bit ponderous - like a road car - and have a tendency to squeal and leave black marks. The final values are around 70%, which is relatively high for an ISI tyre.
This car has different curves for Lateral and Longitudinal but they are quite similar and the differences are subtle. I have not done enough testing to tell if the differences really matter. The Longitudinal curve is slightly steeper as it reaches peak value, then flattens off to reach the peak at the same step. After that, it holds up a little better than the Lateral curve until just before half-way (equivalent to a 90deg slide!) after which it falls faster than the lateral curve, to end up at about the same value.
The result is quite a good road car with a fair degree of control available at various yaw values. Less squealing and black lines may be an improvement.
2: The track cars return to the "regular" curve shape with the maximum around step 12. The GTS tyres share one curve for Lateral and Longitudinal, and it falls away less quickly after the peak than the GT2/GTS tyres. For this reason I would expect it to be the easier to drive in conditions of yaw, but I have not done sufficient testing (and probably will not get around to it).
The maximum value for the GTS tyre is reached at step 12.
The GT2/GTS tyres have different curves for Lateral and Longitudinal. The files contain three curves, but "Accelerative" and "Decelerative" are identical.
The Lateral curve peaks at step 13, while the Longitudinal curve peaks at step 12 like many of the others. It looks like the Lateral curve was stretched so its peak is one step to the right - in other words, proportionately dragged 1/12th further right at each step. Again, a subtle change to affect the relative balance of lateral and longitudinal forces.
Another feature of the track tyres is use of the opportunity in the tbc files to have different values for lateral and longitudinal parameters for LoadSens and Lat or LongPeak. These tyres are less forgiving than the road tyres, but that is not unreasonable given the higher grip and the reduction of aero downforce when sideways.
As referred to above, there has been discussion about slip curve shapes in the context of car control when yawing. One of the observations was that ISI slip curves do not match Real World curves for Lateral slip because the shape of the curve caused too much reduction of grip after the peak.
Real tyre data suggests that slip curve shapes can be represented by the Pacejka "Magic Formula" (Refs here, here and here).
Attached to this post is a chart showing a comparison between an ISI slip curve and a curve generated using the Pacejka formula that has similar characteristics - to the best of my ability. It can be seen that the ISI curve has been filled out after the peak. I conjecture that the reason for this is to improve off-axis behaviour as recovery characteristics are often poor.
Someone who has more familiarity with values to go in Pacejka may make a better job matching than I did.
One way to trial Lateral curves with higher final is to take a standard ISI curve and recalculate the tail portion after the peak at step 12 so that the final value is higher. A set of curves like this is shown in the second chart and attached as a zipped text file. To use one of the curves, paste it into the tyre file of your choice.
As a tool for trialling Pacejka values, a spreadsheet is attached as the fourth file. It has 2 sheets; The first has four sets of Pacejka calculations with accompanying chart so one may trial variations of parameters. The output is columns of 237 values suitable for creating an rF slipcurve table.
The second sheet will convert a column of 237 values into the packed form of 24 lines used in tbc files.
RF tbc files can use slip curve tables with any number of values down to just a handful. It will spline the result to produce a smooth curve but you lose some of the control, over curve shape. If you wish to use a different number of data points then also adjust the step value to give roughly the same final value - around 2.0 to 2.1. I am not sure if rF does much with slip curve values above a cumulative step of 1, but this will make sure.
The "DropoffFunction" is a new feature in the [SLIPCURVE] section. It's new!
It describes how the slip curve dropoff is affected when the peak of the slip curve changes. Ok
The peak of the slip curve may move to a smaller or larger slip when load or speed changes. Changes in load or speed may change the location of the peak of the slip curve left or right along the X axis. As an example, increase the load on the tyre and the location of the peak of the slip curve (probably) moves to the right.
When this happens, the slip curve is stretched or shrunk to match. So when the peak slip location is moved left or right, the whole curve is pushed and pulled in some way to match, without changing the essential shape or adding new bumps and valleys.
We knew this happened in F1C but had no way to manage the effect.
The DropoffFunction parameter allows you to affect the behavior beyond the peak when this happens:
There are two limits for how this reshaping could be managed;
Either a value some way to the right-hand end is fixed, and the curve after the peak is squashed or pulled into that available space,
Or all the points in the curve after the peak are shifted right by an amount proportional to the shift in the peak slip.
Whether the game goes that far is not described.
-1.0 = dropoff occurs faster when peak increases This sounds like the first alternate. Increase the load on the tyre, peak slip moves right, the rest of the curve is squished into a shorter space and so the slope of the curve after the peak is steeper.
0.0 = dropoff curve does NOT change shape when the peak changes An intermediate setting. Increase the load on the tyre, peak slip moves right, the rest of the curve after the peak moves right while maintaining the same shape, not stretched or shrunk.
1.0 = dropoff curve is stretched or shrunk with the rest of the curve,
which means the dropoff may feel more gradual as the peak increases. The second alternative. Increase the load on the tyre, peak slip moves right, the rest of the curve after the peak is stretched out proportionately, so if the peak slip moves 20% right, the back of the curve is 20% longer.
This is the default. Presumably what we had in F1C.
...
Using Niels' application theory numbers and doing some conjecturing-
Take a Longitudinal slip curve with x values from 0 to 2.0. Peak of y=1.0000 is at x=0.2 (11.5 deg.) at no load on the tyre. Add (arbitrary) load and (say) the peak moves to x=0.5 (30.0 deg.), an increase of 0.3.
- Set DropoffFunction (DOF) to -1.0 and the x axis still goes to 2.0. The back of curve is squashed into a smaller space and is steeper (falls off faster with increasing slip) as a result.
- Set DOF to 0.0 and the x axis now goes out to x=2.3. No change in shape of the back of the curve, no change in rate of dropoff.
- Set DOF to 1.0. Peak slip value has increased from 0.2 to 0.5, which is +150%. Max x value is increased accordingly to 5 and the curve is stretched to fit. Drop off is now much less steep.
This enables one to play with the relative shifting of the curve between lateral and longitudinal directions. I wonder if some of the issues around off-axis recovery behaviour depend upon these factors.
Related topic - the x-axis of the slip curve is the sin of the slip angle. For Lateral-only curves, there is no point in looking at actual x axis values greater than 1.0 or 90 degrees. Once past 90 deg, one is on the curve for rotation in the opposite direction.
About longitudinal slip:
Lateral slip results in the tyre's path of travel deviating from the longitudinal axis because the direction of slip is at right angles to that axis. This permits the concept of a slip angle, the included angle between the actual direction of movement and the longitudinal axis. The ratio of movement in the sideways slip direction to the amount of longitudinal travel is the sine of the included angle. Slip angles are easy and intuitive to envision.
Longitudinal slip takes place along the longitudinal axis. The ratio of slip to normal movement (the rotation of the wheel) is calculated in the same way as for lateral. It is simple, in that the included angle between direction of travel and direction of slip is zero and the concept of a slip 'angle' never arises. The amount of slip is the difference between the distance the wheel would travel with zero slip and the distance it actually travelled. The slip ratio - the values along the x axis of the ISI slip curve - is the slip distance divided by the distance the wheel would have travelled with no slippage.
This is the tbc file for the BMW Sauber F1 2006. TBC files are text files and may be viewed and edited in any decent text editor or even Notepad.
I have added comments about new or uprated statement lines which have been found in tbc files released since the '06 BMW F1, and they are placed where they appear in the files concerned.
The original is shown in regular text. My comments are in bold.
Top of File
// Tire brand found in *.hdv files refer to file name.
"//" symbols are used to delimit comments in the original file and in other physics files. All characters after // and before the next Carriage Return are ignored by the game
// Slip curves do not represent the coefficient of grip. Instead they represent
// the reaction to the current slip. Regardless of the peak value in this curve,
// it will be automatically normalized to have a peak of 1.0.
// The peak of the slip curve is dynamically adjusted to higher or lower slip
// values based on current load and speed. The second value of "SpeedEffects"
// is an equivalency value for load and speed. To calculate the slip peak, we
// use the following input which is a combination of load and speed:
// <load/speed combination> = <load> + (<speed> * <equivalency>)
// Obviously a larger equivalency value will make speed a more dominant factor
// in the calculation of the peak. See the SpeedEffects, LatPeak, and
// LongPeak tire parameters for more info.
// Slip curve data points are connected using a cubic spline, so there is no
// need to use a massive amount of data points unless the curve is really busy.
// Lateral slip angles are normalized so that you need to take the sine of the
// angle to get the slip. For example, 12 degrees is a slip of 0.208 and vice
// versa. Longitudinal slip ratios closely match the SAE definition.
// All curves should probably go out to at least a slip of 2.0, even the lateral
// and braking curves. Although locking up your brakes is a slip of 1.0, there
// are situations where you can spin your wheels in the opposite direction of
// your velocity (like shifting into reverse while moving forwards).
// Note that the initial slope of the curve may have an effect on how some
// features behave, such as traction control, ABS, skids, and tire smoke.
// The "DropoffFunction" is a new feature (new in rF) in the [SLIPCURVE] section. It
// describes how the slip curve dropoff is affected when the peak of the
// slip curve changes. The peak of the slip curve may move to a smaller
// or larger slip when load or speed changes. When this happens, the
// slip curve is stretched or shrunk to match. The DropoffFunction parameter
// allows you to affect the behavior beyond the peak when this happens:
// -1.0 = dropoff occurs faster when peak increases
// 0.0 = dropoff curve does NOT change shape when the peak changes
// 1.0 = dropoff curve is stretched or shrunk with the rest of the curve,
// which means the dropoff may feel more gradual as the peak increases.
// This is the default.
[SLIPCURVE]
Name="LatSlip"
Note that the name of the curve is enclosed in double-quotes/inverted commas/rabbit's ears, and the same applies further down where the curve is called for use.
Step=0.009000 // Slip step
DropoffFunction=-0.10 // See explanation above
Data:
0.000000 0.174836 0.349483 0.518060 0.668882 0.790665 0.878928 0.936783 0.971287 0.989751
0.997978 1.000000 0.999632 0.998538 0.996690 0.994069 0.990622 0.986566 0.982162 0.977223
0.972191 0.967169 0.962158 0.957368 0.952395 0.947268 0.942100 0.937138 0.932347 0.927646
0.923216 0.918857 0.914620 0.909990 0.905347 0.900211 0.894754 0.888562 0.881919 0.874943
0.867751 0.860449 0.853111 0.845815 0.838611 0.831522 0.824611 0.817849 0.811257 0.804850
0.798539 0.792387 0.786377 0.780673 0.775277 0.770211 0.765415 0.760879 0.756604 0.752550
0.748670 0.744944 0.741404 0.737984 0.734717 0.731545 0.728464 0.725526 0.722667 0.719902
0.717246 0.714664 0.712174 0.709790 0.707439 0.705187 0.703003 0.700892 0.698841 0.696828
0.694901 0.693027 0.691223 0.689478 0.687770 0.686107 0.684496 0.682947 0.681417 0.679925
0.678489 0.677069 0.675672 0.674308 0.672985 0.671663 0.670389 0.669153 0.667905 0.666712
0.665554 0.664420 0.663300 0.662203 0.661157 0.660122 0.659088 0.658104 0.657138 0.656191
0.655272 0.654370 0.653475 0.652626 0.651793 0.650965 0.650161 0.649373 0.648597 0.647836
0.647068 0.646312 0.645579 0.644848 0.644128 0.643430 0.642753 0.642067 0.641411 0.640745
0.640110 0.639464 0.638837 0.638220 0.637611 0.637022 0.636430 0.635857 0.635295 0.634733
0.634179 0.633635 0.633100 0.632573 0.632055 0.631545 0.631044 0.630550 0.630065 0.629587
0.629116 0.628654 0.628198 0.627749 0.627307 0.626873 0.626445 0.626023 0.625608 0.625199
0.624797 0.624401 0.624011 0.623626 0.623248 0.622876 0.622509 0.622147 0.621792 0.621441
0.621096 0.620756 0.620422 0.620092 0.619768 0.619448 0.619133 0.618823 0.618518 0.618218
0.617922 0.617631 0.617344 0.617061 0.616783 0.616511 0.616241 0.615976 0.615716 0.615459
0.615206 0.614958 0.614714 0.614474 0.614237 0.614005 0.613776 0.613552 0.613330 0.613114
0.612900 0.612690 0.612484 0.612282 0.612082 0.611887 0.611695 0.611507 0.611322 0.611141
0.610963 0.610788 0.610617 0.610449 0.610281 0.610118 0.609957 0.609799 0.609647 0.609496
0.609346 0.609199 0.609051 0.608909 0.608766 0.608626 0.608491 0.608363 0.608238 0.608115
0.608000 0.607887 0.607788 0.607697 0.607612 0.607534 0.607500
The strings of numbers above is a sequence of values that go to make a column in a table. In the tbc file they are arranged in 23 lines of 10 values, plus another seven values. The Slip Step is used to increment the value that each number is when matched up with in the table so you get something like this -
The first column is the step number. The second is the step value and the third is the slip value. There will be further posts in this thread which discusses slip curves in more detail.
-----1----------0--------------0.000000
-----2----------0.009----------0.174836
-----3----------0.018----------0.349483
-----4----------0.027----------0.518060
-----5----------0.036----------0.668882
-----6----------0.045----------0.790665
-----7----------0.054----------0.878928
-----8----------0.063----------0.936783
-----9----------0.072----------0.971287
----10----------0.081----------0.989751
and so on going down to 237 values. Plot that with the slip value on the Y axis and you get a chart like those in post #9 and following.
rF can handle multiple examples of these tables of slip values and this example file has three, each one having a separate name. They are called by the LatCurve, BrakingCurve and TractiveCurve statements in each of the compound types below.
These tables describe the type of behaviour of the tire as the the forces build up to and beyond the breakaway point where gripping gives way to sliding. Since forces and the response of the tire to them may not be equal in all directions, it could be quite useful to employ three curves.
[SLIPCURVE]
Name="AccelSlip"
Step=0.009000 // Slip step
DropoffFunction=0.8 // See explanation above
Data:
Table removed for clarity
[SLIPCURVE]
Name="DecelSlip"
Step=0.009000 // Slip step
DropoffFunction=0.0 // See explanation above
Data:
Table removed for clarity
// Note that the dry and wet performance numbers are NOT relative.
// They will still be scaled by the terrain dry/wet values in terrain.tdf.
// For example, if normal pavement has the scaling parameters dry=1.0 and wet=0.8,
// and a rain tire has scaling parameters of dry=1.30 and wet=1.35,
// then the overall grip in the dry will be (1.0 * 1.30) = 1.30,
// while the overall grip in the wet will be (0.8 * 1.35) = 1.08.
// FYI - we may add "Compound" to each name in order to translate it,
// because these names are not necessarily unique to tire compounds.
[COMPOUND]
At the time of writing rF did not support wet weather, so there is no requirement for wet compounds with defined names. Compound names in rF are free. The only requirement I know of is that they are unique within the file. Compounds are called from the hdv by number, with the first compound in the file being zero.
Name="Super Soft"
Note that the name of the compound is enclosed in double-quotes/inverted commas/rabbit's ears. Compounds are called from the hdv by number starting from 0 (zero). The name is displayed in the garage without the quotes. Names without quotes still work.
FRONT: // Arguments: ALL, FRONT, REAR, LEFT, RIGHT, FRONTLEFT, FRONTRIGHT, REARLEFT, REARRIGHT
Defines to which tyre position(s) the following parameters apply. All possible combinations are available.
DryLatLong=(2.2687702619, 2.3799400047) // Lateral/longitudinal coefficients in dry weather
Maximum Coefficients of Friction (CoF) for this compound on dry pavement in the lateral and longitudinal directions. Note that in simple terms, grip is coeficient times vertical load on the tyre.
Formula tires supplied by ISI have tires have about 5% more longitudinal than lateral grip while the longitudinal grip coefficient of other car types are about the same as their lateral grip coefficient.
rF does not use width to recalculate grip or apportion it between front and rear. Any actual differences in static no-load grip between front and back tyres are input directly as Dry or Wet Lat values in each compound. Please note that the LoadSens parameter further down defines the change in grip with load on the tyres and can play a part in managing actual grip levels.
WetLatLong=(0.920, 0.932) // Lateral/longitudinal coefficients in wet weather
I guess this is a placemaker since there is no current support for wet tracks.
Radius=0.327 // Radius of tire
Outside rolling radius, stationary. Feeds into the distance the car travels per 1000 rpm, so contributes to overall gearing and hence possibly top speed. Also defines the size of the tire on the car as seen on-screen. If the car floats in the air or has part of the tyres underground then there is a mismatch between the size of the tyres in this file and the size defined in the graphics.
RadiusRPM=1.722e-6 // Increased radius per unit RPM
How fast the radius grows with rotational speed of the wheel.
Width=0.340 // Width of tire
Used as input to the width of skid marks. No effect on grip.
Rim=(0.166, 750000.0, 7500.0, 3.0) // Rim radius, spring rate, damper rate, minimum velocity to produce sparks
Defines the wheel rim size and the physical characteristics as a sprung damped body. Presumably used to model what happens when a tire comes off a wheel - say after a blowout or other catastrophic failure. Velocity is in m/s.
This line is not compulsory and appears in only some of the ISI tire files.
SpringBase=50460.0 // Base spring rate with no pressure
SpringkPa=1200.00 // Spring rate per unit pressure
Defines how springy the tire is and relates to elasticity and deformation of the tyre under load. Analogous to load bearing capacity as it relates to tire heating. Does not affect grip. First parameter is the springyness of the carcass of the tire at zero inflation and the second is the springyness of the air inside which increases with inflation. The total value is the sum of the two.
The total of SpringBase plus SpringKpa * tire pressure may be several times larger than the base. For a typical F1 front tire, the inflation contribution is 160,000 while the base is 50,500, which is about 3.1:1.
This springiness is a measure of the tire's load-bearing capacity and is expressed in N/m. It also has an effect on the calculations about generation of heat, as a tire with low springyness for the load on it will compress and flex more and so get hotter at the same settings for heating and dissipation.
Low springyness will also reduce the rolling rotation of the tyre due to compression, affecting the overall gearing - the tyre runs a bit flat.
The ratio of SpringBase to SpringkPa affects the way in which the tire responds to changes in pressure. Please also see AirTreadRate.
This tyre is compressed by about 5.6mm by the weight of the car.
Damper=521.4 // Damping rate of tire
It was during the 60's that people discovered that tires with high hysteresis had more grip than tires with low hysteresis, particularly in the wet. Hysteresis is the amount of internal absorption of energy when a tire is flexed. So I presume that high values of damper translate into increased rolling resistance and to build up of heat. Todays road tire technology permits high hysteresis with low rolling resistance.
SpeedEffects=(267.5, 18.5) // Speed at which grip drops to half (m/s, 0.0 to disable), speed load equivalency (see above)
Described in the preamble at the beginning of the file. Permits management of the relative importance of load and speed on grip
The first parameter effects grip as follows. If the speed across the ground is equal to the first parameter, then the grip is halved compared with grip at zero speed. At 2:1, grip is reduced to 1/3rd, at 3:1, it is reduced to 1/4, and so on. At slower speeds, the grip is reduced to 3/4 at a speed of 1/3rd of the first parameter. Obviously, as speed increases, grip eventually approaches zero..
LoadSensLat=( -3.88e-6, 0.365, 23350) // Load sensitivity for lateral grip (initial slope, final grip multiplier, final load)
LoadSensLong=(-3.86e-6, 0.435, 23350) // Load sensitivity for longitudinal grip (initial slope, final grip multiplier, final load)
Defines the effect of vertical load on tyre grip.
rF permits differing LoadSens values to be applied to lateral and to longitudinal forces. A simpler version is supported as an alternative, in which case there is a single line like -
LoadSens=( -3.88e-6, 0.365, 23350) // Load sensitivity for lateral grip (initial slope, final grip multiplier, final load)
Load sensitivity is a multiplying factor from 0.0 to 1.0 to be applied to the grip defined in DryLatLong and the like. At zero load, the multiplier is assumed to be 1.0. The initial slope, final grip multiplier and final load then provide a total of 4 pieces of information, for which you can solve for the unknowns in the following cubic equation:
Grip multiplier = a*t^3 + b*t^2 + c*t + d
where t = current load as a fraction of final load, or (current load / final load).
Any load greater than the "final load" returns a grip multiplier of "final grip".
In that equation, d is 1.0 and c is the initial slope, so you really only need to solve for a and b.
The form of that equation used by ISI is
mult = ((2 + LSFL*LSIS - 2*LSFM) / LSFL^3)* Fz^3 + ((3 * LSFM - 3 - 2 * LSFL * LSIS) / LSFL^2) * Fz^2 + LSIS*Fz + 1
where:
LSIS = LoadSensInitialSlope - first parameter
LSFM = LoadSensFinalMultiplier - second parameter
LSFL = LoadSensFinalLoad - third parameter
Fz = NormalLoad on the tyre - in Newtons
Thanks to Kangaloosh and ISI for the above explanations - better than me guessing at it.
In general, larger tyres and tyres for heavier cars would have smaller Initial Slopes so the grip falls off more slowly, and higher Final Loads so there is more headroom. Typical Final Load values are around 10 times the static load on the tyre or more.
Tyre designers have the option of using LoadSens to manage the difference in grip found for tyres of different sizes - notionally, larger tyres have slower fall-off with load than smaller tyres and this results in higher grip for the wider tyre at the same load, or the same grip at a higher load. Alternately the extra grip can be factored into DryLatLong, or one can have a bit each way.
In rF, inappropriate LoadSens values may cause the car to feel like it is driving on ice. This can happen, for instance, when a tyre for a light car is applied to a heavy car. In general terms, if you wish to duplicate behaviour, the 1st parameter decreases with increases in the mass of the car while the 3rd parameter increases as the mass of the car goes up.
LatPeak=( 0.0817, 0.233, 13825.0) // Slip range where lateral peak force occurs depending on load
LongPeak=(0.0937, 0.247, 13850.0) // Slip range where longitudinal peak force occurs depending on load
Defines the effect of load on the peak slip range.
LatPeak defines a curve where the load on the tire is along the x-axis and the y-axis is the sine of the slip angle where peak forces occur.
The slip curve data at the top of the file gives the shape of the slip curve. The LatPeak and LongPeak parameters shrink and stretches those curves along the horizontal axis according to the load on the tire.
LatPeak and LongPeak define where the peak of the curve should be in terms of slip angle/ratio. What we use as slip "angle" is really a lateral slip ratio. Take the sin(slip-angle) to find the lateral slip ratio. Between a load of zero and the load specified as the third parameter, the peak ratio follows half of a sine wave smoothly between the two values (starts level and ends level). Beyond the specified max load, the peak stays constant at the second ratio.
At zero load, the sine of this slip angle is 0.0817, so the slip angle at which maximum lateral force is generated is 4.7 deg. At a load on the tire of 13825 N, from the third value, the sine of the slip angle is then the second value, or 0.233, so the angle is 13.5 deg.
13825 N is 9-10 g so that is probably outside the active range for a car, even with with downforce, except for very vigorous changing states of motion such as impacts.
The first value dictates how sharp and grippy the tire feels, or in tire technology terms, the "stiffness". Low values mean a tire which responds rapidly to applied side forces, as you might expect from a racing tire. Higher values up to 0.15 and maybe higher mean a tire which feels like it was built for comfort, not handling, or possibly a cross-ply tyre. It will be looser, less precise and less demanding.
LatCurve="LatSlip" // Slip angle curve (data uses normalized angle)
BrakingCurve="DecelSlip" // Slip ratio curve under braking
TractiveCurve="AccelSlip" // Slip ratio curve under acceleration
Define the slip curve table names used for each axis. Note that as standard practise the name of the curve is enclosed in double-quotes/inverted commas/rabbit's ears as it was when named, although it will still work without the quotes. CarFactory (v1.82) analysis does not read the slip curve names unless they are in quotes.
CamberLatLong=(2.70, 0.125, 0.560) // Peak camber angle, lateral gain at peak, longitudinal loss at 90 degrees
Defines what happens when camber is set in the hdv. The first value is the upper limit for camber (in degrees) that gives a change in CoF. The second value is the fraction of additional lateral grip gained at that camber value. It follows one quarter of a sine wave up to the peak angle (starts with a slope, ends level), then it is just a linear drop-off after that. The 3rd value is the loss of longitudinal grip because a cambered wheel is not flat on the road, also at the max camber value. The loss of longitudinal grip is linear with camber angle. These are relatively weak representations of what truly happens with camber.
Note that negative camber increases grip in the direction towards the centreline of the car.
Camber will affect total heat generated and temperature distribution across a tire. Negative camber will increase relative grip at that end of the car at the expense of both local heating and added wear at the inside edge of the tire.
The first parameter is a matter for the designer of the tire - at some point the tire stops responding to camber changes. The second and third parameters should relate to the design and purpose of the tyre.
RollingResistance=3172.0 // Resistance torque (Nm) per unit deflection (m) on ground
The amount of effort to roll the tire along the road. Part of the acceleration and top speed equations. Feeds into heat build-up equation, as do the Heating and Transfer parameters, as well as contributing to the mechanical drag of the car.
Also related to relative width front and back.
PneumaticTrail=6.00e-7 // Pneumatic trail per unit load (m/N), adjusted based on slip
Pneumatic trail is the distance by which the cornering force of the tire trails the sideways force at the axle. This distance produces a moment or torque, which is the cornering force multiplied by that distance. The moment provides the self-aligning torque which loads up the steering when cornering and tends to realign the road wheel with the direction of straight travel. Presumably the "load" above is the vertical force on the tyre and depends on mass and downforce.
In reality Pneumatic Trail is responsible for generating one of the self-aligning torques which cause the steering to feel like it loads up as cornering rate increase - others are from caster and mechanical trail. Self-aligning torque from pneumatic trail rises to a maximum at about half the maximum slip angle, and then falls away. My observation is the the tyres for the standard ISI cars do not exploit pneumatic trail to the full extent that they could, to the detriment of handling and feel and the way they work with RealFeel.
The pneumatic trail calculation is based on an estimate of what fraction of the tire contact is actually sliding. This estimate is done by comparing the current point on the slip curve with an extension of the initial slip curve slope. For example if you drove a straight line from the origin along the initial slip curve slope, you might get a value of say, 3.0 near the peak slip angle. Since the grip multiplier at peak slip is 1.0, then the estimate is that 2/3 of the contact patch is sliding. Not perfectly realistic, but it could be made to be close with the right inputs.
Based on the numbers for this car, a 600kg F1 car with 3g of downforce would generate about 3.5mm of pneumatic trail. References suggest that this is too small by a factor of 10x or more, although the value may be particular to F1 tyres as they are quite specialised.
HeatBasePeak=(0.16, 0.05) // Base peak slip to compute friction heat, fraction of base to use (0.0=use dynamic peak slip only)
Permits a base friction heating load from Sliding to be defined at no slip.
This line is not compulsory and appears in only some of the ISI tire files.
Heating=( 4.9833e-1, 10.683e-3) // Heat caused by (rolling, friction)
Self evident. The first Heating parameter creates heat linearly with rolling speed and vertical tire deflection (which depends on pressure, of course, so less pressure builds up more heat). The second Heating parameter compares the current slip value to either the realtime peak slip (which changes with load using LatPeak and LongPeak), or a constant peak slip, or a combination of those two depending on the values in HeatBasePeak. Adjusting these is usually done through trial and error
Transfer=(7.30e-3, 4.00e-3, 1.40e-4) // Heat transfer to (road, static air, moving air)
Similarly
HeatDistrib=(25.00, 163.0) // (Max camber angle, max off-pressure) that affects heat distribution (higher number -> less temperature difference)
Determines how much of the heat goes to the left, center, and right side of the tread based on how much current camber and pressure there is compared to the values given here.
The words suggest that higher values reduce the actual temperature difference that results from these conditions. The values in this file are quite large - about 5-8 times max camber and twice a typical pressure value.
AirTreadRate=0.011 // Heat transfer between tread and inside air
Trials suggest that this factor permits management of heat distribution across the tire. For a given tyre, any increase in weight supported causes the outside edges of the tyre to heat in preference to the middle. This can be addressed in part by increasing the pressure in the tyre. Alternatively, the tyre will heat more evenly if this parameter is increased in line with the increase in weight supported. Trial also suggest that wide tyres need higher values than relatively narrower tyres, for the same weight.
WearRate=9.720e-7 // Wear rate constant
WearGrip1=(0.989,0.981,0.9745,0.9715,0.969,0.967,0.9 655,0.9645) // Grip at 6/13/19/25/31/38/44/50% wear (defaults to 0.980->0.844), grip is 1.0 at 0% wear
WearGrip2=(0.964,0.9638,0.963,0.961,0.9535,0.936,0.8 50,0.775) // Grip at 56/63/69/75/81/88/94/100% wear (defaults to 0.824->0.688), tire bursts at 100% wear
Permits detailed mapping of the relationship between grip and wear over the life of the tire by modifying the internal defaults.
These lines are optional and the internal defaults will apply if they are omitted. At the time of writing they are found in the tire files for formula cars. A short one-line version using the label "WearGrip" is found in some but not all other ISI tire files.
Softness=0.66 // Softness is now just for AI strategic use
Not sure what the AI do that is strategic, although a lot of their tactics are rubbish...
AIGripMult=1.021 // Grip multiplier for AI vehicles (due to tire model simplification)
Enables control over difference between the player and AI cars for overall grip and F/R balance. Typically AI cars oversteer compared with player cars using the same physics, but less than they used to in F1C. F1 values are 1.021 front and 1.032 rear. Others may differ. Cars with little or no downforce or which respond more slowly than Formula cars and/or cars with predominant oversteer characteristics may need the value for the rear tires increased to enable the AI to stay on the track through S-bends.
AIPeakSlip=0.07 // Simple peak slip angle for AI vehicles
Analogous to the first value for LatPeak and used by the AI to define peak slip.
AITireModel=0.3 // 0.0 = original AI tire model in terms of slip, 1.0 = more similar to player tire model
This line is an overide for the AI Tire Model line in the plr file. The default line in that file is -
AI Tire Model="0.40000" // 0.0 = use AI peak slip, 1.0 = use player's dynamic slip, or a blend between the two (can be overrode in TBC with AITireModel)
The line is optional in the tbc and appears in only some of the ISI tire files. The tyre model defaults to the original behaviour in its absence.
AIWear=3.888e-7 // AI wear rate constant
Temperatures=(104.0, 75.0) // Optimum operating temperature for peak forces (Celsius), starting temperature
Defines the best operating tire temperature and the start temperature for the session.
OptimumPressure=(60.5, 0.0221) // Base pressure to remain flat on ground at zero deflection, and multiplier by load to stay flat on ground
First value defines the pressure for a properly formed tire with no load applied. The second value is the kpa/N of applied load required to maintain that shape. So a 1000kg car, with 50:50 weight distribution, would have 2452 N force on each tire. That requires 2452 x 0.0221 or 54 kpa to maintain the tire shape - so the loaded tire pressure would be 114.5 kpa. This compares with the value from the hdv of 132 kpa.
GripTempPress=(2.524, 1.323, 0.845) // Grip effects of being below temp, above temp, and off-pressure (higher number -> faster grip dropoff)
Some numeric (fudge?) factors which are used to change the grip when the tire is, respectively, too cold, too hot and off-pressure. The smaller the number, the less the effect.
//
REAR:
Same again at the back
Repeated for each compound
[COMPOUND]
Name="Soft"
...
more compounds
Currently there are no rules about compounds and weather, so number and names of compounds are a free choice.
Tyre files will be found by the game in any location under the Vehicles folder level. This provides opportunities and challenges.
Tyres which may be shared by a group of cars may be located at the folder level above the folder in which the hdv, pm and engine files are located. This may save dulpication and version management issues.
For example, if you have
rFactor\GameData\Vehicles\Woots\Woot1\WTeamA...F
...\Woot2\JTeamA...G
...\Woot3... and so on
Any common tbc files for this class can be located in Vehicle\Woots and will be found by all the Woots, while Woot1 may have a different set of other physics files from Woot2 and so forth.
I strongly recommend that each tyre file be named unambigously as one cannot guarantee that, where duplicate names exist, the preferred file in a particular location is selected by the game.
Rolling produces heat in a tyre due to distortion of the carcass due to the springyness of the tyre and hysteresis. I have always assumed that "friction" means "everything else", mostly sliding.
Experiment suggests that the rates of heating and cooling are affected by a number of factors.
1: If a set of tyres from one car are used on another car with quite different mass, the rate of accumulation of heat changes - heavier car, hotter tyres. This can be dealt with by amending the ability of the tyre to carry weight - the SpringBase= and SpringkPa= values - have a look at post#2.
2: Trials also show that the temperature of a tyre may be managed by appropriate selection of the values in Heating= and Transfer= if the tyre is reasonably close to having the right springyness for the mass. Typically I make changes in steps of around 10% when making trials. If the tyre is way off, then the changes in Heating= and Transfer= are too big and it becomes silly.
I suspect that if the tyres are overheating quite fast, that they have been copied from a lighter car or the SpringBase= and SpringkPa= values are wrongly selected.
Optimum temperature has no effect on the rate of change of temperature per se, only on the tyre's reaction to that temperature - which may affect how much it slides, which will play though to temperature build-up...
Locking the wheels is a matter of brake torque, car mass and grip. If the wheels are not locking and the car stops too fast then the grip is too high. The slip curve is normalised back to an effective max of 1.00 anyhow, so that has no effect.
Slip Curves
There has been some discussion recently (early part of 2007) about the shape of the slip curves used in ISI games and comparison with some Real World data. This couple of posts is an exploration of what is supplied with the ISI cars and some observations.
The attached jpeg files show the shape of the slip curves. They can be grouped into categories according to shape and usage.
I am never sure how attachments arrange themselves, and it would be useful to be able to imbed them in this text, but we will make do with what we have so they are at the bottom.
In order -
1: BMW F1 has two curves, lateral and longitudinal, the latter serving both acceleration and braking. The Longitudinal curve seems to be a conventional smooth shape. The Lateral curve shows evidence of being stretched just after the peak, so the portion after that is displaced to the right. In my view, this is an attempt to overcome a perceived shortfall in behaviour due, in part, to the slip curve dropping off too fast for the physics.
There are other examples of slip curves with this type of shape provided by ISI in the F1xxx series of sims and other cars in rF. .
As well as the stretching, the lateral curve flattens out at a higher value (60.75% of the maximum) than the longitudinal curve (52.5%).
Both curves share common values on the front of the curve. The maximum value for both occurs at the 12th step, or 11 x the step value of 0.009, which is 0.099.
The BMW curves are also used by the FormulaIS cars.
2: The Hammer and Howston share slip curves. These cars all have the same curves for Lateral and Longitudinal grip. The Level 2 curve is also used for Level 3. Presumably the assumption is that the higher grip of the higher-performing Level 2 and 3 tyres is partially offset by faster drop-off of grip with increasing slip angle, so the car is potentially faster but a bit harder to drive.
Both curves show a version of the stretched section just after the peak, similar to the BMW F1. These curves most strongly resemble those used by ISI in F1C.
These curves share common values on the front of the curve and the maximum value for both occurs at the 12th step, or 11 x the step value of 0.009, which is 0.099.
3: The next set of curves are a common shape with the same values up to the peak. Again, the maximum value for all curves occurs at the 12th step. The only difference between the curves is the rate at which they fall away and the final value.
These curves are a variant of the stretched curve, with a section after the maximum which is a reflex wave shape, holding up for a while, then falling more rapidly to eventually turn up and flatten out. These curves most strongly resemble those used by ISI in F1-2002.
These curves are used for a variety of cars. For all applications, the Lateral and Longitudinal curves are the same. The three lower curves are used for one each of the tree performance levels for the Rayzor, both Rhez', the Venom and the ZR. The fourth curve is used for the Level 1 rF Trainer. The Level 2 Trainer and the rF3 formula car use the Rayzor Level 3 curve.
The usual story applies to the front of the curve up to the maximum - all the curves are the same, and the maximum is at the 12th value.
The behaviour of cars using these curves depends on the steepness of the first portion and the rate of decline after the peak. The behaviour is modified by the values selected for LatPeak and LongPeak. As a simplification, the lowering of the steepness of the initial portion of the curve decreases the feeling of sharpness or bite on turn-in and increases the tendency to skid marks and skidding sounds. That is, the behaviour is skewed towards a road tyre or towards a cross-ply relative to a radial-ply. The first value of those parameters affects the steepness of the actual applied curve, so smaller values give more bite
The Panoz is the latest car released by ISI for rF. Its release happens to come after a couple of vigorous discussions about slip curves and car behaviour. It is tempting to believe the Panoz is a partial reaction to those discussions, or at least a symbol that ISI has some of the same questions about car dynamics when sliding as do their user-base.
From a tyre perspective their are three Panoz variants - Road, GT1 and GT2/GTS. The car set comes with 16 tyre files, two of which are not used.
1: The road car has slip curves which are amended versions of curves from previous cars from ISI. They strongly resemble the shape of the curves for the Rayzor and it's friends, but have been stretched horizontally, so things happen more slowly. The maximum value is reached way over on step #30. This is part of the reason why these cars are a bit ponderous - like a road car - and have a tendency to squeal and leave black marks. The final values are around 70%, which is relatively high for an ISI tyre.
This car has different curves for Lateral and Longitudinal but they are quite similar and the differences are subtle. I have not done enough testing to tell if the differences really matter. The Longitudinal curve is slightly steeper as it reaches peak value, then flattens off to reach the peak at the same step. After that, it holds up a little better than the Lateral curve until just before half-way (equivalent to a 90deg slide!) after which it falls faster than the lateral curve, to end up at about the same value.
The result is quite a good road car with a fair degree of control available at various yaw values. Less squealing and black lines may be an improvement.
2: The track cars return to the "regular" curve shape with the maximum around step 12. The GTS tyres share one curve for Lateral and Longitudinal, and it falls away less quickly after the peak than the GT2/GTS tyres. For this reason I would expect it to be the easier to drive in conditions of yaw, but I have not done sufficient testing (and probably will not get around to it).
The maximum value for the GTS tyre is reached at step 12.
The GT2/GTS tyres have different curves for Lateral and Longitudinal. The files contain three curves, but "Accelerative" and "Decelerative" are identical.
The Lateral curve peaks at step 13, while the Longitudinal curve peaks at step 12 like many of the others. It looks like the Lateral curve was stretched so its peak is one step to the right - in other words, proportionately dragged 1/12th further right at each step. Again, a subtle change to affect the relative balance of lateral and longitudinal forces.
Another feature of the track tyres is use of the opportunity in the tbc files to have different values for lateral and longitudinal parameters for LoadSens and Lat or LongPeak. These tyres are less forgiving than the road tyres, but that is not unreasonable given the higher grip and the reduction of aero downforce when sideways.
As referred to above, there has been discussion about slip curve shapes in the context of car control when yawing. One of the observations was that ISI slip curves do not match Real World curves for Lateral slip because the shape of the curve caused too much reduction of grip after the peak.
Real tyre data suggests that slip curve shapes can be represented by the Pacejka "Magic Formula" (Refs here, here and here).
Attached to this post is a chart showing a comparison between an ISI slip curve and a curve generated using the Pacejka formula that has similar characteristics - to the best of my ability. It can be seen that the ISI curve has been filled out after the peak. I conjecture that the reason for this is to improve off-axis behaviour as recovery characteristics are often poor.
Someone who has more familiarity with values to go in Pacejka may make a better job matching than I did.
One way to trial Lateral curves with higher final is to take a standard ISI curve and recalculate the tail portion after the peak at step 12 so that the final value is higher. A set of curves like this is shown in the second chart and attached as a zipped text file. To use one of the curves, paste it into the tyre file of your choice.
As a tool for trialling Pacejka values, a spreadsheet is attached as the fourth file. It has 2 sheets; The first has four sets of Pacejka calculations with accompanying chart so one may trial variations of parameters. The output is columns of 237 values suitable for creating an rF slipcurve table.
The second sheet will convert a column of 237 values into the packed form of 24 lines used in tbc files.
RF tbc files can use slip curve tables with any number of values down to just a handful. It will spline the result to produce a smooth curve but you lose some of the control, over curve shape. If you wish to use a different number of data points then also adjust the step value to give roughly the same final value - around 2.0 to 2.1. I am not sure if rF does much with slip curve values above a cumulative step of 1, but this will make sure.
The "DropoffFunction" is a new feature in the [SLIPCURVE] section. It's new!
It describes how the slip curve dropoff is affected when the peak of the slip curve changes. Ok
The peak of the slip curve may move to a smaller or larger slip when load or speed changes. Changes in load or speed may change the location of the peak of the slip curve left or right along the X axis. As an example, increase the load on the tyre and the location of the peak of the slip curve (probably) moves to the right.
When this happens, the slip curve is stretched or shrunk to match. So when the peak slip location is moved left or right, the whole curve is pushed and pulled in some way to match, without changing the essential shape or adding new bumps and valleys.
We knew this happened in F1C but had no way to manage the effect.
The DropoffFunction parameter allows you to affect the behavior beyond the peak when this happens:
There are two limits for how this reshaping could be managed;
Either a value some way to the right-hand end is fixed, and the curve after the peak is squashed or pulled into that available space,
Or all the points in the curve after the peak are shifted right by an amount proportional to the shift in the peak slip.
Whether the game goes that far is not described.
-1.0 = dropoff occurs faster when peak increases This sounds like the first alternate. Increase the load on the tyre, peak slip moves right, the rest of the curve is squished into a shorter space and so the slope of the curve after the peak is steeper.
0.0 = dropoff curve does NOT change shape when the peak changes An intermediate setting. Increase the load on the tyre, peak slip moves right, the rest of the curve after the peak moves right while maintaining the same shape, not stretched or shrunk.
1.0 = dropoff curve is stretched or shrunk with the rest of the curve,
which means the dropoff may feel more gradual as the peak increases. The second alternative. Increase the load on the tyre, peak slip moves right, the rest of the curve after the peak is stretched out proportionately, so if the peak slip moves 20% right, the back of the curve is 20% longer.
This is the default. Presumably what we had in F1C.
...
Using Niels' application theory numbers and doing some conjecturing-
Take a Longitudinal slip curve with x values from 0 to 2.0. Peak of y=1.0000 is at x=0.2 (11.5 deg.) at no load on the tyre. Add (arbitrary) load and (say) the peak moves to x=0.5 (30.0 deg.), an increase of 0.3.
- Set DropoffFunction (DOF) to -1.0 and the x axis still goes to 2.0. The back of curve is squashed into a smaller space and is steeper (falls off faster with increasing slip) as a result.
- Set DOF to 0.0 and the x axis now goes out to x=2.3. No change in shape of the back of the curve, no change in rate of dropoff.
- Set DOF to 1.0. Peak slip value has increased from 0.2 to 0.5, which is +150%. Max x value is increased accordingly to 5 and the curve is stretched to fit. Drop off is now much less steep.
This enables one to play with the relative shifting of the curve between lateral and longitudinal directions. I wonder if some of the issues around off-axis recovery behaviour depend upon these factors.
Related topic - the x-axis of the slip curve is the sin of the slip angle. For Lateral-only curves, there is no point in looking at actual x axis values greater than 1.0 or 90 degrees. Once past 90 deg, one is on the curve for rotation in the opposite direction.
About longitudinal slip:
Lateral slip results in the tyre's path of travel deviating from the longitudinal axis because the direction of slip is at right angles to that axis. This permits the concept of a slip angle, the included angle between the actual direction of movement and the longitudinal axis. The ratio of movement in the sideways slip direction to the amount of longitudinal travel is the sine of the included angle. Slip angles are easy and intuitive to envision.
Longitudinal slip takes place along the longitudinal axis. The ratio of slip to normal movement (the rotation of the wheel) is calculated in the same way as for lateral. It is simple, in that the included angle between direction of travel and direction of slip is zero and the concept of a slip 'angle' never arises. The amount of slip is the difference between the distance the wheel would travel with zero slip and the distance it actually travelled. The slip ratio - the values along the x axis of the ISI slip curve - is the slip distance divided by the distance the wheel would have travelled with no slippage.