• Dear visitors,

    The email issue has been finally solved.
    Thank you for your patience and happy browsing.

    Team ACM.

QUESTION Debugging car handling and suspension

Alfrink

New Member
Hey! I've been trying to port a car I made in Automation to Assetto Corsa for a while now, but haven't managed to actually make it somewhat enjoyable to drive. After browsing through my .ini's trying to find the issue for way too long, I decided to put this up and hope that someone could give me a direction of what mistakes I might have made.

The two main symptoms are terrible understeer overall, as well as the brakes locking up way too fast without actually braking very hard. That tells me that the issue is no front end grip. However, I can't find why that might be.

My
[HEADER]
VERSION=2

[BASIC]
WHEELBASE=2.400 ; Wheelbase distance in meters
CG_LOCATION=0.30 ; Front Weight distribution in percentage

[ARB]
FRONT=13000 ; Front antiroll bar stiffness. in Nm
REAR=18000 ; Rear antiroll bar stiffness. in Nm


[FRONT]
TYPE=DWB ; Suspension type. DWB Double Wish Bones. STRUT McPherson strut
BASEY=-0.020 ; Distance of CG from the center of the wheel in meters. Front Wheel Radius+BASEY=front CoG. Actual CG height =(FWR+FBasey)+(RWR+Rbasey))/CG_LOCATION%
TRACK=1.54 ; Track width in meters (from pivot 3D placement of the 3d model of a wheel)
ROD_LENGTH=0.025 ; push rod length in meters. positive raises ride height, negative lowers ride height.
HUB_MASS=80 ; Front sprung mass
RIM_OFFSET=0.0105
WBCAR_TOP_FRONT=0.350, 0.100, 0.110 ; Top front car side wishbone attach point
WBCAR_TOP_REAR=0.350, 0.100, -0.110 ; Top rear car side wishbone attach point
WBCAR_BOTTOM_FRONT=0.400, -0.100, 0.010 ; Bottom front car side wishbone attach point
WBCAR_BOTTOM_REAR=0.400, -0.100, -0.210 ; Bottom rear car side wishbone attach point
WBTYRE_TOP=0.120, 0.100, -0.0108 ; Top tyre side wishbone attach point
WBTYRE_BOTTOM=0.090, -0.110, 0.0067 ; Bottom tyre side wishbone attach point
WBCAR_STEER=0.4000, -0.050, 0.068 ; Steering rod car side attach point
WBTYRE_STEER=0.120, -0.050, 0.0836 ; Steering rod tyre side attach point
TOE_OUT=-0.0005 ; Toe-out expressed as the length of the steering arm in meters
STATIC_CAMBER=-1.0 ; Static Camber in degrees. Actual camber relative to suspension geometry and movement, check values in game
SPRING_RATE=37000 ; Wheel rate stiffness in Nm. Do not use spring value but calculate wheel rate
PROGRESSIVE_SPRING_RATE=0 ; progressive spring rate in N/m/m
BUMP_STOP_RATE=90000 ; bump stop spring rate
BUMPSTOP_UP=0.05 ; meters to upper bumpstop from the 0 design of the suspension
BUMPSTOP_DN=0.04 ; meters to bottom bumpstop from the 0 design of the suspension
PACKER_RANGE=0.07 ; Total suspension movement range, before hitting packers
DAMP_BUMP=3000 ; Damper wheel rate stiffness in N sec/m in slow speed compression
DAMP_FAST_BUMP=2500 ; Damper wheel rate stiffness in N sec/m in fast speed compression
DAMP_FAST_BUMPTHRESHOLD=0.10 ; Damper bump slow/fast threshold in seconds
DAMP_REBOUND=4200 ; Damper wheel rate stiffness in N sec/m in slow speed rebound
DAMP_FAST_REBOUND=2500 ; Damper wheel rate stiffness in N sec/m in fast speed rebound
DAMP_FAST_REBOUNDTHRESHOLD=0.10 ; Damper rebound slow/fast threshold in seconds


