For those training to be the Jedi of rFactor... But really Essentially this is for those who actually want to learn how to make REAL physics for a car in the future.. It's not an easy task. infact it's a monster. But it's very rewarding to drive a car you own in a game and have it feel EXACTLY like the car you drive every day of your life in real life to work and back and to the track and out sideways on the daily on 8 different touge passes within half an hour drive from me and have the tail of the dragon within 2 hours. Yes... the physics in that tutorial are from that car. The vid at akagi in the noisy tribes car was me driving that car on akagi mtn pass in japan at that moment. You can hear it in my expression that was a dry run of the car. Like first start up of it in that physics form to test how it felt to drive compaired to my real car. Then i had to drive it at teh dragon to see how it compaired because though you can hear me compaining about antu's dragon being bumpy and unbanked and elevated as it should because i'm just so used to the damn real deal..s gap lol. And no cherholla skyway to warm up on. Anyways, if you've ever wanted to really truely drive a car in real life and wondered what it was like.. Here you go. Become a master of this and you can drive any car you can find the 3d model for like you were driving it in real life.
This is a overview of rfactor phyiscs... I will explain in depth how to make realistic physics using my S13 as an example. Their are some area's i'm grey on and those will lack the in depth explanation. You'll get the important parts. THE MOST IMPORTANT PART IS TO RESEARCH!!! I cannot stress this enough you can find the information you need if you do enough research. To make a factory vehicle you will need these factory specs:
*Curb Weight - For Mass value in HDV
*Center of Gravity Height if available - For CGHeight value in HDV
*Dimensions: Length, width, height minus ride height (inner suspension height) - For Inertia calculation in HDV
*Weight Distribution front/rear and side to side - For CGRearRange and CGRightRange in HDV
*Pictures of the underside of the vehicle - For location of fuel tank, FuelTankPos in HDV
*Aero drag coefficient - for drag value in HDV
*an idea of where the front lip and rear wing are on the body in relation to the axles in meters - for fwcenter and rwcenter in HDV
*Front and rear track and the wheelbase - for respective values in HDV
*Front and rear sway bar diameters - For front and rear antiswayrange values in HDV
*Front and rear alignment specs including: Toe, caster, camber - For respective values in HDV
*maximum angle of the outside front tire at maximum steering lock - For value in HDV
*The type of differential the car came with and it's locking percent if applicable - For diff settings in HDV
*The amount of suspension travel - for bump and rebound travel values in HDV
*The ride height of the lower inner suspension points front and rear - For ride height values in HDV
*Spring rate values - for spring rate values in HDV
*Pictures of the spring/shocks front and rear without the wheel attached making the attachment points of the shock visible - For pushrod positions in HDV
*Front and rear brake disc thickness - for values in HDV
*Lots of pictures of the front and rear suspension arms and mount locations on body and spindle - For creation of PM file.
*A wheel torque dyno graph for the stock motor - for production of a engine file
*Gear ratio data for the stock gear box along with rear end gear - For creation of the gear file
*The stock wheel/tire sizes and brands available along with pictures and UTG Ratings and skidpad results etc - for TBC file
*specs on any upgrade parts - For upgrades.ini
------------------------------------------------------------------------------------------
To start out with all position values are (left/right, up/down, front/back) and all inertia values are (pitch, yaw, roll) and all range values are (starting point, incriment size, number of incriments)
[GENERAL]
Rules=0 // what rules to apply to garage setups (0=none, 1=stock car)
GarageDisplayFlags=34 // how settings are displayed in garage (add): 1=rear downforce value (vs. angle), 2=radiator (vs. grille tape), 4=more gear info, 8+16=front downforce/wing/splitter/air dam, 32+64=rear downforce/wing/spoiler
Mass=1250 //If your using a stock car you want to input the curb weight of the vehicle in kilograms (all units are metric).
Inertia=(2128, 2425, 432) // (Pitch, Yaw, Roll) all inertia except fuel. A car is basically a rectangle. I'm giong to make this simple otherwise it can be overwhelmingly complex of an equation. Road cars on average tend to have their wieght spread fairly evenly throughout the shape of that rectangle. Now here's where we need to know the dimensions of the body of the vehicle to put into this formula: Pitch = (Mass/12)*(Length*Length+Height*Height) In short the formulae is (M/12)*(Y²+Z²) or (M/12)*(L²+H²) Yaw = (M/12)*(Length²+Width²) Roll = (M/12)*(Height²+Width²) Now that is assuming the weight is evenly distributed. Which is the average situation now adays. But we need to also know what materials the car is made of and essentially how much extra reinforcing it has with them. A older car made of steel and iron will have more inertia than a supercar made of carbon fiber for example even if they weigh the same and are the same external size. So for an old tank of a car you can add a percentage (use common sense here) to all the values, and for a car with mainly carbonfiber/aluminum construction you can subtract a percentage (again use common sense in this matter) It is important to note here that the height in real life will have the ground clearance (ride height) in it and in rfactor you want to subtract that amount because the reference plane is the bottom of the chasis, not the ground.
FuelTankPos=(0.00, 0.10, 0.50) // location of tank relative to center of rear axle in reference plane
FuelTankMotion=(150.0,0.25) // simple model of fuel movement in tank (spring rate per kg, critical damping ratio)
Notes=""
Symmetric=1
DamageFile=Noisy_RPS13_Damage // .ini file to find physical and graphical damage info
CGHeight=0.350 // height of body mass (excluding fuel) above reference plane. Again remember the reference plane is the bottom of the chasis so to get the value for this in rfactor you need to find the COG of the real car and then subtract the ride height from that number and make sure your value is in meters. This data is not available for most cars so you will have to find a similar car that it is available for. .32 is very low for a sedan. .4 is very high. For a race car .3 is normal. In real life it is assumed that the COG is typically the same height as the crank shaft but for a car like the s13 this is not true because the motor sits so low in the chasis.
CGRightRange=(0.500, 0.005, 1) // fraction of weight on left tires
CGRightSetting=0
CGRearRange=(0.450, 0.005, 1) // fraction of weight on rear tires. This value means 45% rear 55% front distribution. The number of incriments being 1 means that it is not adjustable in game.
CGRearSetting=1
WedgeRange=(0.0, 0.25, 1) // rounds of wedge
WedgeSetting=0
WedgePushrod=0.0 // each round of wedge changes rear-left jacking screw by this amount (0.0 to disable, use Rules to allow FR ride height)
GraphicalOffset=(0.000, 0.0, 0.000) // does not affect physics! This just moves the vehicle body for whatever reasons you may have.
Undertray00=(0.75, 0.0080, -1.750) //These are the bottom out points of the chasis.
Undertray01=(-0.75, 0.0080, -1.750)
Undertray02=(0.40, 0.0080, -2.000)
Undertray03=(-0.40, 0.0080, -2.000)
Undertray04=(0.60, -0.0285, -0.800)
Undertray05=(-0.60, -0.0285, -0.800)
Undertray06=(0.60, -0.0185, 0.800)
Undertray07=(-0.60, -0.0185, 0.800)
Undertray08=(0.25, 0.0185, 2.175)
Undertray09=(-0.25, 0.0185, 2.175)
Undertray10=(0.65, 0.0185, 2.000)
Undertray11=(-0.65, 0.0185, 2.000)
Undertray12=(0.30, -0.0380, -1.2725)
Undertray13=(-0.30, -0.0380, -1.2725)
Undertray14=(0.30, -0.0380, 1.500)
UndertrayParams=(300000.0,14000.0,2.0) // spring/damper/friction of the above points when in contact with the ground.
TireBrand=240sx Tire.tbc // must appear before tire compound setting (references *.tbc file)
FrontTireCompoundSetting=2 // compound index within brand
RearTireCompoundSetting=2 // compound index within brand
FuelRange=(1.0, 1.0, 72)
FuelSetting=44
NumPitstopsRange=(0, 1, 4)
NumPitstopsSetting=3
Pitstop1Range=(1.0, 1.0, 72)
Pitstop1Setting=59
Pitstop2Range=(1.0, 1.0, 72)
Pitstop2Setting=49
Pitstop3Range=(1.0, 1.0, 72)
Pitstop3Setting=39
AIAimSpeedsPerWP=(25.0, 35.0, 45.0, 55.0, 70.0, 90.0, 110.0, 140.0) // speeds at which to look ahead X waypoints (spaced roughly 5 meters apart)
AICornerReductionBase=70.0 // (pointspeed/this number)= % deceleration we can expect through a point
AIMinPassesPerTick=3 // minimum passes per tick (can use more accurate spring/damper/torque values, but takes more CPU)
AIRotationThreshold=0.20 // rotation threshold (rads/sec) to temporarily increment passes per tick
AIEvenSuspension=0.0 // averages out spring and damper rates to improve stability (0.0 - 1.0)
AISpringRate=1.0 // spring rate adjustment for AI physics
AIDamperSlow=0.5 // contribution of average slow damper into simple AI damper
AIDamperFast=0.5 // contribution of average fast damper into simple AI damper
AIDownforceZArm=0.150 // hard-coded center-of-pressure offset from vehicle CG
AIDownforceBias=0.0 // bias between setup and hard-coded value (0.0-1.0)
AITorqueStab=(1.0, 1.0, 1.0) // torque adjustment to keep AI stable
AIFuelMult=-1.0 // PLR file override for AI fuel usage - only positive value will override, see PLR for default
AIPerfUsage=(-1.0, -1.0, -1.0) // PLR file overrides for (brake power usage, brake grip usage, corner grip usage) used by AI to estimate performance - only positive values will override, see PLR for defaults
AITableParams=(-1.0, -1.0) // PLR file overrides for (max load, min radius) used when computing performance estimate tables - only positive values will override, see PLR for defaults
FeelerFlags=0 // how collision feelers are generated (add): 1=box influence 2=reduce wall-jumping 4=allow adjustment hack 8=top directions
FeelerOffset=(0.0, 0.0, 0.0) // offset from cg to use when generating feelers
FeelersAtCGHeight=0 // whether corner and side feelers are automatically adjusted to CG height
FeelerFrontLeft=(0.754,0.207,-2.045) //These are collision points
FeelerFrontRight=(-0.754,0.207,-2.045)
FeelerRearLeft=(0.791,0.409,2.150)
FeelerRearRight=(-0.791,0.409,2.150)
FeelerFront=(0.000,0.253,-2.287)
FeelerRear=(0.000,0.415,2.253)
FeelerRight=(-0.843,0.231,0.000)
FeelerLeft=(0.843,0.231,0.000)
FeelerTopFrontLeft=(-0.527,1.020,-0.095)
FeelerTopFrontRight=(0.527,1.020,-0.095)
FeelerTopRearLeft=(-0.511,1.050,0.831)
FeelerTopRearRight=(0.511,1.050,0.831)
FeelerBottom=(0.000,-0.020,0.000)
[FRONTWING]
FWRange=(0.0, 0.0, 0) // front wing range, All set to 0 here because this car has no front lip and the bumper shape is neutral of downforce. Drag is accounted for in the body section.
FWSetting=1 // front wing setting
FWMaxHeight=(0.20) // maximum height to take account of for downforce
FWDragParams=(0.000, 0.0000, 0.0000) // base drag and 1st and 2nd order with setting. A value of 0.001 is noticeable here.
FWLiftParams=(-0.00000, -0.00, 0.00000)// base lift and 1st and 2nd order with setting. If the vehicle has a lip or cannard a negative value is downforce and a negave value of 0.1 is quite noticeable. -.2 is typically too much.
FWDraftLiftMult=1.25 // Locke: effect of draft on front wing's lift response (larger numbers will tend to decrease downforce when in the draft)
FWLiftHeight=(0.335) // effect of current height on lift coefficient
FWLiftSideways=(0.4) // dropoff in downforce with yaw (0.0 = none, 1.0 = max)
FWLiftPeakYaw=(0.0, 1.0) // Locke: angle of peak, multiplier at peak
FWLeft=(-0.005, 0.0, 0.0) // aero forces from moving left
FWRight=(0.005, 0.0, 0.0) // aero forces from moving right
FWUp=(0.0, -0.02, -0.001) // aero forces from moving up
FWDown=(0.0, 0.02, 0.001) // aero forces from moving down
FWAft=(0.0, 0.02, -0.02) // aero forces from moving rearwards
FWFore=(0.0, 0.0, 0.0) // aero forces from moving forwards (recomputed from settings)
FWRot=(0.05, 0.025, 0.075) // aero torque from rotating
FWCenter=(0.00, 0.00, -0.60) // center of front wing forces (offset from center of front axle in ref plane)
[REARWING]
RWRange=(0.0, 0.0, 0) // rear wing range. All 0 here because this car has no factory rear wing. These values are taken care of in the upgrades section.
RWSetting=0 // rear wing setting
RWDragParams=(0.000, 0.000, 0.00000) // base drag and 1st and 2nd order with setting
RWLiftParams=(0.000, 0.000, 0.00000)// base lift and 1st and 2nd order with setting was 2050
RWDraftLiftMult=1.05 // Locke: effect of draft on rear wing's lift response
RWLiftSideways=(0.25) // dropoff in downforce with yaw (0.0 = none, 1.0 = max)
RWLiftPeakYaw=(0.0, 1.0) // angle of peak, multiplier at peak
RWLeft=(-0.005, 0.0, 0.0) // aero forces from moving left
RWRight=(0.005, 0.0, 0.0) // aero forces from moving right
RWUp=(0.0, -0.02, -0.001) // aero forces from moving up
RWDown=(0.0, 0.02, 0.001) // aero forces from moving down
RWAft=(0.0, 0.02, -0.02) // aero forces from moving rearwards
RWFore=(0.0, 0.0, 0.0) // aero forces from moving forwards (recomputed from settings)
RWRot=(0.18, 0.12, 0.12) // aero torque from rotating
RWCenter=(0.00, 0.70, 1.0) // center of rear wing forces (offset from center of rear axle at ref plane)
[BODYAERO]
BodyDragBase=(0.350) // base drag. This is the drag coefficient of the vehicle in stock form. Wing drag gets added to this.
BodyDragHeightAvg=(0.08) // drag increase with average ride height.
BodyDragHeightDiff=(0.31) // drag increase with front/rear ride height difference
BodyMaxHeight=(0.25) // maximum ride height that affects drag/lift
BodyLeft=(-0.7, 0.1, 0.0) // aero forces from moving left
BodyRight=(0.7, 0.1, 0.0) // aero forces from moving right
BodyUp=( 0.0,-1.5, 0.0) // aero forces from moving up
BodyDown=( 0.0, 1.5, 0.0) // aero forces from moving down
BodyAft=( 0.0, 0.20, -0.90) // aero forces from moving rearwards
BodyFore=(0.000,0.072,0.000) // aero forces from moving forwards (lift value important, but drag overwritten)
BodyRot=(3.0, 2.5, 1.0) // aero torque from rotating. These values should be affected by the lenth and side height and squareness of the vehicle. The values represent torque at 90*, torque at 45* and torque at 0*. A larger number will make the car want to straighten out more the faster you go.
BodyCenter+=(0.0, 0.3, 0.05) // center of body aero forces (offset from center of rear axle at ref plane)
RadiatorRange=(100.0, -5.0, 1) // radiator range (front grille tape)
RadiatorSetting=2 // radiator setting
RadiatorDrag=(0.0) // effect of radiator setting on drag
RadiatorLift=(0.0) // effect of radiator setting on lift
BrakeDuctRange=(0.0, 1.0, 1) // brake duct range
BrakeDuctSetting=0 // brake duct setting
BrakeDuctDrag=(0.0) // effect of brake duct setting on drag
BrakeDuctLift=(0.0)
[SUSPENSION]
PhysicalModelFile=Noisy_RPS13.pm
FixInnerSuspHeight=-1 // instead of moving inner susp height relative with ride height, use this offset (set to -1 for original behavior) -1 is correct as it means that the ride height of the vehicle is the same height as the lowest point in the inner suspension arms.
ApplySlowToFastDampers=1 // whether to apply slow damper settings to fast damper settings
AdjustSuspRates=1 // adjust suspension rates due to motion ratio
AlignWheels=1 // correct for minor graphical offsets
CenterWheelsOnBodyX=1 // correct for minor unintentional graphical offsets
FrontWheelTrack=1.465 // For a stock vehicle you will want to input this information. Or if you have track increment upgrades, otherwise this can be left to 0 to allow the track value to assume its graphical location instead of being physically overwritten by these values
RearWheelTrack=1.46
LeftWheelBase=2.475
RightWheelBase=2.475
SpringBasedAntiSway=0 // 0=diameter-based, 1=spring-based
AllowNoAntiSway=1 // Whether first setting gets overridden to mean no antisway bar
FrontAntiSwayBase=0.0 //This is extra anti-sway. Unmeasureable in real life so best to be left to 0.
FrontAntiSwayRange=(0.025, 0.0, 2) //This is the size of the sway bars, increment and number of increments. Here because allownoantisway=1 the first value is 0 and the second is 0.025.
FrontAntiSwaySetting=1
FrontAntiSwayRate=(6.2e10, 4) // (base, power), so rate = base * (diameter in meters ^ power) This is the rate formula for typical stock hollow/tubular steel sway bars. Power is always 4. For solid steel bars base is 1.1e11.
RearAntiSwayBase=0.0 // extra anti-sway from tube twisting
RearAntiSwayRange=(0.017, 0.002, 2)
RearAntiSwaySetting=1
RearAntiSwayRate=(6.2e10, 4) // (base, power), so rate = base * (diameter in meters ^ power)
FrontToeInRange=(-0.45, 0.01, 56) //First value is starting degrees, then the degree change per increment, and number of increments.
FrontToeInSetting=44 //The increment number that is defaulted to in the garage
RearToeInRange=(-0.20, 0.01, 31)
RearToeInSetting=21
LeftCasterRange=(6.5, 0.1, 1) // front-left caster
LeftCasterSetting=36
RightCasterRange=(6.5, 0.1, 1) // front-right caster
RightCasterSetting=36
[CONTROLS]
SteeringFFBMult=2.0 // vehicle-specific multiplier by steering force feedback
SteerLockRange=(37,0,1) // This is the stock steering angle of the outside front tire at full lock.
SteerLockSetting=0
RearBrakeRange=(0.400, 0.005, 1) //This means that you have 40% braking power to the rear 60% to the front
RearBrakeSetting=1
BrakePressureRange=(1.0, 0.05, 1)
BrakePressureSetting=1
HandbrakePressRange=(0.75, 0.05, 1) // handbrake pressure, for a cable pull hand brake this is typically around 85% of the rear braking power. Hydro setups can be up to 150%
HandbrakePressSetting=1
Handbrake4WDRelease=0.0
UpshiftAlgorithm=(0.970,0.0) // fraction of rev limit to auto-upshift, or rpm to shift at (if 0.0, uses rev limit algorithm)
DownshiftAlgorithm=(0.900,0.830,0.600) // high gear downshift point, low gear downshift point, oval adjustment
AutoUpshiftGripThresh=0.44 // auto upshift waits until all driven wheels have this much grip (reasonable range: 0.4-0.9)
AutoDownshiftGripThresh=0.42 // auto downshift waits until all driven wheels have this much grip (reasonable range: 0.4-0.9)
TractionControlGrip=(0.0, 0.0) // average driven wheel grip multiplied by 1st number, then added to 2nd
TractionControlLevel=(0.0, 0.0) // TC On/Off only for this car // effect of grip on throttle for low TC and high TC
ABS4Wheel=0 // 0 = old-style single brake pulse, 1 = more effective 4-wheel ABS
ABSGrip=(0.00, 0.00) // grip multiplied by 1st number and added to 2nd
ABSLevel=(0.00, 0.00) // effect of grip on brakes for low ABS and high ABS
OnboardBrakeBias=0
[ENGINE]
Normal=Engines/Engine_KA24DE_Stock.ini // unrestricted engine
RestrictorPlate=Engines/Engine_KA24DE_Stock.ini // restrictor plate engine
GeneralTorqueMult=1 //This is an important value in upgrading. Having this value here allows for us to modify it for engine performance upgrading. This multiplies the torque values of the motor all by it's value. Because it operates with the power multiplier this only affects the torque till the point that peak torque is achieved and gradually dicipates
GeneralPowerMult=1 //This is the horsepower only increase so from the peak torque on is affected by this value.
[DRIVELINE]
ClutchInertia=0.0215 //This is the rotational inertia of not only the clutch but the entire driveline from the clutch to the driven wheels.
ClutchTorque=320.0 //The amount of torque in N-M that the clutch can hold.
ClutchWear=0.0
ClutchFriction=0.0 //Assuming you took your Engine data from a WHP torque curve like you should have all friction values in the driveline should be 0. If you used crank torque then you would have to calculate this along with the wheel specific friction values to get a 18% total loss in power for a rear wheel drive vehicle and a 24% loss in a AWD and a 12% loss in a FWD.
ClutchEngageRate=0.4 // how quickly clutch is engaged with auto-clutch driving aid
BaulkTorque=300.0 //Honestly not sure what this really means but it's always a tiny bit lower than clutch torque for some reason so i leave it that way.
AllowManualOverride=1
SemiAutomatic=0
UpshiftDelay=0.25
UpshiftClutchTime=0.0
UpshiftLiftThrottle=0.0
DownshiftDelay=0.25
DownshiftClutchTime=0.15
DownshiftBlipThrottle=0.65
WheelDrive=REAR
GearFile=Noisy_S13_KA_Gears.ini // Must come before final/reverse/gear settings!
AllowGearingChanges=0 // cannot change stock ratios until one buys a tranny upgrade
AllowFinalDriveChanges=1 // cannot change stock ratio until one buys a diff upgrade
FinalDriveSetting=2 // indexed into GearFile list
ReverseSetting=0
ForwardGears=5
Gear1Setting=0
Gear2Setting=1
Gear3Setting=2
Gear4Setting=3
Gear5Setting=4
DiffPumpTorque=0.0 // at 100% pump diff setting, the torque redirected per wheelspeed difference in radians/sec (roughly 1.2kph). Only high end diffs like those in indy cars and rally cars have pump diffs.
DiffPumpRange=(0.00, 0.00, 0) // differential acting on all driven wheels
DiffPumpSetting=0
DiffPowerRange=(0.00 ,0.00, 1) // fraction of power-side input torque transferred through diff. 0 is open, 1 is locked.
DiffPowerSetting=1 // (not implemented for four-wheel drive)
DiffCoastRange=(0.0, 0.00, 1) // fraction of coast-side input torque transferred through diff. A 1 way will always have this 0, a 1.5 way will have this value half of the power value, a 2 way will be equal to the power value.
DiffCoastSetting=1 // (not implemented for four-wheel drive)
DiffPreloadRange=(0.0, 0.0, 1) // preload torque that must be overcome to have wheelspeed difference
DiffPreloadSetting=1 // (not implemented for four-wheel drive)
[FRONTLEFT]
BumpTravel=-0.10 // This is the lowest the car can be to the ground before hitting the bump stop. When the suspension is to the point that the chasis by this wheel is at this value above the ground it will hit the stop.
ReboundTravel=-0.320 // This is the highest the car can be above the ground before maxxing out the suspension travel and the wheel coming off the ground. Note that the total of bumptravel minus rebound travel should equal the shock travel of the vehicle. The rideheight setting should be somewhere in between the two values otherwise their will be trouble.
BumpStopSpring=280000.0 // initial spring rate of bumpstop
BumpStopRisingSpring=1.20e7 // rising spring rate of same (multiplied by deflection squared)
BumpStopDamper=2000.0 // initial damping rate of bumpstop
BumpStopRisingDamper=9.00e5 // rising damper rate of same (multiplied by deflection squared)
BumpStage2=0.025 // speed where damper bump moves from slow to fast These have to do with the shape of the shock dyno curve. This is where the curve bends.
ReboundStage2=-0.025 // speed where damper rebound moves from slow to fast
FrictionTorque=0 // Newton-meters of friction between spindle and wheel. Again assuming you made your engine from wheel torque values and not crank values this should be 0.
SpinInertia=1.650 // inertia in pitch direction including any axle but not brake disc
CGOffsetX=0.000 // x-offset from graphical center to physical center (NOT IMPLEMENTED)
PushrodSpindle=(-0.12, 0.00, 0.0)// spring/damper connection to spindle or axle (relative to wheel center). This is very very very very very important. This is the position of the shock on the vehicle in relation to this wheels center. If you cannot measure this on the real car find pictures that show the connection points of the shock (pushrod) to the spindle or suspension arm for this value and the body for the next value. The angle and distance of the relationship between the two sets of values will determine the motion ratio of that spring/shock.
PushrodBody=(-0.18, 0.46, 0.06) // spring/damper connection to body (relative to wheel center)
CamberRange=(-0.5, 0.5, 1) //Camber angle. Stock vehicles are not very adjustable.
CamberSetting=15
PressureRange=(120.0, 2.0, 131) //Tire preasure in KPA. Default setup should put you in the middle of the range that is correct for the default tires of the vehicle.
PressureSetting=55
PackerRange=(0.000, 0.001, 1) //Race cars sometimes use these.
PackerSetting=1
SpringMult=1.00 // take into account suspension motion if spring is not attached to spindle (affects physics but not garage display) If spring is attached to the spindle it should be 1.0. To calculate the motion ratio if it is not you need to measure the arm the spring is on and what percentage of distance down the arm the spring is to the spindle. If the spring is 70% of the way from the body connection to the spindle the value here would be 0.7
SpringRange=(17862.0, 0.0, 1) //The spring rate in N-M of the stock springs.
SpringSetting=1
RideHeightRange=(0.180, 0.005, 1) //The factory ride height (height of the inner suspension connections at factory height.
RideHeightSetting=1
DamperMult=1.00 // take into account suspension motion if damper is not attached to spindle (affects physics but not garage display). Same thing as with spring but for the shock.
SlowBumpRange=(5000.0, 0, 1) //These represent a normal shock matched to a 2kg/mm spring from the factory.
SlowBumpSetting=1
FastBumpRange=(2000.0, 0, 1)
FastBumpSetting=1
SlowReboundRange=(12000.0, 0, 1)
SlowReboundSetting=1
FastReboundRange=(3000.0, 0.0, 1)
FastReboundSetting=1
BrakeDiscRange=(0.024, 0.000, 0) // disc thickness
BrakeDiscSetting=0
BrakePadRange=(0, 1, 5) // pad type (not implemented)
BrakePadSetting=2
BrakeDiscInertia=3.0 // inertia per meter of thickness. take into account the actual thickness of the brake rotor. This value should be the inertia of a meter of brake rotor material at the same diameter of the brake rotor.
BrakeResponseCurve=(-20,20,160,200) //Locke: cold temperature (where brake torque is half optimum), min temp for optimum brake torque, max temp for optimum brake torque, and overheated temperature (where brake torque is half optimum)... These values are given by brake pad manufacturers all the time. These are typical factory replacement pad values.
BrakeWearRate=1.215e-011 // meters of wear per second at optimum temperature
BrakeFailure=(1.33e-002,7.20e-004) // average and variation in disc thickness at failure
BrakeTorque=1682.0 // maximum brake torque at zero wear and optimum temp. This should be set by feel based on the tires used. If the vehicle can lock up a tire but at almost full effort then the same should be true in game assuming the tire is the same as what was used in real life.
BrakeHeating=0.0003 // heat added linearly with brake torque. consider if you have a single or vented type rotor here.
BrakeCooling=(0.006,0.0004) // minimum brake cooling rate (static and per unit velocity). Again single or vented matters.
BrakeDuctCooling=2.000e-004 // brake cooling rate per brake duct setting
BrakeGlow=(450.0,900.0) //temperature range (in Celsius) that brake glow ramps up
I've cut out some sections as they are not necessary for the purpose of this guide.
------------------------------------------------------------------------------------------------
Next is the PM file. This is the physical suspension model that the above HDV file is calling for. Open suspension files with suspension editor 2. That way it is like making the suspension in notepad but with a 3d viewer. If viewed from susp edit 2 you will see that this suspension is a prime example of mcpherson front and double a arm rear. You want the suspension to look the same in susp editor 2 as it does in real life. The best way to do this is measure the connection points at both ends of every arm of your suspension and input the data. That is what i did here. Of course sometimes the best you can do is finding pictures of it. In that case do the best you can. Remember ackerman of the steering arms and camber/caster/toe changes with travel caused by the physical movement of the suspension. Also remember that rfactor has NO RUBBER BUSHINGS so not every suspension design is compatible. For example most 4 links are not useable in rfactor and have to be represented by 3 links instead. Also mcpherson has to be emulated by either making both upper and lower arms identical and very close together or by making the upper arm at the top of the pushrod (assuming you made the pushrod values correct) and perpendicular to it. Longer upper arms would be ideal as well. I made mine too short and i'll have to fix that eventually.
//////////////////////////////////////////////////////////////////////////
//
// Conventions:
//
// +x = left
// +z = rear
// +y = up
// +pitch = nose up
// +yaw = nose right
// +roll = right
//
// [BODY] - a rigid mass with mass and inertial properties
// [JOINT] - a ball joint constraining an offset of one body to an
// offset of another body (eliminates 3 DOF)
// [HINGE] - a constraint restricting the relative rotations of two
// bodies to be around a single axis (eliminates 2 DOF).
// [BAR] - a constraint holding an offset of one body from an offset of
// another body at a fixed distance (eliminates 1 DOF).
// [JOINT&HINGE] - both the joint and hinge constraints, forming the
// conventional definition of a hinge (eliminates 5 DOF).
//
//////////////////////////////////////////////////////////////////////////
// Body including all rigidly attached parts (wings, barge boards, etc.)
[BODY]
name=body mass=(0.0) inertia=(000.0,0.0,0.0)
pos=(0.0,0.0,0.0) ori=(0.0,0.0,0.0)
Mass and inertia are in the HDV so are not needed here. The bottom of the body is the reference plane so ofcourse the position is 0.
// Front spindles
[BODY]
name=fl_spindle mass=(8.0) inertia=(0.0275,0.0260,0.0245)
pos=( 0.635,0.0,-1.2375) ori=(0.0,0.0,0.0)
Obviously you cannot weigh these parts and get their inertia so this must all be assumed/judged.
[BODY]
name=fr_spindle mass=(8.0) inertia=(0.0275,0.0260,0.0245)
pos=(-0.635,0.0,-1.2375) ori=(0.0,0.0,0.0)
// Front wheels
[BODY]
name=fl_wheel mass=(19.0) inertia=(1.25,0.70,0.70)
pos=( 0.732,0.0,-1.2375) ori=(0.0,0.0,0.0)
[BODY]
name=fr_wheel mass=(19.0) inertia=(1.25,0.70,0.70)
pos=(-0.732,0.0,-1.2375) ori=(0.0,0.0,0.0)
/// Rear Spindles
[BODY]
name=rl_spindle mass=(8.5) inertia=(0.086,0.079,0.073)
pos=(0.68,0.0,1.2375) ori=(0.0,0.0,0.0)
[BODY]
name=rr_spindle mass=(8.5) inertia=(0.086,0.079,0.073)
pos=(-0.68,0.0,1.2375) ori=(0.0,0.0,0.0)
// Rear wheels
[BODY]
name=rl_wheel mass=(22.0) inertia=(1.45,0.83,0.83)
pos=( 0.73,0.0,1.2375) ori=(0.0,0.0,0.0)
[BODY]
name=rr_wheel mass=(22.0) inertia=(1.45,0.83,0.83)
pos=(-0.73,0.0,1.2375) ori=(0.0,0.0,0.0)
// Fuel in tank is not rigidly attached - it is attached with springs and
// dampers to simulate movement. Properties are defined in the HDV file.
[BODY]
name=fuel_tank mass=(1.0) inertia=(1.0,1.0,1.0)
pos=(0.0,0.0,0.0) ori=(0.0,0.0,0.0)
// Driver's head is not rigidly attached, and it does NOT affect the vehicle physics.
// Position is from the eyepoint defined in the VEH file, while
// other properties are defined in the head physics file.
[BODY]
name=driver_head mass=(5.0) inertia=(0.02,0.02,0.02)
pos=(0.0,0.0,0.0) ori=(0.0,0.0,0.0)
//////////////////////////////////////////////////////////////////////////
//
// Constraints
//
//////////////////////////////////////////////////////////////////////////
//Simulated Strut Suspension
// Front wheel and spindle connections
[JOINT&HINGE]
posbody=fl_wheel negbody=fl_spindle pos=fl_wheel axis=(-1.0,0.0,0.0)
[JOINT&HINGE]
posbody=fr_wheel negbody=fr_spindle pos=fr_wheel axis=( 1.0,0.0,0.0)
Notice how the axis positions are the same as half the wheel track. This is the way isi does it and seems correct. The other option would be to have these both 1.0/-1.0. Not sure honestly which is correct. Cannot find information on these axis values. Which is correct depends on whether is the position of the axis or the spin of it. I tend to think it's the rotation axis making 1/-1 correct.
// Front left suspension (2 A-arms + 1 steering arm = 5 links)
[BAR] // forward upper arm
name=fl_fore_upper posbody=body negbody=fl_spindle pos=(0.30,0.44,-1.2775) neg=(0.55,0.46,-1.1775)
These are all fairly self explanitory. Its the front left forward upper arm, pos= body attachment, neg= spindle attachment
[BAR] // rearward upper arm
posbody=body negbody=fl_spindle pos=(0.30,0.44,-1.0775) neg=(0.55,0.46,-1.1775)
[BAR] // forward lower arm
posbody=body negbody=fl_spindle pos=(0.370,-0.09,-1.5325) neg=(0.65,-0.10,-1.2375)
[BAR] // rearward lower arm
name=fl_fore_lower posbody=body negbody=fl_spindle pos=(0.330,-0.08,-1.2725) neg=(0.65,-0.10,-1.2375)
[BAR] // steering arm (must be named for identification)
name=fl_steering posbody=body negbody=fl_spindle pos=(0.30,-0.08,-1.1575) neg=(0.620, -0.10,-1.1175)
These are critical. The neg positions are espectially important, as i said if the angle of the steering knuckle is increased by the neg x value being decreased then so is the ackerman and the inside wheel will turn sharper thanthe outside wheel. Also the angle of the arm to the ground matters as this will affect bump steer.
I'm cutting out the other front wheel and both rear wheels because they are not necessary for the purpose of this guide.
------------------------------------------------------------------------------------------------
Next we will look at the engine file. This is the Stock KA24DE and was created using rear wheel power and torque dyno charts. This file should be viewed with the rFactor physics editor which will show you a graphic view of the curve.
// Engine data generated by PhysicsEditor
RPMTorque=( 0.0, 0.0, 0.0) // At 0 rpm you have no torque, and no compression torque.
RPMTorque=( 250.0, -12.7, 32.4)
RPMTorque=( 500.0, -15.5, 64.2)
RPMTorque=( 750.0, -18.2, 95.5)
RPMTorque=( 1000.0, -21.0, 126.1)
RPMTorque=( 1250.0, -23.7, 145.2)
RPMTorque=( 1500.0, -26.4, 159.8)
RPMTorque=( 1750.0, -29.1, 172.6)
RPMTorque=( 2000.0, -31.8, 178.7)
RPMTorque=( 2250.0, -34.4, 183.4)
RPMTorque=( 2500.0, -37.0, 181.4)
RPMTorque=( 2750.0, -39.6, 181.4)
RPMTorque=( 3000.0, -42.2, 179.4)
RPMTorque=( 3250.0, -44.5, 176.0)
RPMTorque=( 3500.0, -47.0, 183.4)
RPMTorque=( 3750.0, -49.3, 186.8)
RPMTorque=( 4000.0, -51.7, 192.2)
RPMTorque=( 4250.0, -53.8, 195.6)
RPMTorque=( 4500.0, -56.1, 193.6)
RPMTorque=( 4750.0, -58.1, 189.5)
RPMTorque=( 5000.0, -60.2, 183.4)
RPMTorque=( 5250.0, -62.0, 176.0)
RPMTorque=( 5500.0, -64.0, 165.1)
RPMTorque=( 5750.0, -65.6, 152.8)
RPMTorque=( 6000.0, -67.3, 142.0)
RPMTorque=( 6250.0, -68.8, 130.5)
RPMTorque=( 6500.0, -70.3, 119.0)
RPMTorque=( 6750.0, -71.6, 102.5)
RPMTorque=( 7000.0, -72.9, 85.3)
RPMTorque=( 7250.0, -73.9, 63.6)
RPMTorque=( 7500.0, -75.0, 33.0) //Compression torque should increase at a steady rate. This is the amount of engine braking that the car has and the values here represent a typical 4 cylinder with 9.5:1 compression. The final value would be higher given higher rpm, higher compression ratio, or more cylinders. Torque should be done using physics editor and should follow the same path as the real results.
FuelConsumption=3.810e-05 // Amount of fuel the engine consumes, affected by throttle position and engine speed
FuelEstimate=1.07 // fudge factor for differences between vehicle types (used for lap estimates and AI pit scheduling)
EngineInertia=0.16500 // rotational inertia of engine components. This will increase with a larger motor or more cylinders and decrease with ligher flywheels, pully's cranks, etc.
IdleThrottle=1 // throttle multiplier to help maintain idle speed
IdleRPMLogic=(650, 850) // attempt to maintain idle speed between these RPMs
LaunchEfficiency=0 // efficiency (0.0-1.0) of launch control, or 0.0 if N/A
LaunchRPMLogic=(3500, 4250) // holds RPM in this range before launch (used for AI even if launch control is N/A!) For this motor this is the ideal launch range.
RevLimitRange=(7100, 0.0, 0.0) //This is the rev limit range. This motor is stock so it is not adjustable.
RevLimitSetting=0
RevLimitLogic=0 // RPM range around current setting where rev limiter operates. This is how much the limiter will bounce. A lower number = more bouncing. A higher number will allow the limiter to evenly hold the engine at that rpm more easily.
RevLimitAvailable=1 // whether to use a rev limit (if 0, you still must have a "rev limit", just make it 40000 or so, and make sure to change [CONTROLS]->UpshiftAlgorithm to fix shifting points)
EngineMapRange=(0, 0.0, 0.0) // 0 = most driveable, max = most power (low gears only) (unimplemented)
EngineMapSetting=0
EngineBrakingMapRange=(0, 0.0, 0.0) // input throttle is ranged from minimum to 100%, with the minimum = setting * step * RPM, This motor is stock so it doesnt have any engine brake mapping.
EngineBrakingMapSetting=0 // the default is 1 * 0.000133 * 15000 RPM = 2% applied throttle at zero input throttle
EngineBoostRange=(0, 0.0, 0.0) //This will increase power or decrease depending on the boosteffects and boosttorque/power settings. This does not work properly in rfactor so please avoid using boost settings in game like the plague.
EngineBoostSetting=0
BoostEffects=(0, 0.0, 0.0) // RPM increase per setting, fuel increase per setting, engine wear rate per setting. Again avoid using these like the plague. RPM increase only works VIA the boosttorque/power values. If they are 0, then everything is 0.
BoostTorque=0 // % torque change per setting (applies to all RPMs) Again these do not work properly, a value of 0.0003 here or 0.03% makes a big difference as boost setting is increased. Not correct at all.
BoostPower=0 // % horsepower change per setting
OptimumOilTemp=100.50 // degrees celcius for optimum power
CombustionHeat=50 // degrees Celsius added per liter of fuel burned This is a good value for a N/A 4 cylinder. every additional cylinder add about 5 to this value. If turbo = lower compression then reduce this value by 10.
EngineSpeedHeat=8.000e-04 // heat added linearly with engine speed
OilMinimumCooling=0.00440 // heat dissipated without oil/water transfer
OilWaterHeatTransfer=(0.14000, 7.990e-05) // heat transfer from oil to water (base, w/ engine speed)
WaterMinimumCooling=0.00300 // base heat dissipated without velocity
RadiatorCooling=(2.400e-06, 4.400e-06) // cooling rate with velocity (base, per setting)
LifetimeEngineRPM=(3000, 4000) // (base engine speed for lifetime, range where lifetime is halved)
LifetimeOilTemp=(120, 20) // (base oil temp for lifetime, range where lifetime is halved)
LifetimeAvg=1296000 // average lifetime in seconds
LifetimeVar=2000 // lifetime random variance
EngineEmission=(0, 0.5000, -2.6000) // where flames and smoke are emitted (relative to ref frame at rear axle)
EngineSound=(0.30000, 0.6000, -2.6000) // where engine sound is played (relative to ref frame at rear axle)
SpeedLimiter=0 // whether vehicle has a pitlane speed limiter
OnboardStarter=1 // whether vehicle restarts when stalled
StarterTiming=(1.40, 2.0, 2.0) // average and variable cranking time, then time to blend with starting sound
---------------------------------------------------------------------------------------------
Next we will take a look at gear ratio creation. This is done in notepad and is controlled by the HDV gear values. The number is the ratio in this file that it is using for that gear. This is the stock gear box so it is non adjustable. As any stock type gear box is. Look up the ratio values and then move the decimal 3 places and divide by 1,000 for that gear. Easy as pie. Note that reverse is using the same ratio as first in this case because it's just easier that way and who cares about the exact value of reverse anyways lol.
//S13 stock box
//
[GEAR_RATIOS]
ratio=(1000, 3222) // 3.222
ratio=(1000, 1900) // 1.900
ratio=(1000, 1308) // 1.308
ratio=(1000, 1000) // 1.000
ratio=(1000, 759) // 0.759
[FINAL_DRIVE]
bevel=(1, 1)
ratio=(1000, 4083) // 4.083
----------------------------------------------------------------------------------------------
Next we will look at the MONSTER that is tire physics... this is the really hard work that i have done for you unless you need a tyre brand not listed or a size not given. Then you'll have to apply this reasoning to make that tire to these standards. I use Kangaloosh to create my slipcurves but that is ALL i use it for. Kangaloosh will ruin all the rest of the values so you must use a dummy mod to put the tire file in to create the curve then transfer the curve from that dummy mod to the actual tire file you wish to use it on. You can also use physics editor for this purpose but i tend to like the way kangaloosh makes curves so i use it.
// Tire brand found in *.hdv files refer to file name.
//
// 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 value used to stretch or shrink the curve after the peak angle. A // setting of 1 will mean that the values after the peak are all brought in to a lower slip // value and occur faster, a value of -1 will do the opposite. If you made the curve to the // correct shape and peak angle this is completely unnecessary and should be left at 0.
[SLIPCURVE]
Name="Accel"
Step=0.003 //This slip step means that this curves peak grip is at just over 2 percent. Longitudinal curves go by slip percent instead of degree like a lateral curve would.
DropoffFunction=0
Data:
0.000000 0.189889 0.348457 0.481725 0.594121 0.688661 0.767736 0.833175 0.886392 0.928440
0.960276 0.982504 0.995642 1.000000 0.998349 0.992577 0.981439 0.965387 0.949487 0.939109
0.934718 0.932220 0.931092 0.930461 0.930018 0.929676 0.929395 0.929158 0.928953 0.928772
0.928609 0.928461 0.928326 0.928202 0.928087 0.927980 0.927879 0.927784 0.927695 0.927611
0.927531 0.927455 0.927382 0.927312 0.927245 0.927181 0.927120 0.927061 0.927004 0.926949
0.926895 0.926844 0.926794 0.926745 0.926698 0.926653 0.926608 0.926565 0.926522 0.926481
0.926441 0.926401 0.926362 0.926325 0.926287 0.926251 0.926216 0.926180 0.926146 0.926112
0.926079 0.926046 0.926014 0.925982 0.925950 0.925919 0.925888 0.925857 0.925827 0.925797
0.925767 0.925738 0.925708 0.925678 0.925649 0.925619 0.925590 0.925560 0.925530 0.925500
0.925470 0.925438 0.925407 0.925374 0.925340 0.925305 0.925267 0.925227 0.925180 0.925123
0.925070 0.924954 0.924906 0.924869 0.924838 0.924810 0.924785 0.924762 0.924740 0.924720
0.924701 0.924682 0.924665 0.924648 0.924632 0.924616 0.924600 0.924586 0.924571 0.924557
0.924543 0.924530 0.924516 0.924504 0.924491 0.924478 0.924466 0.924454 0.924442 0.924430
0.924419 0.924407 0.924396 0.924385 0.924374 0.924363 0.924353 0.924342 0.924332 0.924321
0.924311 0.924301 0.924291 0.924281 0.924271 0.924261 0.924251 0.924241 0.924232 0.924222
0.924213 0.924203 0.924194 0.924185 0.924175 0.924166 0.924157 0.924148 0.924139 0.924130
0.924121 0.924112 0.924103 0.924094 0.924086 0.924077 0.924068 0.924060 0.924051 0.924042
0.924034 0.924025 0.924017 0.924008 0.923999 0.923991 0.923983 0.923974 0.923966 0.923957
0.923949 0.923941 0.923932 0.923924 0.923916 0.923907 0.923899 0.923891 0.923883 0.923874
0.923866 0.923858 0.923850 0.923842 0.923833 0.923825 0.923817 0.923809 0.923801 0.923792
0.923784 0.923792 0.923801 0.923809 0.923817 0.923825 0.923833 0.923842 0.923850 0.923858
0.923866
If viewed from a program like kangaloosh or phsyics editor you will notice the shape of this curve is a nice even parabol that gets cut off on the drop off at 0.925. Tires physics are the physics of their pneumatic trails. The grip will increase linearly with slip untill the sidewalls of the tires begin to flex and the shape of the contact patch begins to curve. Rubber has two grip values, static and sliding. As the contact patch begins to curve more and more of it is sliding. At the peak of the curve, half of the contact patch is slipping. As the slip percent goes beyond this point the slip grip starts to take over untill the whole contact patch is sliding and the grip of the tire is now = to the slip grip of its rubber compound. This is typically around 0.075 less than the peak grip which should always be 1.0. The peak angle of the curve should always be around the middle to lower end of the peak angle of the tire because of the way rfactor stretches the curve to match the current peak for the tire and the affects that has on aligning torque are quite noticeable. In kangaloosh you can see a visual of this that will show you just how distorted the curve can become as it's stretched and pulled out of proportion by the physics engine. Settings these step values correctly will solve the problem. Note that only 2 curves were required here but i left 3 because i had already set up the tire brands to look for 3 different curves.
[SLIPCURVE]
Name="Decel"
Step=0.003
DropoffFunction=0
Data:
0.000000 0.189889 0.348457 0.481725 0.594121 0.688661 0.767736 0.833175 0.886392 0.928440
0.960276 0.982504 0.995642 1.000000 0.998349 0.992577 0.981439 0.965387 0.949487 0.939109
0.934718 0.932220 0.931092 0.930461 0.930018 0.929676 0.929395 0.929158 0.928953 0.928772
0.928609 0.928461 0.928326 0.928202 0.928087 0.927980 0.927879 0.927784 0.927695 0.927611
0.927531 0.927455 0.927382 0.927312 0.927245 0.927181 0.927120 0.927061 0.927004 0.926949
0.926895 0.926844 0.926794 0.926745 0.926698 0.926653 0.926608 0.926565 0.926522 0.926481
0.926441 0.926401 0.926362 0.926325 0.926287 0.926251 0.926216 0.926180 0.926146 0.926112
0.926079 0.926046 0.926014 0.925982 0.925950 0.925919 0.925888 0.925857 0.925827 0.925797
0.925767 0.925738 0.925708 0.925678 0.925649 0.925619 0.925590 0.925560 0.925530 0.925500
0.925470 0.925438 0.925407 0.925374 0.925340 0.925305 0.925267 0.925227 0.925180 0.925123
0.925070 0.924954 0.924906 0.924869 0.924838 0.924810 0.924785 0.924762 0.924740 0.924720
0.924701 0.924682 0.924665 0.924648 0.924632 0.924616 0.924600 0.924586 0.924571 0.924557
0.924543 0.924530 0.924516 0.924504 0.924491 0.924478 0.924466 0.924454 0.924442 0.924430
0.924419 0.924407 0.924396 0.924385 0.924374 0.924363 0.924353 0.924342 0.924332 0.924321
0.924311 0.924301 0.924291 0.924281 0.924271 0.924261 0.924251 0.924241 0.924232 0.924222
0.924213 0.924203 0.924194 0.924185 0.924175 0.924166 0.924157 0.924148 0.924139 0.924130
0.924121 0.924112 0.924103 0.924094 0.924086 0.924077 0.924068 0.924060 0.924051 0.924042
0.924034 0.924025 0.924017 0.924008 0.923999 0.923991 0.923983 0.923974 0.923966 0.923957
0.923949 0.923941 0.923932 0.923924 0.923916 0.923907 0.923899 0.923891 0.923883 0.923874
0.923866 0.923858 0.923850 0.923842 0.923833 0.923825 0.923817 0.923809 0.923801 0.923792
0.923784 0.923792 0.923801 0.923809 0.923817 0.923825 0.923833 0.923842 0.923850 0.923858
0.923866
[SLIPCURVE]
Name="Lateral"
Step=0.010
DropoffFunction=0
Data:
0.000000 0.189889 0.348457 0.481725 0.594121 0.688661 0.767736 0.833175 0.886392 0.928440
0.960276 0.982504 0.995642 1.000000 0.998349 0.992577 0.981439 0.965387 0.949487 0.939109
0.934718 0.932220 0.931092 0.930461 0.930018 0.929676 0.929395 0.929158 0.928953 0.928772
0.928609 0.928461 0.928326 0.928202 0.928087 0.927980 0.927879 0.927784 0.927695 0.927611
0.927531 0.927455 0.927382 0.927312 0.927245 0.927181 0.927120 0.927061 0.927004 0.926949
0.926895 0.926844 0.926794 0.926745 0.926698 0.926653 0.926608 0.926565 0.926522 0.926481
0.926441 0.926401 0.926362 0.926325 0.926287 0.926251 0.926216 0.926180 0.926146 0.926112
0.926079 0.926046 0.926014 0.925982 0.925950 0.925919 0.925888 0.925857 0.925827 0.925797
0.925767 0.925738 0.925708 0.925678 0.925649 0.925619 0.925590 0.925560 0.925530 0.925500
0.925470 0.925438 0.925407 0.925374 0.925340 0.925305 0.925267 0.925227 0.925180 0.925123
0.925070 0.924954 0.924906 0.924869 0.924838 0.924810 0.924785 0.924762 0.924740 0.924720
0.924701 0.924682 0.924665 0.924648 0.924632 0.924616 0.924600 0.924586 0.924571 0.924557
0.924543 0.924530 0.924516 0.924504 0.924491 0.924478 0.924466 0.924454 0.924442 0.924430
0.924419 0.924407 0.924396 0.924385 0.924374 0.924363 0.924353 0.924342 0.924332 0.924321
0.924311 0.924301 0.924291 0.924281 0.924271 0.924261 0.924251 0.924241 0.924232 0.924222
0.924213 0.924203 0.924194 0.924185 0.924175 0.924166 0.924157 0.924148 0.924139 0.924130
0.924121 0.924112 0.924103 0.924094 0.924086 0.924077 0.924068 0.924060 0.924051 0.924042
0.924034 0.924025 0.924017 0.924008 0.923999 0.923991 0.923983 0.923974 0.923966 0.923957
0.923949 0.923941 0.923932 0.923924 0.923916 0.923907 0.923899 0.923891 0.923883 0.923874
0.923866 0.923858 0.923850 0.923842 0.923833 0.923825 0.923817 0.923809 0.923801 0.923792
0.923784 0.923792 0.923801 0.923809 0.923817 0.923825 0.923833 0.923842 0.923850 0.923858
0.923866
// 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]
Name="Used Continental ContiPro Contact"
FRONT: // Arguments: ALL, FRONT, REAR, LEFT, RIGHT, FRONTLEFT, FRONTRIGHT, REARLEFT, REARRIGHT
DryLatLong=(1.10, 1.10) // Lateral/longitudinal grip coefficients in dry weather. Lateral is side to side grip, longitudinal is forward and backward grip. You need to find this data by finding a site that has done testing with the tire. If none is available you need to find testing on ANY similar tire and adjust according to what you feel the difference between the two tires is. This is the unmodified g-force production of the tire. You will find that the compound of rubber, the width of the tire, and the tread type all affect the total grip value. I use a very complex system for getting these values that is based off of testing i found on several websites. First off compound doesnt always affect grip like you think. For example the toyo is a very soft compound but has less grip than the much harder compound michelin pilot super sport. So dont fudge this based on treadwear unless you absolutely have to. If you have to its easy to average that for every 100 points of treadwear grip is reduced by 0.03. A very direct relationship is the tire width to grip ratio. For every 10mm of width or 0.01 add 0.01 in grip. A 205 width version of this tire would have 1.11 grip coefficient. The void ratio or amount and width of the grooves also affects grip by lowering the amound of rubber contacts the pavement. For example i would add 0.02 in grip for the difference between an all season tread pattern with a high void ratio and a super sports tread pattern that always has rubber contacting the pavement in a constant amount even if it were the same tire just cut differently. Unlike the pulsing effect that occours in an all season tire as the perpendicular grooves cause a momentary gap in contact patch super sport tires groves are angled so that this never happens and their are typically less of them. Visually judge this based on pictures of the tire.
WetLatLong=(1.14, 1.04) // Grip coefficients in wet weather. The tread patter affects this more than anything else. More void = more grip
Radius=0.3175 //The outer radious of the tire in meters. This can be found by looking at the sidewall information on the tire. I then enter that information into kangaloosh to get this value. This is the radius of a 195/60/15 195 is the width in mm, 60 is the aspect ratio of width to height, and 15 is the inner diameter of the bead.
RadiusRPM=2.30e-6 //This is how much the tire increases in radius as rpm's increase. Obviously a bigger tire will increase more. A softer walled tire will increase more. Look at a top fuel dragster in slow motion for example. The more baloon like the tire the larger this value.
Width=0.195 //This is the width of the tire. This only affects the visual skid mark has no affect on physics. enter that first sidewall numberhere as a decimal.
Rim=(0.1905,650000.0,6500.0,5.0) //This is the radius, spring rate, damping rate and velocity to create sparks of the rim This is where the 3 value of the sidewall numbers comes in to play. Half of 15 inches converted to meters.
SpringBase=20460.0 //This is the spring rate of the uninflated tire. This data can be hard to find but a few companies like goodyear and hoosier make a way to get this value by giving spring rates at different inflations. Continue the ratio till you get the rate at 0 psi and you have this value. The taller the sidewall the lower this value will be. The stiffer teh construction of the tire the higher this value will be.
SpringkPa=1000.00 // This is the added spring rate per KPA of inflation. This does not change much from one tire to the next and this is a pretty typical value.
Damper=1100.0 // Damping rate of uninflated tire. typically around 7% which is almost unnoticeable. tires with better ride quality will have a slightly higher damping percentage.
SpeedEffects=(300.0,12.0) // Speed at which grip drops to half (m/s, 0.0 to disable), speed load equivalency (see above) this is where the extra info on the tire starts coming into play. this is the speed rating of the tire. This is a standard tire and has a low speed rating of 112mph. The range of these values should be 250 to 500 and 5 to 15. The relation of these values between brands matters. Typically as the first value increases the second value will decrease.
LoadSensLat=( -1.26e-6, 0.85, 5400.0) //Here's where the other half of that speedload value comeinto play. This tire has a speed load of 87H. 87 = a max load of 540kg = 5400 newtons. H is a speed rating of 112 and that data was accounted for above. The typical load to grip ratio of rubber is 85 percent. The first value is the starting angle which should be like this one, almost horizontal.
LoadSensLong=(-1.26e-6, 0.85, 5400.0) //instead of having a lat and long we could have just said loadsense= but i had already set it this way so i kept it this way even though they are the same.
LatPeak=(0.105, 0.130, 10500.0) // Slip range where lateral peak force occurs depending on load. The first value is the peak grip angle at 0 load. In this case it's around 6 degrees. The second value is the peak grip angle when the load is at the third value. Which is around 7 and a half degrees i think if i remember correctly for this tire. use Kangaloosh to see the actual angles represented here. The values have to be assumed but you can assume them intelligently. Real curves are hard to find and very general and subjective but will give you a starting point. The first value can be gotten by thinking about how hard the rubber compound of the tire is. harder rubber = lower value. But the % change is very low. This is the hardest rubber you will ever encounter on a car. Used and dry rotting. A super sport tire with super soft rubber will be around 0.13 for the first value. This value is easiest to aquire by this method by looking up the ratings of the tire. This is a used hardened 600 treadwear tire. The higher the treadwear the harder the rubber compound. On top of that the age of the tire makes it even harder. The second value can be gotten by looking at the tread of the tire, more depth = bigger difference from the first number. More grooves/slits in tread = higher void ratio = bigger difference. This tire is half worn and has very little depth and most of the grooves are worn off because most of them dont go all the way down. The grooves that run the length of the tire are what affect the lateral peak. The grooves going across the tire are what affect the longitudinal peak. The third value can be assumed by thinking about how much force it takes to cause the tread to deform. Harder tread will have a higher value here. Again use the treadwear rating to get this value and modify it by age if you must as is the case here.
LongPeak=(0.015, 0.035, 10500.0) // Slip range where longitudinal peak force occurs depending on load. Since long goes by slip percent not angle this is simple. 0.015 = 1.5 percent slip and 0.035 = 3.5 percent. Again use kangaloosh for a visual.
LatCurve="Lateral" // Slip angle curve
BrakingCurve="Decel" // Slip ratio curve under braking
TractiveCurve="Accel" // Slip ratio curve under acceleration
CamberLatLong=(1.80, 0.03, 0.41) // Peak camber angle, lateral grip gain at peak, longitudinal grip loss at 90 degrees
RollingResistance=3200.0 // Resistance torque (Nm) per unit deflection (m) on ground. Real tires have between 800 and 1500 nm resistance. Pavement has betwen 2200 and 2750. Assume pavement to be 2500 and add the that to the resistance value you feel apporopriate for this tire compound. Harder rubber = less resistance, harder sidewall = less resistance, more groves across the tread of the tire = more resistance.
PneumaticTrail=0.000022 // Pneumatic trail per unit load (m/N), adjusted based on slip. This value should scale up or down with the spring base value of the tire. Pneumatic trail is the legnth of half of the contact patch per n-m of load and this is assuming the tire is properly inflated. The scale i use for this is the real life scale... 20,000nm rate = 0.000022 subtract 0.000001 for every 10,000 newton meters of spring rate added.
Heating=(0.25, 0.006) // Heat caused by (rolling, friction). Rolling is before the peak angle, friction is after the peak angle. The first value is affected by the hardness of the rubber compound and the tread pattern, Softer rubber = more heat, more groves going across the tire = more heat. The second value is affected by the compound alone. Softer rubber = more heat.
Transfer=(0.015, 0.010, 0.0006) // Heat transfer to (road, static air, moving air) This is affected only by the depth of the rubber as deeper rubber has more area to absorb the heat and takeslonger to cool.
HeatDistrib=(14.00,120.0) // (Max camber angle, max off-pressure) that affects heat distribution (higher number -> less temperature difference)
AirTreadRate=0.0015 // Heat transfer between tread and inside air this is pretty standard stuff, the rate is almost always the same.
WearRate=0.0000009 // Wear rate constant. Again get this value from the treadwear rating of the tire.
WearGrip=(1.02,1.015,1.010,1.005,1.003,1.001,0.987,0.948) // Grip fraction at 13% wear, 25%, 38%, 50%, 63%, 75%, 88%, 100% (tire will burst at 100% wear) Tires get a film on them from sitting, this film wears off quickly giving higher grip. Grip doesnt change much untill rubber starts peeling away like an eggshell just before the chords start to appear.
Softness=0.2 // Softness is now just for AI strategic use
AIGripMult=1.000 // Grip multiplier for AI vehicles (due to tire model simplification) Keep this at 1.0 so they have the same grip as you.
AIPeakSlip=0.120 // Simple peak slip angle for AI vehicles Should be around the same as the average latpeak value.
AITireModel=1.0 // 0.0 = original AI tire model in terms of slip, 1.0 = more similar to player tire model. Keep this at 1.0 so they have the same physics as you do.
AIWear=0.0000009 // AI wear rate constant, should be the same as yours.
Temperatures=(60.0, 20.0) // Optimum operating temperature for peak forces (Celsius), starting temperature. Typically higher performance tires have operating temps. Sometimes you can find this info.
OptimumPressure=(205.0, 0.0170) // Base pressure to remain flat on ground at zero deflection, and multiplier by load to stay flat on ground. Basically the first value is how much air the tire needs to have a flat profile with it not on the ground. The second value is how much the load affects the tire contact patch profile. The stiffer the tire the less pressure is required to remain flat on ground.
GripTempPress=(0.15, 0.60, 0.30) // Grip effects of being below temp, above temp, and off-pressure (higher number -> faster grip dropoff) This is like a multiplier for the dry/wetlatlong grip vlaues. If all are 0 then temperature and pressure have no affect on total grip.
//
Now i will include two sets of new tire parameters. The first is the new standard road tire (continental) in 17" form and the second is the softest compound, hardest sidewalled super sports tire i have. The Toyo Proxes. This will show how all the values relate to each other and change based on the tires construction.
540 treadwear 245/40/17 Continental ContiPro Contact. A standard all season tire.
DryLatLong=(1.22, 1.20)
WetLatLong=(1.39, 1.39)
Radius=0.314
RadiusRPM=3.01e-6
Width=0.245
Rim=(0.2159,650000.0,6500.0,5.0)
SpringBase=30460.0
SpringkPa=1000.00
Damper=1100.0
SpeedEffects=(300.0,12.0)
LoadSensLat=( -1.26e-6, 0.85, 6150.0)
LoadSensLong=(-1.26e-6, 0.85, 6150.0)
LatPeak=(0.113, 0.180, 9500.0)
LongPeak=(0.023, 0.085, 9500.0)
LatCurve="Lateral"
BrakingCurve="Decel"
TractiveCurve="Accel"
CamberLatLong=(2.40, 0.03, 0.41)
RollingResistance=3400.0
PneumaticTrail=0.000021
Heating=(0.61, 0.004)
Transfer=(0.015, 0.005, 0.0003)
HeatDistrib=(14.00,120.0)
AirTreadRate=0.0015
WearRate=0.0000001
WearGrip=(1.004,1.000,0.998,0.994,0.989,0.974,0.955,0.840)
Softness=0.3
AIGripMult=1.0
AIPeakSlip=0.145
AITireModel=1.0
AIWear=0.0000001
Temperatures=(60.0, 20.0)
OptimumPressure=(205.0, 0.0170)
GripTempPress=(0.15, 0.60, 0.34)
140 Treadwear 245/40/17 Toyo Proxes R1R. A super soft super sports tire with very stiff sidewalls.
DryLatLong=(1.34, 1.36)
WetLatLong=(1.54, 1.52)
Radius=0.314
RadiusRPM=3.01e-6
Width=0.245
Rim=(0.2159,650000.0,6500.0,5.0)
SpringBase=120460.0
SpringkPa=1200.00
Damper=6400.0
SpeedEffects=(500.0,8.0)
LoadSensLat=( -1.16e-6, 0.85, 6150.0)
LoadSensLong=(-1.16e-6, 0.85, 6150.0)
LatPeak=(0.128, 0.165, 7500.0)
LongPeak=(0.038, 0.060, 7500.0)
LatCurve="Lateral"
BrakingCurve="Decel"
TractiveCurve="Accel"
CamberLatLong=(2.80, 0.03, 0.51)
RollingResistance=3700.0
PneumaticTrail=0.000012
Heating=(0.55, 0.007)
Transfer=(0.015, 0.005, 0.0003)
HeatDistrib=(14.00,120.0)
AirTreadRate=0.0015
WearRate=0.0000009
WearGrip=(1.004,1.000,0.998,0.994,0.989,0.974,0.955,0.840)
Softness=0.6
AIGripMult=1.0
AIPeakSlip=0.140
AITireModel=1.0
AIWear=0.0000009
Temperatures=(86.0, 20.0)
OptimumPressure=(185.0, 0.0170)
GripTempPress=(0.70, 0.35, 0.34)
Remember that these toyo proxes have low grip compaired to their treadwear rating of 140. They have the same lateral grip as a 200 treadwear falken azenis.
-----------------------------------------------------------------------------------------------
Last we will look at upgrades that affect the physics. This will be a brief overview as you should be able to apply everything from above to this section.
UpgradeType="Tire Size"
{
UpgradeLevel="stock"
{
Description="195/60/15. A good stock size tire but very limited selection of tires"
}
UpgradeLevel="Low Profile"
{
Description="205/50/15. Alot of high performance options but at the cost of having undersized tires"
HDV=[General]
HDV=TireBrand=Tire_15.tbc
}
}
This is a example of a tire file swap upgrade. Of course the only difference in these files is the size of the tires and the brands available for that size. whats int he quotation marks can be changed to whatever you want it to say.
UpgradeType="REARWING"
{
Instance="RWING"
UpgradeLevel="NOTHING"
{
GEN=<RWINGEXISTS>="//"
GEN=<RWING>=
Price=-1
}
UpgradeLevel="STOCK"
{
GEN=<RWINGEXISTS>=""
Description=""
GEN=<RWING>=body_2_win.gmt
Price=-1
HDV=RWRange=(1.0, 1.0, 1) // several settings
HDV=RWDragParams=( 0.005, 0.012, 0.0000) // 1st & 2nd order with setting
HDV=RWLiftParams=(-0.055, -0.040, 0.0007) // downforce is not quite linear with setting
}
UpgradeLevel="KOUKI"
{
GEN=<RWINGEXISTS>=""
Description="Stock Wing from the 180SX Type-X"
GEN=<RWING>=TYPEX_WING.gmt
Price=-1
HDV=RWRange=(1.0, 1.0, 1) // several settings
HDV=RWDragParams=( 0.015, 0.012, 0.0000) // 1st & 2nd order with setting
HDV=RWLiftParams=(-0.085, -0.040, 0.0007) // downforce is not quite linear with setting
}
UpgradeLevel="FISHTAIL"
{
GEN=<RWINGEXISTS>=""
Description=""
GEN=<RWING>=90sSpoiler.gmt
Price=-1
HDV=[REARWING]
HDV=RWRange=(1.0, 1.0, 1) // several settings
HDV=RWDragParams=( 0.010, 0.012, 0.0000) // 1st & 2nd order with setting
HDV=RWLiftParams=(-0.155, -0.040, 0.0007) // downforce is not quite linear with setting
}
}
Here we've used the drag and downforce (lift) parameters to affect the physics depending on the rear wing chosen. These wings are stock, static decklid ducktail wangan whatever you wanna call em spoilers so they are not adjustable.
UpgradeType="WEIGHT REDUCTION"
{
UpgradeLevel="stock"
{
Description="STOCK"
}
UpgradeLevel="Level 1"
{
Description="Removes spare tire and any other unnecessary items such as factory tool kits and rear seats and trim ~30kg worth from the rear end only"
Price=-1
HDV=Mass-=30.0
HDV=Inertia-=(80.0, 85.0, 8.0)
HDV=CGRearRange-=(0.02, 0.0, 0)
}
UpgradeLevel="Level 2"
{
Description="Takes the removal of unnecessary parts farther by removing the AC Compressor and system and emmisions control system and mounts a smaller battery in the rear to help wieght distribution ~50kg removed from front end and ~10kg added to rear end. Level 1 is included for a total reduction of ~70kg"
Price=-1
HDV=Mass-=70.0
HDV=Inertia-=(200.0, 250.0, 20.0)
}
UpgradeLevel="Level 3"
{
Description="Finally Replaces body panels with carbon fiber including the hood the doors and the hatch and replaces all glass with lexan removing ~70kg from the TOP of the vehicle lowering the center of gravity and only slightly reducing rear wieght more than the front. Levels 1 and 2 are included for a total reduction of ~140kg"
Price=-1
HDV=Mass-=140.0
HDV=Inertia-=(400, 500, 40)
HDV=CGHeight-=0.025
HDV=CGRearRange-=(0.01, 0.0, 0)
}
}
Here we've got a set of standard weight reduction lines. These can be applied to any vehicle.
UpgradeType="ENGINE/TRANSMISSION"
{
UpgradeLevel="STOCK KA24DE ENGINE"
{
Description="
Bore × Stroke: 89.0 × 96.0 mm (3.50 in. x 3.78 in.)
Displacement: 2389cc (145cid)
Max power: 155 hp (116 kW) @ 5400 rpm
Max torque: 160 ft·lb (217 Nm) @ 4400 rpm
Valve Configuration: DOHC, 16 valves
Compression ratio: 9.5:1(94-98), 9.0:1(91-93)"
Price=-1
HDV=[ENGINE]
HDV=Normal=Engines/Engine_KA24DE_Stock.ini
HDV=RestrictorPlate=Engines/Engine_KA24DE_Stock.ini
HDV=
HDV=[DRIVELINE]
HDV=GearFile=Noisy_S13_KA_Gears.ini
SFX=VS_INSIDE_COAST_ENGINE_1=1.2,Stance_Life\KA24\ka24_idle.wav
SFX=VS_INSIDE_COAST_ENGINE_2=1.2,Stance_Life\KA24\ka24_offlow.wav
SFX=VS_INSIDE_COAST_ENGINE_3=1.2,Stance_Life\KA24\ka24_offmid.wav
SFX=VS_INSIDE_COAST_ENGINE_4=1.2,Stance_Life\KA24\ka24_offhigh.wav
SFX=VS_INSIDE_COAST_ENGINE_4=1.2,Stance_Life\KA24\ka24_offrumble.wav
SFX=VS_INSIDE_POWER_ENGINE_1=1.2,Stance_Life\KA24\ka24_idle.wav
SFX=VS_INSIDE_POWER_ENGINE_2=1.2,Stance_Life\KA24\ka24_onverylow.wav
SFX=VS_INSIDE_POWER_ENGINE_3=1.2,Stance_Life\KA24\ka24_onlow.wav
SFX=VS_INSIDE_POWER_ENGINE_4=1.2,Stance_Life\KA24\ka24_onmid.wav
SFX=VS_INSIDE_POWER_ENGINE_5=1.2,Stance_Life\KA24\ka24_onhigh.wav
SFX=VS_INSIDE_ENGINE_STARTING=rTecEngine\rTEC_startup_in.wav
SFX=VS_OUTSIDE_COAST_ENGINE_1=1.2,Stance_Life\KA24\ka24_idle.wav
SFX=VS_OUTSIDE_COAST_ENGINE_2=1.2,Stance_Life\KA24\ka24_offlow.wav
SFX=VS_OUTSIDE_COAST_ENGINE_3=1.2,Stance_Life\KA24\ka24_offmid.wav
SFX=VS_OUTSIDE_COAST_ENGINE_4=1.2,Stance_Life\KA24\ka24_offhigh.wav
SFX=VS_OUTSIDE_COAST_ENGINE_5=1.2,Stance_Life\KA24\ka24_offrumble.wav
SFX=VS_OUTSIDE_POWER_ENGINE_1=1.2,Stance_Life\KA24\ka24_idle.wav
SFX=VS_OUTSIDE_POWER_ENGINE_2=1.2,Stance_Life\KA24\ka24_onverylow.wav
SFX=VS_OUTSIDE_POWER_ENGINE_3=1.2,Stance_Life\KA24\ka24_onlow.wav
SFX=VS_OUTSIDE_POWER_ENGINE_4=1.2,Stance_Life\KA24\ka24_onmid.wav
SFX=VS_OUTSIDE_POWER_ENGINE_5=1.2,Stance_Life\KA24\ka24_onhigh.wav
SFX=VS_OUTSIDE_ENGINE_STARTING=rTecEngine\rTEC_startup_ex.wav
}
UpgradeLevel="STOCK SR20DE ENGINE"
{
Description="SR20DE 140hp"
Price=-1
HDV=[ENGINE]
HDV=Normal=Engines/Engine_SR20DE_Stock.ini
HDV=RestrictorPlate=Engines/Engine_SR20DE_Stock.ini
HDV=
HDV=[DRIVELINE]
HDV=GearFile=Noisy_S13_SR20_Gears.ini
SFX=VS_INSIDE_COAST_ENGINE_1=1.2,Stance_Life\KA24\ka24_idle.wav
SFX=VS_INSIDE_COAST_ENGINE_2=1.2,Stance_Life\KA24\ka24_offlow.wav
SFX=VS_INSIDE_COAST_ENGINE_3=1.2,Stance_Life\KA24\ka24_offmid.wav
SFX=VS_INSIDE_COAST_ENGINE_4=1.2,Stance_Life\KA24\ka24_offhigh.wav
SFX=VS_INSIDE_COAST_ENGINE_4=1.2,Stance_Life\KA24\ka24_offrumble.wav
SFX=VS_INSIDE_POWER_ENGINE_1=1.2,Stance_Life\KA24\ka24_idle.wav
SFX=VS_INSIDE_POWER_ENGINE_2=1.2,Stance_Life\KA24\ka24_onverylow.wav
SFX=VS_INSIDE_POWER_ENGINE_3=1.2,Stance_Life\KA24\ka24_onlow.wav
SFX=VS_INSIDE_POWER_ENGINE_4=1.2,Stance_Life\KA24\ka24_onmid.wav
SFX=VS_INSIDE_POWER_ENGINE_5=1.2,Stance_Life\KA24\ka24_onhigh.wav
SFX=VS_INSIDE_ENGINE_STARTING=rTecEngine\rTEC_startup_in.wav
SFX=VS_OUTSIDE_COAST_ENGINE_1=1.2,Stance_Life\KA24\ka24_idle.wav
SFX=VS_OUTSIDE_COAST_ENGINE_2=1.2,Stance_Life\KA24\ka24_offlow.wav
SFX=VS_OUTSIDE_COAST_ENGINE_3=1.2,Stance_Life\KA24\ka24_offmid.wav
SFX=VS_OUTSIDE_COAST_ENGINE_4=1.2,Stance_Life\KA24\ka24_offhigh.wav
SFX=VS_OUTSIDE_COAST_ENGINE_5=1.2,Stance_Life\KA24\ka24_offrumble.wav
SFX=VS_OUTSIDE_POWER_ENGINE_1=1.2,Stance_Life\KA24\ka24_idle.wav
SFX=VS_OUTSIDE_POWER_ENGINE_2=1.2,Stance_Life\KA24\ka24_onverylow.wav
SFX=VS_OUTSIDE_POWER_ENGINE_3=1.2,Stance_Life\KA24\ka24_onlow.wav
SFX=VS_OUTSIDE_POWER_ENGINE_4=1.2,Stance_Life\KA24\ka24_onmid.wav
SFX=VS_OUTSIDE_POWER_ENGINE_5=1.2,Stance_Life\KA24\ka24_onhigh.wav
SFX=VS_OUTSIDE_ENGINE_STARTING=rTecEngine\rTEC_startup_ex.wav
}
UpgradeLevel="STOCK SR20DET ENGINE"
{
Description="SR20DET 205hp"
Price=-1
HDV=[ENGINE]
HDV=Normal=Engines/Engine_SR20DET_Stock.ini
HDV=RestrictorPlate=Engines/Engine_SR20DET_Stock.ini
HDV=
HDV=[DRIVELINE]
HDV=GearFile=Noisy_S13_SR20_Gears.ini
SFX=VS_INSIDE_COAST_ENGINE_1=Stance_Life\SR20\SR20_idle_a.wav
SFX=VS_INSIDE_COAST_ENGINE_2=Stance_Life\SR20\SR20_offlow.wav
SFX=VS_INSIDE_COAST_ENGINE_3=Stance_Life\SR20\SR20_offmid.wav
SFX=VS_INSIDE_COAST_ENGINE_4=Stance_Life\SR20\SR20_offhigh.wav
SFX=VS_INSIDE_COAST_ENGINE_4=Stance_Life\SR20\SR20_offrumble.wav
SFX=VS_INSIDE_POWER_ENGINE_1=Stance_Life\SR20\SR20_idle_a.wav
SFX=VS_INSIDE_POWER_ENGINE_2=Stance_Life\SR20\SR20_onverylow.wav
SFX=VS_INSIDE_POWER_ENGINE_3=Stance_Life\SR20\SR20_onlow.wav
SFX=VS_INSIDE_POWER_ENGINE_4=Stance_Life\SR20\SR20_onmid.wav
SFX=VS_INSIDE_POWER_ENGINE_5=Stance_Life\SR20\SR20_onhigh.wav
SFX=VS_INSIDE_ENGINE_STARTING=rTecEngine\rTEC_startup_in.wav
SFX=VS_OUTSIDE_COAST_ENGINE_1=Stance_Life\SR20\SR20_idle_a.wav
SFX=VS_OUTSIDE_COAST_ENGINE_2=Stance_Life\SR20\SR20_offlow.wav
SFX=VS_OUTSIDE_COAST_ENGINE_3=Stance_Life\SR20\SR20_offmid.wav
SFX=VS_OUTSIDE_COAST_ENGINE_4=Stance_Life\SR20\SR20_offhigh.wav
SFX=VS_OUTSIDE_COAST_ENGINE_5=Stance_Life\SR20\SR20_offrumble.wav
SFX=VS_OUTSIDE_POWER_ENGINE_1=Stance_Life\SR20\SR20_idle_a.wav
SFX=VS_OUTSIDE_POWER_ENGINE_2=Stance_Life\SR20\SR20_onverylow.wav
SFX=VS_OUTSIDE_POWER_ENGINE_3=Stance_Life\SR20\SR20_onlow.wav
SFX=VS_OUTSIDE_POWER_ENGINE_4=Stance_Life\SR20\SR20_onmid.wav
SFX=VS_OUTSIDE_POWER_ENGINE_5=Stance_Life\SR20\SR20_onhigh.wav
SFX=VS_OUTSIDE_ENGINE_STARTING=rTecEngine\rTEC_startup_ex.wav
}
UpgradeLevel="STOCK RB25DET ENGINE SWAP"
{
Description="RB25DET 250hp"
Price=-1
HDV=[ENGINE]
HDV=Normal=Engines/Engine_RB25DET_Stock.ini
HDV=RestrictorPlate=Engines/Engine_RB25DET_Stock.ini
HDV=
HDV=[DRIVELINE]
HDV=GearFile=Noisy_RB25_Gears.ini
SFX=VS_INSIDE_COAST_ENGINE_1=Stance_Life\RB26\RB26_idle.wav
SFX=VS_INSIDE_COAST_ENGINE_2=Stance_Life\RB26\RB26_offlow.wav
SFX=VS_INSIDE_COAST_ENGINE_3=Stance_Life\RB26\RB26_offmid.wav
SFX=VS_INSIDE_COAST_ENGINE_4=Stance_Life\RB26\RB26_offhigh.wav
SFX=VS_INSIDE_COAST_ENGINE_4=Stance_Life\RB26\RB26_offrumble.wav
SFX=VS_INSIDE_POWER_ENGINE_1=Stance_Life\RB26\RB26_idle.wav
SFX=VS_INSIDE_POWER_ENGINE_2=Stance_Life\RB26\RB26_onverylow.wav
SFX=VS_INSIDE_POWER_ENGINE_3=Stance_Life\RB26\RB26_onlow.wav
SFX=VS_INSIDE_POWER_ENGINE_4=Stance_Life\RB26\RB26_onmid.wav
SFX=VS_INSIDE_POWER_ENGINE_5=Stance_Life\RB26\RB26_onhigh.wav
SFX=VS_INSIDE_ENGINE_STARTING=rTecEngine\rTEC_startup_in.wav
SFX=VS_OUTSIDE_COAST_ENGINE_1=Stance_Life\RB26\RB26_idle.wav
SFX=VS_OUTSIDE_COAST_ENGINE_2=Stance_Life\RB26\RB26_offlow.wav
SFX=VS_OUTSIDE_COAST_ENGINE_3=Stance_Life\RB26\RB26_offmid.wav
SFX=VS_OUTSIDE_COAST_ENGINE_4=Stance_Life\RB26\RB26_offhigh.wav
SFX=VS_OUTSIDE_COAST_ENGINE_5=Stance_Life\RB26\RB26_offrumble.wav
SFX=VS_OUTSIDE_POWER_ENGINE_1=Stance_Life\RB26\RB26_idle.wav
SFX=VS_OUTSIDE_POWER_ENGINE_2=Stance_Life\RB26\RB26_onverylow.wav
SFX=VS_OUTSIDE_POWER_ENGINE_3=Stance_Life\RB26\RB26_onlow.wav
SFX=VS_OUTSIDE_POWER_ENGINE_4=Stance_Life\RB26\RB26_onmid.wav
SFX=VS_OUTSIDE_POWER_ENGINE_5=Stance_Life\RB26\RB26_onhigh.wav
SFX=VS_OUTSIDE_ENGINE_STARTING=rTecEngine\rTEC_startup_ex.wav
}
UpgradeLevel="STOCK RB26DETT ENGINE SWAP"
{
Description="RB26DETT 280hp"
Price=-1
HDV=[ENGINE]
HDV=Normal=Engines/Engine_RB26DETT_Stock.ini
HDV=RestrictorPlate=Engines/Engine_RB26DETT_Stock.ini
HDV=
HDV=[DRIVELINE]
HDV=GearFile=Noisy_RB25_Gears.ini
SFX=VS_INSIDE_COAST_ENGINE_1=Stance_Life\RB26\RB26_idle.wav
SFX=VS_INSIDE_COAST_ENGINE_2=Stance_Life\RB26\RB26_offlow.wav
SFX=VS_INSIDE_COAST_ENGINE_3=Stance_Life\RB26\RB26_offmid.wav
SFX=VS_INSIDE_COAST_ENGINE_4=Stance_Life\RB26\RB26_offhigh.wav
SFX=VS_INSIDE_COAST_ENGINE_4=Stance_Life\RB26\RB26_offrumble.wav
SFX=VS_INSIDE_POWER_ENGINE_1=Stance_Life\RB26\RB26_idle.wav
SFX=VS_INSIDE_POWER_ENGINE_2=Stance_Life\RB26\RB26_onverylow.wav
SFX=VS_INSIDE_POWER_ENGINE_3=Stance_Life\RB26\RB26_onlow.wav
SFX=VS_INSIDE_POWER_ENGINE_4=Stance_Life\RB26\RB26_onmid.wav
SFX=VS_INSIDE_POWER_ENGINE_5=Stance_Life\RB26\RB26_onhigh.wav
SFX=VS_INSIDE_ENGINE_STARTING=rTecEngine\rTEC_startup_in.wav
SFX=VS_OUTSIDE_COAST_ENGINE_1=Stance_Life\RB26\RB26_idle.wav
SFX=VS_OUTSIDE_COAST_ENGINE_2=Stance_Life\RB26\RB26_offlow.wav
SFX=VS_OUTSIDE_COAST_ENGINE_3=Stance_Life\RB26\RB26_offmid.wav
SFX=VS_OUTSIDE_COAST_ENGINE_4=Stance_Life\RB26\RB26_offhigh.wav
SFX=VS_OUTSIDE_COAST_ENGINE_5=Stance_Life\RB26\RB26_offrumble.wav
SFX=VS_OUTSIDE_POWER_ENGINE_1=Stance_Life\RB26\RB26_idle.wav
SFX=VS_OUTSIDE_POWER_ENGINE_2=Stance_Life\RB26\RB26_onverylow.wav
SFX=VS_OUTSIDE_POWER_ENGINE_3=Stance_Life\RB26\RB26_onlow.wav
SFX=VS_OUTSIDE_POWER_ENGINE_4=Stance_Life\RB26\RB26_onmid.wav
SFX=VS_OUTSIDE_POWER_ENGINE_5=Stance_Life\RB26\RB26_onhigh.wav
SFX=VS_OUTSIDE_ENGINE_STARTING=rTecEngine\rTEC_startup_ex.wav
}
}
Standard engine swap lines. I also included the gear box modification in this section so that the gearbox is appropriate for the engine being used. Also you can see the SFX changes per engine change.
UpgradeType="EXHAUST"
{
Instance="EXHAUST"
UpgradeLevel="STOCK"
{
GEN=<EXHAUSTEXISTS>=""
Description=""
GEN=<EXHAUST>=MATTE_CO10.gmt
Price=-1
}
UpgradeLevel="Megan 3" OEM Type II Catback"
{
GEN=<EXHAUSTEXISTS>=""
Description="Looks like the stock exhaust but is 3 inches in diameter from catalytic converter back. Adds 7% increase in hp and 2% increase in torque"
GEN=<EXHAUST>=MATTE_CO10.gmt
Price=-1
HDV=[ENGINE]
HDV=GeneralTorqueMult+=0.02
HDV=GeneralPowerMult+=0.07
HDV=
}
UpgradeLevel="Full Exhaust"
{
GEN=<EXHAUSTEXISTS>=""
Description="4-2-1 Header/Turbo manifold + Hi Flow Cat + 3 Inch Megan OEM Type II Catback. Adds 12% increase in hp and 3% increase in torque"
GEN=<EXHAUST>=MATTE_CO10.gmt
Price=-1
HDV=[ENGINE]
HDV=GeneralTorqueMult+=0.03
HDV=GeneralPowerMult+=0.12
HDV=
}
}
UpgradeType="ENGINE tune"
{
UpgradeLevel="Stock"
{
Description=""
}
UpgradeLevel="Light"
{
Description="Includes doing simple stuff like plugs and wires, intake/FMIC, and electric fans. Good for a 5% increase in torque and hp along with some reduced inertia."
Price=-1
HDV=[ENGINE]
HDV=GeneralTorqueMult+=0.05
HDV=GeneralPowerMult+=0.05
HDV=EngineInertia*=0.98
HDV=
}
UpgradeLevel="Medium"
{
Description="Increases the tuning to add things like fuel system goodies and management and cams as well as a lightweight underdrive pully kit. Includes light tuning for a 12% increase increase in hp but only a 4% total increase in torque from stock and also shifts power to a higher rpm while reducing inertia even further"
Price=-1
HDV=[Engine]
HDV=GeneralTorqueMult+=0.03
HDV=GeneralPowerMult+=0.07
HDV=TorqueCurveShift*=1.10
HDV=EngineInertia*=0.95
HDV=
}
UpgradeLevel="Full"
{
Description="Increases the tuning to do full on engine rebuild with port and polished head, better valves and springs, lightweight/balanced crank and flywheel, windage tray, oil sump, and better pistons/rods. Includes light and medium tuning for a huge 40% increase in hp and 32% increase in torque from stock form and greatly reduces inertia."
Price=-1
HDV=[Engine]
HDV=GeneralTorqueMult+=0.32
HDV=GeneralPowerMult+=0.40
HDV=TorqueCurveShift*=1.10
HDV=EngineInertia*=0.75
HDV=
}
}
UpgradeType="Ignition Timing"
{
UpgradeLevel="Stock"
{
Description="20* BTDC"
}
UpgradeLevel="Retarded"
{
Description="15* BTDC. Reduces HP but improves bottom end torque. Good for high boost application"
Price=-1
HDV=[ENGINE]
HDV=TorqueCurveShift*=0.95
}
UpgradeLevel="Advanced"
{
Description="25* BTDC. Improves top end HP at the cost of bottom end torque. Good for N/A application"
Price=-1
HDV=[Engine]
HDV=TorqueCurveShift*=1.05
}
}
/////////////////////////////////////////////////////////////////////////////////////////
UpgradeType="TURBO"
{
UpgradeLevel="Stock PSI/Non Turbo"
{
Description="If N/a 0PSI or if Turbo ~7psi"
}
UpgradeLevel="+5psi"
{
Description="5psi increase in boost"
Price=-1
HDV=[ENGINE]
HDV=GeneralTorqueMult+=0.3
HDV=GeneralPowerMult+=0.3
HDV=TorqueCurveShift*=1.02
}
UpgradeLevel="+10psi"
{
Description="10psi increase in boost"
Price=-1
HDV=[ENGINE]
HDV=GeneralTorqueMult+=0.6
HDV=GeneralPowerMult+=0.6
HDV=TorqueCurveShift*=1.04
}
UpgradeLevel="+15psi"
{
Description="15psi increase in boost"
Price=-1
HDV=[ENGINE]
HDV=GeneralTorqueMult+=0.9
HDV=GeneralPowerMult+=0.9
HDV=TorqueCurveShift*=1.06
}
UpgradeLevel="+20psi"
{
Description="20psi increase in boost. Be carefull on stock turbo motors this brings power to a dangerous level"
Price=-1
HDV=[ENGINE]
HDV=GeneralTorqueMult+=1.2
HDV=GeneralPowerMult+=1.2
HDV=TorqueCurveShift*=1.08
}
UpgradeLevel="+25psi"
{
Description="25psi increase in boost. Be carefull on stock turbo motors this brings power to a dangeous level"
Price=-1
HDV=[ENGINE]
HDV=GeneralTorqueMult+=1.5
HDV=GeneralPowerMult+=1.5
HDV=TorqueCurveShift*=1.10
}
}
Here are all the sections that affect engine power and you can see how i did it. TorqueCurveShift* moves the entire torque curve by that multiplier. When the peak of torque is at a higher rpm, the peak hp is incresed. You can see how the generaltorque and power multipliers are adjusted to increase total torque and hp now.
Turbo boost typically adds between 10 and 15 hp and torque per psi assuming that the turbo is operating in its correct range. The torque curve is shifted by increased psi as it would be in real life.
UpgradeType="CLUTCH"
{
UpgradeLevel="STOCK CLUTCH"
{
Description="Stock"
}
UpgradeLevel="EXEDY"
{
Price=1
Description="EXEDY STREET-SPEC"
HDV=[DRIVELINE]
HDV=ClutchInertia=0.012
HDV=ClutchTorque=400.0
HDV=ClutchEngageRate=0.4
HDV=BaulkTorque=370.0
HDV=
}
UpgradeLevel="EXEDY SPORT-SPEC"
{
Picture=ClutchSport.tga
Description="Sport clutch is lighter, reducing inertia, and more durable"
Price=-1
HDV=[DRIVELINE]
HDV=ClutchInertia=0.010
HDV=ClutchTorque=550.0
HDV=ClutchEngageRate=0.4
HDV=BaulkTorque=500.0
}
UpgradeLevel="EXEDY RACING-SPEC"
{
Picture=ClutchRacing.tga
Description="This clutch is lightweight and strong for maximum performance in racing conditions"
Price=-1
HDV=[DRIVELINE]
HDV=ClutchInertia=0.008
HDV=ClutchTorque=800.0
HDV=ClutchEngageRate=0.4
HDV=BaulkTorque=700.0
HDV=
}
}
/////////////////////////////////////////////////////////////////////////////////////////
UpgradeType="DIFFERENTIAL"
{
UpgradeLevel="STOCK DIFFERENTIAL"
{
Description=""
}
UpgradeLevel="STOCK LSD"
{
Price=1
Description="R200v Viscous type LSD. Low locking ratio and causes 2% reduction in power due to parasidic drag"
HDV=[DRIVELINE]
HDV=DiffPowerRange=(0.25,0.20,1)
HDV=DiffCoastRange=(0.25,0.20,1)
HDV=DiffPreloadRange=(0.0, 0.0, 1)
HDV=
HDV=[ENGINE]
HDV=GeneralTorqueMult-=0.02
HDV=GeneralPowerMult-=0.02
}
UpgradeLevel="CUSCO LSD"
{
Description="Type MZ"
Price=-1
HDV=[DRIVELINE]
HDV=DiffPowerRange=(0.55, 0.00, 1)
HDV=DiffCoastRange=(0.55, 0.00, 1)
HDV=DiffPreloadRange=(20.0, 20.0, 5)
HDV=DiffPreloadSetting=3
}
UpgradeLevel="WELDLOCK"
{
Description="The stock open diff welded solid making a straight axle. Suited for drift and drag only, not good for grip"
Price=-1
HDV=[DRIVELINE]
HDV=DiffPowerRange=(1.00 ,0.00, 1)
HDV=DiffCoastRange=(1.0, 0.00, 1)
HDV=DiffPreloadRange=(1000.0, 0.0, 1)
}
}
Here you can see the different clutches and differentials and how to make them.
UpgradeType="Brakes"
{
UpgradeLevel="Stock brakes"
{
Description="Stock brakes"
}
UpgradeLevel="Street/Drift upgrade"
{
Description="Stock sized slotted rotors and Hawk HP+ pads BEST FOR DRIFTING"
Price=-1
HDV=[FRONTLEFT]
HDV=BrakeResponseCurve=(35,90,315,425)
HDV=BrakeTorque+=500.0
HDV=
HDV=[FRONTRIGHT]
HDV=BrakeResponseCurve=(35,90,315,425)
HDV=BrakeTorque+=500.0
HDV=
HDV=[REARLEFT]
HDV=BrakeResponseCurve=(35,90,315,425)
HDV=BrakeTorque+=500.0
HDV=
HDV=[REARRIGHT]
HDV=BrakeResponseCurve=(35,90,315,425)
HDV=BrakeTorque+=500.0
}
UpgradeLevel="Brembo GT Racing kit"
{
Description="Brembo GT kit 300mm 4 piston front/ 280mm 4 piston rear with Hawk Racing Blue pads ONLY SUITED FOR RACING PURPOSES"
Price=-1
HDV=[CONTROLS]
HDV=RearBrakeRange=(0.200, 0.01, 20)
HDV=RearBrakeSetting=10
HDV=
HDV=[FRONTLEFT]
HDV=BrakeDiscRange=(0.030, 0.000, 0)
HDV=BrakeResponseCurve=(120,175,475,540)
HDV=BrakeTorque+=1200.0
HDV=BrakeHeating=0.0005
HDV=BrakeCooling=(0.006,0.0005)
HDV=
HDV=[FRONTRIGHT]
HDV=BrakeDiscRange=(0.030, 0.000, 0)
HDV=BrakeResponseCurve=(120,175,475,540)
HDV=BrakeTorque+=1200.0
HDV=BrakeHeating=0.0005
HDV=BrakeCooling=(0.006,0.0005)
HDV=
HDV=[REARLEFT]
HDV=BrakeDiscRange=(0.030, 0.000, 0)
HDV=BrakeResponseCurve=(120,175,475,540)
HDV=BrakeTorque+=1000.0
HDV=BrakeHeating=0.0005
HDV=BrakeCooling=(0.006,0.0005)
HDV=
HDV=[REARRIGHT]
HDV=BrakeDiscRange=(0.030, 0.000, 0)
HDV=BrakeResponseCurve=(120,175,475,540)
HDV=BrakeTorque+=1000.0
HDV=BrakeHeating=0.0005
HDV=BrakeCooling=(0.006,0.0005)
}
}
/////////////////////////////////////////////////////////////////////////////////////////
UpgradeType="Handbrake"
{
UpgradeLevel="stock"
{
Description="Stock cable pull handbrake"
}
UpgradeLevel="Hydrolick"
{
Description="Hydrolick operated handbrake makes locking the rears easier and quicker"
price=-1
HDV=[CONTROLS]
HDV=HandbrakePressRange=(1.0, 0.0, 0)
}
}
These are different brake upgrades and how to make them. Notice the difference in the values from the factory ones.
UpgradeType="SUSPENSION"
{
UpgradeLevel="STOCK"
{
Description="Stock"
}
UpgradeLevel="TEIN S-Tech on KYB AGX"
{
Price=1
Description="Tein 3.7k/3.2k springs and 8 way adjustable shocks 1 softest 8 hardest"
HDV=[FRONTLEFT]
HDV=CamberRange=(-1.0, 0.1, 1)
HDV=BumpStage2=0.050
HDV=ReboundStage2=-0.050
HDV=SpringRange=(36284.0, 5000.0, 1)
HDV=RideHeightRange=(0.140, 0.005, 1)
HDV=SlowBumpRange=(5000.0, 375.0, 8)
HDV=FastBumpRange=(2000.0, 0.0, 8)
HDV=SlowReboundRange=(12000.0, 625.0, 8)
HDV=FastReboundRange=(3000.0, 0.0, 8)
HDV=
HDV=[FRONTRIGHT]
HDV=CamberRange=(-1.0, 0.1, 1)
HDV=BumpStage2=0.050
HDV=ReboundStage2=-0.050
HDV=SpringRange=(36284.0, 5000.0, 1)
HDV=RideHeightRange=(0.140, 0.005, 1)
HDV=SlowBumpRange=(5000.0, 375.0, 8)
HDV=FastBumpRange=(2000.0, 0.0, 8)
HDV=SlowReboundRange=(12000.0, 625.0, 8)
HDV=FastReboundRange=(3000.0, 0.0, 8)
HDV=
HDV=[REARLEFT]
HDV=CamberRange=(-1.0, 0.1, 1)
HDV=BumpStage2=0.050
HDV=ReboundStage2=-0.050
HDV=SpringRange=(31381.0, 5000.0, 1)
HDV=RideHeightRange=(0.150, 0.005, 1)
HDV=SlowBumpRange=(4000.0, 375.0, 8)
HDV=FastBumpRange=(2000.0, 0.0, 8)
HDV=SlowReboundRange=(10000.0, 625.0, 8)
HDV=FastReboundRange=(3000.0, 0.0, 8)
HDV=
HDV=[REARRIGHT]
HDV=CamberRange=(-1.0, 0.1, 1)
HDV=BumpStage2=0.050
HDV=ReboundStage2=-0.050
HDV=SpringRange=(31381.0, 5000.0, 1)
HDV=RideHeightRange=(0.150, 0.005, 1)
HDV=SlowBumpRange=(4000.0, 375.0, 8)
HDV=FastBumpRange=(2000.0, 0.0, 8)
HDV=SlowReboundRange=(10000.0, 625.0, 8)
HDV=FastReboundRange=(3000.0, 0.0, 8)
HDV=
}
UpgradeLevel="Megan Street Coilovers"
{
Description="Street Coilovers 8kg front/6kg rear spring rates 32way adjustable dampening with 1-8 being the stiffest for track use, 9-16 for mountians, 17-32 for regular street use. This also upgrades all the suspension components to be fully adjustable"
Price=-1
HDV=[SUSPENSION]
HDV=LeftCasterRange=(2.0, 0.1, 51)
HDV=LeftCasterSetting=36
HDV=RightCasterRange=(2.0, 0.1, 51)
HDV=RightCasterSetting=36
HDV=
HDV=[FRONTLEFT]
HDV=BumpTravel=-0.05
HDV=ReboundTravel=-0.170
HDV=CamberRange=(-25.0, 0.5, 50)
HDV=CamberSetting=47
HDV=SpringRange=(78453, 0.0, 1)
HDV=RideHeightRange=(0.060, 0.005, 20)
HDV=RideHeightSetting=8
HDV=SlowBumpRange=(18000.0, -140.62, 32)
HDV=SlowBumpSetting=16
HDV=FastBumpRange=(1000.0, 0.0, 32)
HDV=FastBumpSetting=16
HDV=SlowReboundRange=(30000.0, -656.25, 32)
HDV=SlowReboundSetting=16
HDV=FastReboundRange=(10000.0, -203.12, 32)
HDV=FastReboundSetting=16
HDV=
HDV=[FRONTRIGHT]
HDV=BumpTravel=-0.05
HDV=ReboundTravel=-0.170
HDV=CamberRange=(-25.0, 0.5, 50)
HDV=CamberSetting=47
HDV=SpringRange=(78453, 0.0, 1)
HDV=RideHeightRange=(0.060, 0.005, 20)
HDV=RideHeightSetting=8
HDV=SlowBumpRange=(18000.0, -140.62, 32)
HDV=SlowBumpSetting=16
HDV=FastBumpRange=(1000.0, 0.0, 32)
HDV=FastBumpSetting=16
HDV=SlowReboundRange=(30000.0, -656.25, 32)
HDV=SlowReboundSetting=16
HDV=FastReboundRange=(10000.0, -203.12, 32)
HDV=FastReboundSetting=16
HDV=
HDV=[REARLEFT]
HDV=BumpTravel=-0.05
HDV=ReboundTravel=-0.165
HDV=CamberRange=(-25.0, 0.5, 50)
HDV=CamberSetting=48
HDV=SpringRange=(58839.0, 0.0, 1)
HDV=RideHeightRange=(0.060, 0.005, 20)
HDV=RideHeightSetting=10
HDV=SlowBumpRange=(13000.0, -250.0, 32)
HDV=SlowBumpSetting=16
HDV=FastBumpRange=(2000.0, 0.0, 32)
HDV=FastBumpSetting=16
HDV=SlowReboundRange=(25000.0, -718.75, 32)
HDV=SlowReboundSetting=16
HDV=FastReboundRange=(9000.0, -140.62, 32)
HDV=FastReboundSetting=16
HDV=
HDV=[REARRIGHT]
HDV=BumpTravel=-0.05
HDV=ReboundTravel=-0.165
HDV=CamberRange=(-25.0, 0.5, 50)
HDV=CamberSetting=48
HDV=SpringRange=(58839.0, 0.0, 1)
HDV=RideHeightRange=(0.060, 0.005, 20)
HDV=RideHeightSetting=10
HDV=SlowBumpRange=(13000.0, -250.0, 32)
HDV=SlowBumpSetting=16
HDV=FastBumpRange=(2000.0, 0.0, 32)
HDV=FastBumpSetting=16
HDV=SlowReboundRange=(25000.0, -718.75, 32)
HDV=SlowReboundSetting=16
HDV=FastReboundRange=(9000.0, -140.62, 32)
HDV=FastReboundSetting=16
HDV=
}
UpgradeLevel="Megan Track Coilovers"
{
Description="Track coilovers 12kg front/10kg rear spring rates 32 way adjustable dampening with 1-8 being the stiffest for track use, 9-16 for mountians, 17-32 for regular street use"
Price=-1
HDV=[SUSPENSION]
HDV=LeftCasterRange=(2.0, 0.1, 51)
HDV=LeftCasterSetting=36
HDV=RightCasterRange=(2.0, 0.1, 51)
HDV=RightCasterSetting=36
HDV=
HDV=[FRONTLEFT]
HDV=BumpTravel=-0.05
HDV=ReboundTravel=-0.170
HDV=CamberRange=(-25.0, 0.5, 50)
HDV=CamberSetting=45
HDV=BumpStage2=0.013
HDV=ReboundStage2=-0.013
HDV=SpringRange=(117679.0, 0.0, 1)
HDV=RideHeightRange=(0.060, 0.005, 20)
HDV=RideHeightSetting=4
HDV=SlowBumpRange=(35000.0, -531.0, 32)
HDV=SlowBumpSetting=16
HDV=FastBumpRange=(2400.0, -9.0, 32)
HDV=FastBumpSetting=16
HDV=SlowReboundRange=(96500.0, -2765.0, 32)
HDV=SlowReboundSetting=16
HDV=FastReboundRange=(15800.0, -361.0, 32)
HDV=FastReboundSetting=16
HDV=
HDV=[FRONTRIGHT]
HDV=BumpTravel=-0.05
HDV=ReboundTravel=-0.170
HDV=CamberRange=(-25.0, 0.5, 50)
HDV=CamberSetting=45
HDV=BumpStage2=0.013
HDV=ReboundStage2=-0.013
HDV=SpringRange=(117679.0, 0.0, 1)
HDV=RideHeightRange=(0.060, 0.005, 20)
HDV=RideHeightSetting=4
HDV=SlowBumpRange=(35000.0, -531.0, 32)
HDV=SlowBumpSetting=16
HDV=FastBumpRange=(2400.0, -9.0, 32)
HDV=FastBumpSetting=16
HDV=SlowReboundRange=(96500.0, -2765.0, 32)
HDV=SlowReboundSetting=16
HDV=FastReboundRange=(15800.0, -361.0, 32)
HDV=FastReboundSetting=16
HDV=
HDV=[REARLEFT]
HDV=BumpTravel=-0.05
HDV=ReboundTravel=-0.165
HDV=CamberRange=(-25.0, 0.5, 50)
HDV=CamberSetting=47
HDV=BumpStage2=0.013
HDV=ReboundStage2=-0.013
HDV=SpringRange=(98066.0, 0.0, 1)
HDV=RideHeightRange=(0.060, 0.005, 20)
HDV=RideHeightSetting=5
HDV=SlowBumpRange=(35000.0, -812.5, 32)
HDV=SlowBumpSetting=16
HDV=FastBumpRange=(1880.0, 0.0, 32)
HDV=FastBumpSetting=16
HDV=SlowReboundRange=(80000.0, -2437.0, 32)
HDV=SlowReboundSetting=16
HDV=FastReboundRange=(13000.0, -274.0, 32)
HDV=FastReboundSetting=16
HDV=
HDV=[REARRIGHT]
HDV=BumpTravel=-0.05
HDV=ReboundTravel=-0.165
HDV=CamberRange=(-25.0, 0.5, 50)
HDV=CamberSetting=47
HDV=BumpStage2=0.013
HDV=ReboundStage2=-0.013
HDV=SpringRange=(98066.0, 0.0, 1)
HDV=RideHeightRange=(0.060, 0.005, 20)
HDV=RideHeightSetting=5
HDV=SlowBumpRange=(35000.0, -812.5, 32)
HDV=SlowBumpSetting=16
HDV=FastBumpRange=(1880.0, 0.0, 32)
HDV=FastBumpSetting=16
HDV=SlowReboundRange=(80000.0, -2437.0, 32)
HDV=SlowReboundSetting=16
HDV=FastReboundRange=(13000.0, -274.0, 32)
HDV=FastReboundSetting=16
HDV=
}
}
UpgradeType="SWAY BARS"
{
UpgradeLevel="STOCK"
{
Description="Standard 25mm/17mm SWay Bars"
}
UpgradeLevel="WHITELINE 27mm/20mm"
{
Description="Whiteline sway bars 27mm front and 20mm rear. 3 way adjustable."
Price=-1
HDV=[SUSPENSION]
HDV=FrontAntiSwayRange=(0.026, 0.001, 4)
HDV=FrontAntiSwayRate=(1.1e11, 4)
HDV=RearAntiSwayRange=(0.019, 0.001, 4)
HDV=RearAntiSwayRate=(1.1e11, 4)
}
UpgradeLevel="WHITELINE 27mm/22mm"
{
Description="Whiteline sway bars 27mm front and 22mm rear. 3 way adjustable."
Price=-1
HDV=[SUSPENSION]
HDV=FrontAntiSwayRange=(0.026, 0.001, 4)
HDV=FrontAntiSwayRate=(1.1e11, 4)
HDV=RearAntiSwayRange=(0.021, 0.001, 4)
HDV=RearAntiSwayRate=(1.1e11, 4)
}
}
And suspension related... Notice how much has to be changed to make the suspension changes work correctly.
UpgradeType="STEERING LOCK"
{
UpgradeLevel="STOCK"
{
Description="stock steering lock"
}
UpgradeLevel="STREET-STYLE"
{
Description="Steering Rod Spacers For Maximum Lock 48*"
Price=-1
HDV=[CONTROLS]
HDV=SteerLockRange=(48.0, 1.0, 1)
}
}
And last but def not least is the steering lock values... As it turns out if you did your homework and your HDV and PM correctly the max lock you can get safely for each cars suspension set up will be what can be safely acheived in real life. With the stock high ackerman setup the max achievable lock is 52* if the car is lowered all the way. At stock height 48 is as far as it can go. For the sake of not getting phycho wheel wobble we set it at the lower of the two values.
If you adjusted the suspension file to reduce the ackerman as a pro drifter would do in real life by cutting the knuckles even more lock would be achieveable. Up to 58 degrees with this car. But this is a street modified car not a track one so we would not do that to it.
------------------------------------------------------------------------------------------------
In an SFX file their are of course alot of lines calling to sound files for each situation. These are the important lines to mess with here.
// power inside //This is the on the throttle sound effect being played
EngRPMPowerInside=(0, 1.00, 1500.00, 1250.00) //These are the ranges for each sound. They are (file number, rpm when sound begins, rpm when sound ends, rpm that sound was recorded) Notice the overlap from begin of next sound to end of previous sound, this ensures a smooth clean audio mixture. You'll notice not all sounds are at their recorded range and that's because their was a gap that had to be filled and everything had to be stretched to fill it evenly.
EngRPMPowerInside=(1, 1000.00, 2500.00, 3250.00)
EngRPMPowerInside=(2, 2000.00, 3500.00, 4250.00)
EngRPMPowerInside=(3, 3000.00, 4500.00, 5250.00)
EngRPMPowerInside=(4, 4000.00, 6500.00, 6250.00)
EngRPMPowerInside=(5, 6000.00, 8500.00, 7250.00)
// coast inside //These are off the trottle sounds inside the car.
EngRPMCoastInside=(0, 1.00, 1500.00, 1250.00)
EngRPMCoastInside=(1, 1000.00, 2500.00, 3250.00)
EngRPMCoastInside=(2, 2000.00, 3500.00, 4250.00)
EngRPMCoastInside=(3, 3000.00, 4500.00, 5250.00)
EngRPMCoastInside=(4, 4000.00, 6500.00, 6250.00)
EngRPMCoastInside=(5, 6000.00, 8500.00, 7250.00)
// power outside //These are on throttle sounds from the exterior view
EngRPMPowerOutside=(0, 1.00, 1500.00, 1250.00)
EngRPMPowerOutside=(1, 1000.00, 2500.00, 3250.00)
EngRPMPowerOutside=(2, 2000.00, 3500.00, 4250.00)
EngRPMPowerOutside=(3, 3000.00, 4500.00, 5250.00)
EngRPMPowerOutside=(4, 4000.00, 6500.00, 6250.00)
EngRPMPowerOutside=(5, 6000.00, 8500.00, 7250.00)
// coast outside //Off throttle sounds from exterior view.
EngRPMCoastOutside=(0, 1.00, 1500.00, 1250.00)
EngRPMCoastOutside=(1, 1000.00, 2500.00, 3250.00)
EngRPMCoastOutside=(2, 2000.00, 3500.00, 4250.00)
EngRPMCoastOutside=(3, 3000.00, 4500.00, 5250.00)
EngRPMCoastOutside=(4, 4000.00, 6500.00, 6250.00)
EngRPMCoastOutside=(5, 6000.00, 8500.00, 7250.00)
BrakeRampSpeed=3.0 // volume ramps up to this speed in meters/second
BrakeBlendSpeeds=(10.0, 35.0) // blends between low- and high-speed brake hiss
BrakeFadeSpeeds=(25.0, 50.0) // fades out high-speed brake hiss between these speeds
BrakePressure=1.00 // defines how brake pressure affects brake hiss volume. This means it takes full brake pressure to get full volume.
-----------------------------------------------------------------------------------------------
This is from the cars cockpit file. I'm only including these to help fine tune the cockpit graphics a bit easier.
Eyepoint=(0.369, 0.85, 0.25) // Driver eyepoint (cockpit view only) ( LEFT/RIGHT, UP/DOWN, FORWARD/BACK) This is the 0,0 location of the seat in drivers view.
CameraTarget=(0.000, 0.78, 0.30) // Base target for all other views (swingman, TV cockpit, tracksides, etc.)
TVOffset=(0.0,0.3,-0.1) // NEW additional offset for tv cockpit view (defaults to 0,0,0)
MirrorPos=(0.0, 1.0, 0.0) // Mirror position
FrontWheelsInCockpit=0 //For indy cars or any other open wheel vehicle.
BodySparks=1 //Means body sparks when in contact with the ground, etc.
CockpitVibrationMag=0.002 //This is how much the camera shakes when in drivers view at speed.
SteeringWheelAxis=(0.0,0.4067,0.9135) // second value is SINE of the wheel angle, third value is COSINE of the angle. If these are wrong your wheel will be sitting at a retarded angle in the car and it will be very noticeable when you turn the wheel fully.
SpeedometerRange=(0, 201, 200, 310) //SpeedometerRange=(<minvalue>, <maxvalue>, <beginangle>, <endangle>) First two values self explanitory, speed in km/h. Last two values can get tricky. O degrees is pointing toward the center of the car. So left and right side drive cars will be opposite in these values. You have to fiddle with these going in and out of game and adjusting till they line up correclty. Drive a constant slow speed, a constant medium speed, and a constant high speed to ensure the range is correct matching speedo with HUD.
SpeedometerBackground=speedometer.tga
SpeedometerNeedleMAP=NEEDLE_WHITE.tga
SpeedometerNeedle=(0.75, 0.75)
SpeedometerClockwise=1 //1= needle will spin clockwise, 0= counterclockwise
SpeedometerCenter=(0.5, 0.5)
TachometerRange=(0, 8000, 200, 340) // TachometerRange=(<minvalue>, <maxvalue>, <beginangle>, <endangle>) Same as with speedometer except to check this value hold engine at idle, mid rpm, and at limiter using the extra info to check the actual rpm is correct with the guage.
TachometerBackground=tachometer.tga
TachometerNeedlemap=NEEDLE_WHITE.tga
TachometerNeedle=(0.75, 0.75)
TachometerClockwise=1
TachometerCenter=(0.5, 0.5)
-----------------------------------------------------------------------------------------------
It has taken me years to get this good at rfactor physics and it takes TONS of research to get all the correct data needed. Dont worry if it takes you several months or longer to even fully understand this guide fully. I had a guide to help me as well and i certainly didnt understand it on the first go around.
Have fun and happy modding
Remember, KEEP IT REAL GUYS!!
Now have some video's of me drifting/driving this car in both game form and real life form..
Noisy tribes s13 (the phyiscs in the tutorial)
Real life dragon tail run at night.. for compairison.
Driftin in the rain Night and day footage from 2 and a half years ago
Older drifting in rain. and some in dry parking lot.
Ive had my car for a long time. Back in 07 with broken s13 240sx
06 whit bone stock s13 240sx
Tearin it up at NIKKO in my future plans complete 240sx with 316rwhp KA-T in rfactor.
Some MTN runs back in 06 with bone stock s13 240sx. BTW I plan on building all these tracks in rfactor I already have them mapped out in GE and imported to BTB. These are in chronological order all from when i first got my car and used these vids to help my technique. I quit recording my grip runs in 07.
These are videos i made just so i can make the rfactor track accurate, so no racing. Just cruising in the old daily driver accord
And that run at the dragon again, it was a few months ago with an exploding ka lol. This run finished off the headgasket. It's fixed now.