[REAR]
TYPE=DWB
BASEY=-0.020 ; Distance of CG from the center of the wheel in meters. Rear Wheel Radius+BASEY=Rear CoG Actual CG height =(FWR+FBasey)+(RWR+Rbasey))/CG_LOCATION%
TRACK=1.54
ROD_LENGTH=0.030
HUB_MASS=80
RIM_OFFSET=0.001
WBCAR_TOP_FRONT=0.500, 0.040, 0.150
WBCAR_TOP_REAR=0.500, 0.040, -0.150
WBCAR_BOTTOM_FRONT=0.500, -0.150, 0.150
WBCAR_BOTTOM_REAR=0.500, -0.150, -0.150
WBTYRE_TOP=0.140, 0.110, -0.0047
WBTYRE_BOTTOM=0.140, -0.150, 0.0772
WBCAR_STEER=0.500, -0.160, -0.055
WBTYRE_STEER=0.140, -0.150, -0.070
TOE_OUT=-0.0001
STATIC_CAMBER=-1.0
SPRING_RATE=30000
PROGRESSIVE_SPRING_RATE=0
BUMP_STOP_RATE=90000
BUMPSTOP_UP=0.045
BUMPSTOP_DN=0.035
PACKER_RANGE=0.07
DAMP_BUMP=2900
DAMP_FAST_BUMP=2400
DAMP_FAST_BUMPTHRESHOLD=0.10
DAMP_REBOUND=4100
DAMP_FAST_REBOUND=2400
DAMP_FAST_REBOUNDTHRESHOLD=0.10

[GRAPHICS_OFFSETS]
WHEEL_LF=-0.0 ;Left front graphical offset of the wheel positioning in the x axis (width). + is left - is right movement
SUSP_LF=-0.0 ;Left front graphical offset of the suspension positioning in the x axis (width). + is left - is right movement
WHEEL_RF=0.0 ; Right front as above
SUSP_RF=0.0 ; Right front as above
WHEEL_LR=-0.0 ; Left rear as above
SUSP_LR=-0.0 ; Left rear as above
WHEEL_RR=0.0 ; Right rear as above
SUSP_RR=0.0 ; Right rear as above

[DAMAGE]
MIN_VELOCITY=30 ; MINUMUM VELOCITY TO START TAKING DAMAGE
GAIN=0.0006 ; AMOUNT OF STEER ROD DEFLECTION FOR IMPACT KMH
MAX_DAMAGE=0.05 ; MAXIMUM AMOUNT OF STEER ROD DEFLECTION ALLOWED
DEBUG_LOG=1 ; ACTIVATES DAMAGE DEBUG IN THE LOG
is based the formula k car, which wasn't particularly helpful as its suspension setup is quite different from what I need for a road car. I looked around in various threads in this forum and found occasional bits and pieces of what I'd have to change. For example, the formula k car doesn't actually steer very much even on full lock. Changing this didn't help too much as I just get understeer when turning in more, even at 10kph; the turning circle of my car is way too large. I also used the Content Manager showroom to try to replicate the front suspension setup of the Mazda MX5, and while I felt like it improved things a bit, handling is still nowhere near realistic.



My
[HEADER]
VERSION=10

[COMPOUND_DEFAULT]
INDEX=0

[FRONT]
NAME=Street
SHORT_NAME=ST
WIDTH=0.2150
RADIUS=0.32000
RIM_RADIUS=0.2415
ANGULAR_INERTIA=1.5080
DAMP=491
RATE=237300
DY0=1.6000
DY1=-0.0440
DX0=1.5520
DX1=-0.0450
WEAR_CURVE=__cm_tyre_wearcurve_front_0.lut
SPEED_SENSITIVITY=0.003473
RELAXATION_LENGTH=0.07881
ROLLING_RESISTANCE_0=10
ROLLING_RESISTANCE_1=0.0010211
ROLLING_RESISTANCE_SLIP=4748
FLEX=0.00077109
CAMBER_GAIN=0.112
DCAMBER_0=1.16
DCAMBER_1=-14
FRICTION_LIMIT_ANGLE=8.36
XMU=0.28
PRESSURE_STATIC=31
PRESSURE_SPRING_GAIN=8066
PRESSURE_FLEX_GAIN=0.44
PRESSURE_RR_GAIN=0.51
PRESSURE_D_GAIN=0.0038
PRESSURE_IDEAL=38
FZ0=2437
LS_EXPY=0.8409
LS_EXPX=0.9120
DY_REF=1.250
DX_REF=1.270
FLEX_GAIN=0.0250
FALLOFF_LEVEL=0.87
FALLOFF_SPEED=4
CX_MULT=1.02
RADIUS_ANGULAR_K=0.0155
BRAKE_DX_MOD=0.05
__CM_SOURCE_ID=anderlink_sport

[REAR]
NAME=Street
SHORT_NAME=ST
WIDTH=0.2350
RADIUS=0.32000
RIM_RADIUS=0.2415
ANGULAR_INERTIA=1.5440
DAMP=493
RATE=252804
DY0=1.6163
DY1=-0.0440
DX0=1.5683
DX1=-0.0450
WEAR_CURVE=__cm_tyre_wearcurve_rear_0.lut
SPEED_SENSITIVITY=0.003417
RELAXATION_LENGTH=0.07888
ROLLING_RESISTANCE_0=10
ROLLING_RESISTANCE_1=0.0010175
ROLLING_RESISTANCE_SLIP=4754
FLEX=0.00067656
CAMBER_GAIN=0.114
DCAMBER_0=1.16
DCAMBER_1=-14
FRICTION_LIMIT_ANGLE=7.97
XMU=0.28
PRESSURE_STATIC=31
PRESSURE_SPRING_GAIN=8512
PRESSURE_FLEX_GAIN=0.44
PRESSURE_RR_GAIN=0.52
PRESSURE_D_GAIN=0.0038
PRESSURE_IDEAL=39
FZ0=2794
LS_EXPY=0.8548
LS_EXPX=0.9287
DY_REF=1.251
DX_REF=1.271
FLEX_GAIN=0.0254
FALLOFF_LEVEL=0.87
FALLOFF_SPEED=4
CX_MULT=1.02
RADIUS_ANGULAR_K=0.0085
BRAKE_DX_MOD=0.05
__CM_SOURCE_ID=anderlink_sport

[THERMAL_FRONT]
SURFACE_TRANSFER=0.0134
PATCH_TRANSFER=0.00027
CORE_TRANSFER=0.0003675
INTERNAL_CORE_TRANSFER=0.006013
FRICTION_K=0.05771
ROLLING_K=0.21
PERFORMANCE_CURVE=__cm_tyre_perfcurve_front_0.lut
GRAIN_GAMMA=0.9622
GRAIN_GAIN=0.40
BLISTER_GAMMA=1.0000
BLISTER_GAIN=0.399628904147325
COOL_FACTOR=2.79
SURFACE_ROLLING_K=0.99720

[THERMAL_REAR]
SURFACE_TRANSFER=0.0140
PATCH_TRANSFER=0.00027
CORE_TRANSFER=0.0003791
INTERNAL_CORE_TRANSFER=0.005260
FRICTION_K=0.04794
ROLLING_K=0.20
PERFORMANCE_CURVE=__cm_tyre_perfcurve_rear_0.lut
GRAIN_GAMMA=0.9603
GRAIN_GAIN=0.40
BLISTER_GAMMA=1.0000
BLISTER_GAIN=0.376930068176741
COOL_FACTOR=2.93
SURFACE_ROLLING_K=0.99730

[__CM_FRONT_ORIGINAL]
NAME=Street
SHORT_NAME=ST
WIDTH=0.2150
RADIUS=0.32000
RIM_RADIUS=0.2415
ANGULAR_INERTIA=1.5947
DAMP=494
RATE=264715
DY0=1.6000
DY1=-0.0440
DX0=1.5520
DX1=-0.0450
WEAR_CURVE=__cm_tyre_wearcurve_anderlink_soft.lut
SPEED_SENSITIVITY=0.003382
RELAXATION_LENGTH=0.07891
ROLLING_RESISTANCE_0=10
ROLLING_RESISTANCE_1=0.0010154
ROLLING_RESISTANCE_SLIP=4763
FLEX=0.00063226
CAMBER_GAIN=0.115
DCAMBER_0=1.16
DCAMBER_1=-14
FRICTION_LIMIT_ANGLE=7.74
XMU=0.28
PRESSURE_STATIC=31
PRESSURE_SPRING_GAIN=8798
PRESSURE_FLEX_GAIN=0.44
PRESSURE_RR_GAIN=0.52
PRESSURE_D_GAIN=0.0038
PRESSURE_IDEAL=39
FZ0=3056
LS_EXPY=0.8642
LS_EXPX=0.9396
DY_REF=1.252
DX_REF=1.271
FLEX_GAIN=0.0258
FALLOFF_LEVEL=0.87
FALLOFF_SPEED=4
CX_MULT=1.02
RADIUS_ANGULAR_K=0.0085
BRAKE_DX_MOD=0.05
__CM_SOURCE_ID=anderlink_sport

[__CM_THERMAL_FRONT_ORIGINAL]
SURFACE_TRANSFER=0.0145
PATCH_TRANSFER=0.00027
CORE_TRANSFER=0.0003883
INTERNAL_CORE_TRANSFER=0.004678
FRICTION_K=0.04211
ROLLING_K=0.20
PERFORMANCE_CURVE=__cm_tyre_perfcurve_anderlink_soft.lut
GRAIN_GAMMA=0.9588
GRAIN_GAIN=0.40
BLISTER_GAMMA=1.0000
BLISTER_GAIN=0.312763480012729
COOL_FACTOR=3.03
SURFACE_ROLLING_K=0.99728

[__CM_REAR_ORIGINAL]
NAME=Street
SHORT_NAME=ST
WIDTH=0.2350
RADIUS=0.32000
RIM_RADIUS=0.2415
ANGULAR_INERTIA=1.7126
DAMP=497
RATE=280412
DY0=1.6163
DY1=-0.0440
DX0=1.5683
DX1=-0.0450
WEAR_CURVE=__cm_tyre_wearcurve_anderlink_soft.lut
SPEED_SENSITIVITY=0.003342
RELAXATION_LENGTH=0.07890
ROLLING_RESISTANCE_0=10
ROLLING_RESISTANCE_1=0.0010138
ROLLING_RESISTANCE_SLIP=4778
FLEX=0.00059223
CAMBER_GAIN=0.117
DCAMBER_0=1.16
DCAMBER_1=-14
FRICTION_LIMIT_ANGLE=7.51
XMU=0.28
PRESSURE_STATIC=31
PRESSURE_SPRING_GAIN=9123
PRESSURE_FLEX_GAIN=0.44
PRESSURE_RR_GAIN=0.53
PRESSURE_D_GAIN=0.0038
PRESSURE_IDEAL=39
FZ0=3369
LS_EXPY=0.8757
LS_EXPX=0.9524
DY_REF=1.252
DX_REF=1.272
FLEX_GAIN=0.0265
FALLOFF_LEVEL=0.87
FALLOFF_SPEED=4
CX_MULT=1.02
RADIUS_ANGULAR_K=0.0093
BRAKE_DX_MOD=0.05
__CM_SOURCE_ID=anderlink_sport

[__CM_THERMAL_REAR_ORIGINAL]
SURFACE_TRANSFER=0.0151
PATCH_TRANSFER=0.00027
CORE_TRANSFER=0.0004008
INTERNAL_CORE_TRANSFER=0.003927
FRICTION_K=0.03624
ROLLING_K=0.19
PERFORMANCE_CURVE=__cm_tyre_perfcurve_anderlink_soft.lut
GRAIN_GAMMA=0.9568
GRAIN_GAIN=0.40
BLISTER_GAMMA=1.0000
BLISTER_GAIN=0.3050326450832
COOL_FACTOR=3.15
SURFACE_ROLLING_K=0.99702
have been generated using the Content Manager tyre machine learning feature, having used info of all street tyres in the game. Widths are 215 front, 235 rear. According to the tyre debug app, the front tyres grain every corner, all the time, no matter the tyre temperatures.

I attached the car with its sfx folder removed for filesize reasons. The current version doesn't have visible wheels, but that shouldn't functionally change anything.

Thank you to anyone who'll be taking a look at this.

suspension.PNG
 

Attachments

Last edited:
Ok I had a quick look, changed a few things and I think it drives pretty nice, but with plenty room to tweak to how you like it.
Its still inherently understeery in steady state, as most street cars are and should be. But it'll rotate if you want it to, on power with TC off.
I'll list things I changed below, also note I was using the Alfa Romeo 4C as a bit of a reference, as its also a small, mid engined sports car.

  • Tyres - more or less fine to kunos street tyre standards, except the thermals kept them from getting much heat. I wouldn't worry about the graining, thats just because they are running slightly under optimal temps, but plenty of AC cars do the same.
  • Steer Lock - 400 degrees seems far too little for a street car. I made it 900 degrees with ~16 steering ratio, so similar to most street cars.
  • Inertia - i reduced this a bit, as you have to remember the 'dimensions' you use to create the polar inertia assumes the car is a solid dense mass, which it's not. It should be a bit more eager to change direction now.
  • Centre of Gravity - height seems too low, ~0.31m vs ~0.44m of the alfa 4c
  • Weight Distribution - too far back imo for this mid-engined car at 30%f. I moved it to 42% front. I also fixed the graphics offset (visual only) now that the physics is more correct.
  • Suspension Geometry - no real use copying other cars, as they all have their own restrictions to work around (so might have funky geometry to get around a packaging constraint or something). So what I did was try and make it as neutral and benign as possible, for example making the roll centres similar front and rear, minimising bumpsteer front/rear etc. You can then go on and tweak things in small increments to change different characteristics, maybe add some anti-dive/lift/squat, change roll centre heights, increase/decrease ackerman angle, camber gain, tweak caster etc. Plenty of things you can do if you fancy it.
  • Springs/Dampers Setup - again similar idea as above, just making it a safe base to get started on. So the ride frequency is pretty even front/rear (~2hz i think). I also set the ride height to make sure the suspension (when static) matches the actual geometry you input by default. So alignment changes should match pretty close ingame with what you enter in the setup/.ini files. Dampers were setup to be very conservative, 0.3 bump, 0.6 rebound or something like that front and rear.
  • Also note I made the setup.ini have very wide ranges from min to max for each value - this is useful in the development stages so you can edit the setup ingame and not be limited. When its time to finalise the car later, you can reduce those or remove stuff you dont want to be edited.
  • Electronics - the slip ratio limit for both TC and ABS was VERY low, which is why the ABS was kicking in all the time even with low braking force. I increased both to something more reasonable, both will of course still kick in when you push.
  • Brakes - reduced max braking force a bit, again this will help avoid the locking, though they are still plenty powerful enough to lock as they should. I also made it cockpit adjustable which is something I like to have when in development, but of course you can turn that off again once finished.
  • Differential - you had the diff lock set incorrectly - you had actual percentages instead of ratios. It should range from 0-1, not 0-100. So your 40 and 20 were both maxing out at 1 (100%), which wont help with the understeer issue. Its now set to what you wanted initially, 0.4/0.2 power/coast respectively, you can tweak this in the setup menu to feel how it affects the car.
Outside of the physics, i modelled a new 3d collider. Also I grabbed the driving position from the Alfa 4c as its a reasonable fit - though if you do ever model a interior, let me know and I can make a custom driving position/steering animation to suit.

Here is the upload of the version I tweaked, just remember to backup your old one first just incase you dont like it! It has no SFX again to save upload size:
https://www.dropbox.com/s/mj8emov4mix34uw/anderlink_sport.7z?dl=0

Excuse all the apps in the way, but just showing its pretty playful if you want it to be :)
 

Alfrink

New Member
Hey garyjpaterson! Thank you so much for all the work you put into this, it's a lot more than I was hoping for. I'll be starting to change what I have right now using your descriptions point by point in a bit, as I want to learn from the process and copy-paste as little as possible (,although I will probably copy the suspension setup, for instance).

Regarding the weight balance, I had that fixed already in a version I made yesterday but had no time to update this post. The reason for this was that I got confused about suspension placement and why it would move around with the center of gravity, which is why I changed the center of gravity from .45 (where it should be according to Automation) to this horrible value to get the suspension in line with where the wheels are supposed to be. I wasn't aware that there are offsets for this until yesterday. :p

Thanks for offering your help regarding seating position and animation! I might be going to try to model a simple interior, however my blender skills are very 'meh' and it probably wouldn't be worth to make someone else put too much effort into it. The model I included in this version is from the car I made in Automation, plus a few scaling changes, re-arranging the individual parts and setting the thing up to work in AC in general. A self-made body model for this car exists but is not nice to look at. :D

Again, thank you lots for your effort! It's a huge help to me.
 
Top