Project CARS Official Force Feedback Setup Guide
Project CARS Force Feedback Setup Guide
The Force Feedback system was developed with two goals in mind:
- Be as simple as much as possible such that all parameters may be exposed in the GUI
- Handle well the nuances in the variety of wheels supported
We think that some force feedback parameters are best served by being in the car setups. Two basic goals of setup are balance and feel. FFB is very important to feel, and how a car is setup may benefit from setup specific FFB adjustments. This is fundamentally a concession that simulation racing is a sport similar to, but distinct from, real life racing. In real life racing we deal with things not relevant to sim racing such as seat belt tension, visor choice, suit ventilation, and wrenching changes in the hot sun. In sim racing we have FFB latency, dynamic range, and non linearity as some of those things we have to deal with that real life racing does not.
So we put the parts of FFB adjustment that couple with traditional setup in with traditional setup. In other words we are saying part of FFB can be part of setting up a sim car. This way some FFB parameters will couple, and therefore save and transfer, with the setup they are matched to. Therefore there is a Force Feedback tab in the setup GUI.
An example of why this makes sense is the fact that adjusting caster will change FFB magnitude. Caster is inarguably a valid setup parameter. But it is also inarguable that the FFB changes with caster. So it directly follows that a FFB that feels good with a particular caster will need FFB adjustment if the caster is adjusted (to feel as good). Other obvious examples include changing tire choice or steering ratio, but almost anything in setup can have similar considerations.
Another case to be made is track considerations. For example, a setup for Montreal might stress Fx more, leveraging limited device dynamic range for heightened braking feel. On the other hand, a setup for Indy might have no Fx at all, to focus in more on onedge Fy and Mz, or maybe even lean mostly on Seat of Pants and Gut.
Other parameters are more specific to the controller itself, and these are in the Controller section.
There are many ways to deal with setting up force feedback. Again, setting up FFB is very analogous to setting up any other aspect of the car, such as suspension. The easiest is to just do nothing, and use the defaults. This is fine. The defaults in general are both immersive and informative, good in both, specializing in neither. Just as the default suspension settings are balanced, neither overly safe nor aggressive.
Another approach is to thoroughly understand how the force feedback system works, and “engineer” settings that are perfect for you. This is similar to a setup engineer setting up suspension using all available information and knowledge. For this approach, this guide provides a Reference section.
Yet another approach is to try FFB setups from other drivers. This is the same as any other setup sharing, including suspensions.
And finally, one could understand a handful of basics and tune the FFB pretty well to suit one’s style without getting too deep. This is the same as using one of the suspension cause and effect tables or references. For this approach, this guide provides a bloglike section of a session setting up FFB.
Log of setting up a Fanatec GT3RS on Formula B, starting from a new profile.
The choice of wheel is because this wheel has been the trickiest wheel for me to get the FFB to feel right in the past on other sims. It is a fine wheel (with a wonderful suede grip), but just needs a little help to shine.
First, I select the car, the Formula B. I will eventually be using my favorite tires for this car, the Yiro Slicks, but to start off with, I’ll use the default Faretti tires, because the cars have been roughed out on default setups to have FFB in the same sort of magnitude range.
On track I will use the telemetry HUD so I get the FFB graph in the upper left. To keep this simple that is the only data, besides feel, that I will use.
The first track I’ll use is one of the laser scanned tracks whose bumpiness I like. Brands Hatch GP.
To continue with the suspension analogy, and the purpose of this section, here is a table here of FFB issues and fixes (I’ll likely flesh this out with more symptoms using WMD feedback).
Step 1 -- Just try out the default FFB.
For me the wheel was dull, draggy, and not very informative compared to what I like. It feels thick and soft. My target is going to be to make the FFB vibrant and informative, and possibly live with some latency induced oscillation vulnerability.
Step 2 -- Remove drag
Lots of wheels have mechanical drag. Some a lot more than others. The Fanatec wheels in particular have a lot of drag, which is probably why they have their DRI modes (I recommend not using DRI modes, instead using the technique of this section).
Here is the technique I use:
- Goto Force Feedback in the car setup. Set Master Scale to 0. We want no force at all from the physics for this step.
- GotoControllerFFBCalibrationandsetPerWheelMovementtoanegativevalue,and Per Wheel Movement squared to a smaller positive value. The negative value provides antidrag to counter the wheel drag. The positive squared value provides a sort of safety net to keep fast wheel movements from feeling weird, or worse, accelerating the wheel.
C. Test the wheel on track by jarring it at different speeds. Keep adjusting the values until the wheel is very free moving but never accelerates, and slowly comes to a stop, at all jarring speeds. For this wheel I came up with Per Wheel Movement at 0.19 and Per Wheel Movement Squared at 0.10.
D. When you have values that you like, go back to the car setup and reset it so that the Master Scale is back to default.
Note that the wheel I am doing this with, the Fanatec GT3RS is relatively high in drag. Which is fine. But that means these values are higher than you might come to with say a Logitech G25/G27, which is rather low drag. Also, I am not using the DRI mode of the Fanatec wheel, which does the same thing we are doing here, but has only five levels. We can fine tune much better using this ingame method.
Step 3 Configure with respect to saturation/clipping
This could also be called “configuring to taste within the constraints of the wheel you have”
First, some people (in fact most casual drivers who try my rig when I have a lower force wheel on it) prefer a little clipping if that means the force around center is tighter and the behavior is linear. I think that might be the closest to what many people expect a car to feel like so far as a lower end wheel can provide.
So this section is very taste specific on lesser wheels. On high end wheels, you can usually just go with a simple linear setup that does not clip. Although even in the high end wheel case, there is some taste involved, similar to in a real life car, such as how much caster to dial in for feel purposes.
But on this consumer wheel I am using, my goal is to get as much information through the wheel about what the car is doing in a way that is intuitive enough to me where it at least feels natural.
So now I briefly comment on my driving style with respect to FFB. I need good information from FFB when setting the car on early turn in, and even more information during mid to late exit modulating the throttle. Mid corner I get extra information from tire sound and visual. So I want to stress information at lesser FFB levels. I still want FFB not fully saturated at load, but precision at lower levels is worth some tradeoff for me in this exercise.
So I work from center out. I get center and low load where I want it first, then apply anticlipping in such a way that I don’t mess that up. At least to start off with. But much like setting up a car, changing one thing may alter many other things and therefore require iterating on settings to get things just right. First I see what a straight linear FFB setup feels like. So in controller FFB disable everything from deadzone removal range down. In my case, tire force 100 is already in the ballpark, which should usually be the case. I almost never touch Tire Force. This straight linear setup clips some, but we want that to have enough signal to work with.
My GT3RS has a little bit of a deadzone. Not bad, but enough to notice and make it feel slightly like there is play in the steering. So I adjust the Deadzone Removal Range to 0.01 and the Deadzone Removal Falloff maybe half that, so 0.005 (at the time of this writing the GUI does not show the number to that precision, but you can set it...5 clicks to the right from zero).
With deadzone removal the thing to watch out for when you have too much is a “notch” or stickiness around zero force.
On track at this point the steering feels nice and snug around center, and had good information very early turn in and very late exit, but saturates far too early.
So we need to compress the signal such the the information I want steel feels right, but the wheel does not go numb with saturation too early. We have three primary options (with tools we’ll get to later to fine tune): the the Soft Clipping mechanism, Relative Adjust mechanism, and using FFB car setup to customize the forces. We’ll try Soft Clipping first, just because I happen to already know I’ll end up with Relative Adjust as my favored generic solution for this wheel and I want to cover Soft Clipping here as well. I will then also adjust a specific car using the car setup approach, which given time for a specific car and track, is my favorite.
Since we are working from center out we will set Soft Clipping (Half Input) to 1.0, and per the Reference description, “Setting this to 1.0 will match the derivative/slope of the output at zero input (so if you want the lowest forces to feel similar, and compress everything else). “
Now the FFB is starting to feel pretty good, although at this point we can notice two things we’d like to fix. First, we are not using all of the FFB, even in the highly loaded fast sweeper. This is evident in the FFB Telemetry HUD graph not reaching its limits. This is because Soft Clipping approaches full FFB but never reaches it. This is also what Soft Clipping (Full Output) is meant to correct for. Second, the higher forces are a bit vague, even though they are not saturated. There are a couple reasons for this. One is that the higher forces are now compressed, which makes variances feel less. The other is that some wheels, like the one I am using for this, are inherently less responsive at higher forces. This is what Scoop can be used to correct for, increasing how much dynamic range higher forces get.
The first fix we’ll do is Soft Clipping (Full Output), since that will give us more dynamic range and reduce the amount of Scoop we’ll need. This is a bit trial and error, because this operates on the input signal to the Soft Clipper. At 1.0 we know by definition we’ll be back to clipping the same amount as without the soft clipper, so we know to go higher than 1.0. After some iterations I come to 2.1.
Now it is starting to feel good enough where I would be happy with using this wheel. But we can still do a bit better.
Over time I’ve found 0.7 to be a good Scoop Knee and 0.15 a good Scoop Reduction. This provides a nice boost of high force feel in consumer wheels. Since we are doing that here, I’ll try that. (As of this writing, they also happen to be the defaults on consumer wheels).
OK, so that is really good for this wheel. But now lets try another approach: Relative Adjust
This settings are admittedly a little bit black magic in feel, even if you know exactly what they are doing, but when they are set well, they can increase the perceived dynamic range dramatically, with low enough side effects to be acceptable for most people (including me).
I prefer Relative Adjust Gain, which is sort of the overall power of the the processing of the FFB signal, to be dialed back a little bit from default, so about 0.70. However, I prefer the Relative Adjust Bleed to be a little higher than default at about 0.20. A higher bleed, which is more time for the dynamic relative force to fade off, allows for more useful “information” to come through in the high forces. Too high of a bleed however results is “stickiness” of force, which can start to feel very wrong. Relative Adjust Clamp is sort of the nominal max constant force, around which Relative Adjust works. At the default, which is nearly 1.0, relative adjust mainly working only in the force reducing direction (half of the signal). You can feel it that way, but I prefer to have a little more headroom to feel relative adjust fully, so I set this to 0.85.
Since this is the same wheel as I used for the Soft Clipper approach, I find the same issue with the higher forces needing a little Scoop. I use the exact same settings, 0.7 for Scoop Knee and 0.15 for Scoop Reduction.
Car Force Feedback Setup
The idea here to use a straight linear controller FFB setup and adjust the car setup FFB to provide better information within the available bandwidth.
Reiterating my goal, I want to preserve the low force feel while improving information available at high forces. All else being equal, more immersion is better than less.
The key fact we will leverage is that Mz increases sharply at low slip angles, but then decreases back down to low force by peak slip angle. Very initial turn in is by definition (at least with “slow hand” driving) low slip angle (proceeding to higher slip angle). Late exit is also often low slip angle on the fronts, at least for my style, as the rear grip budget dominates driving.
Fy on the other hand peaks at peak slip angle. So starting with a linear setup, one easy thing to try is to simply reduce Fy. Reducing Fy to 40.0 has exactly the desired effect. However, in an FB I am already wanting more information on the rear than front before apex. Fy is front tire side load information. Maybe replacing that with rear tire sideload information would be even better.
For my taste this turns out to be the case. I set Fy to zero, and replaced it with SOP. I tried SOP Lateral first, since that is directly what I asked for and it worked well. However, SOP Differential had basically the same information, but with more high frequency immersive forces. So I used SOP Differential at 100 with 10 damping.
The above methods are not mutually exclusive. You can try mixing them together. For example, even though I use the Car Force Feedback Setup often, I also have Relative Adjust in my controller setup for a wheel like the one I am using for this.
Tire Change To Yiro
Changing the tires from Faretti to Yiro resulted in no need of FFB change for any of the methods. The grip levels of the the tires and their Mz were close enough to not need any adjustment. Another track Circuit de BarcelonaCatalunya GP
So I tried another track, and feels really good, no issues.
So then I tried the two controller FFB methods (Soft Clipping and Relative Adjust) on some other cars.
|Formula A||Default||Feel good overall, but probably too much clipping in sweepers.
Since the FA is the only one a little off from ideal, and the FA is inherently the car with the largest force dynamic range, we will go to FA specific FFB to fine tune. Reducing Master Scale to 22 does the trick.
|Formula C||Default||Feels very good.|
|Lotus 72D||72 Slick Tires||The 72 tires are a little lower grip than the default tires, so the Fy component of FFB will be less. This shows in that we do not use the full FFB dynamic range. So in the setup we raise Master Scale to 40, which fixes this nicely.|
|Lotus 49||Vintage Formula 1967 Tires||Feels very good.|
|Ford Mustang Boss 302R1||Default||Feels very good.|
Reference GUI vs. Tweakers
This guide was originally written when the only way to adjust FFB was FFBTweaker files. So the names of parameters are listed with their FFBTweaker names first, and then the GUI “path” in blue.
In order to have a tweaker file work, you now have to use TopologyVersion 4. This is the same topology as version 3 (which is what the GUI uses), but forces the tweaker to be used instead of GUI settings.
- ● green input signal
- ● yellow components parameterized as part of car setup
- ● blue components parameterized as part of controller setup
The four front tire input signals are the component parts of the whole tire induced torque coming through the rack. So if these are all scaled to the same thing (by convention 1.0), this is the same as straight rack torque.
The two rear tire signals are to enable the Seats of Pants concept. Neither of these go through rack geometry though, as there is no rear rack and steering wheel. These just go straight to the seat.
Finally, the G force signal is to enable the Gut physical simulation concept. Tire Force (Tire Force)
FORCE FEEDBACK CALIBRATION
This is simply an overall multiplier on all of the input tire forces. Note that G forces, the input to Gut, are not scaled with this parameter. Use this parameter to scale for a controller overall. Use SpindleMasterScale to scale per car or setup.
EDIT TUNING SETUP / FORCE FEEDBACK / SPINDLE
SpindleMasterScale (Master Scale)
This is a multiplier on all of the front tire forces. This was added to allow the following four scale to default to 1, and be more intuitively like “weights”.
SpindleFxScale (Fx Scale)
SpindleFyScale (Fy Scale)
SpindleFzScale (Fz Scale)
SpindleMzScale (Mz Scale)
Individual scales on the components going through the spindle/rack. To get pure rack forces, leave these all at the same value. 1.0 is a convenient value for this, and use SpindleMasterScale to dial overall spindle force.
SpindleFxLoPass (Fx Smoothing)
SpindleFyLoPass (Fy Smoothing)
SpindleFzLoPass (Fz Smoothing)
SpindleMzLoPass (Mz Smoothing)
Individual smoothing on the components going through the spindle/rack. Typically Fx requires more smoothing than the others. 0.0 is no smoothing. 1.0 is normalized to “really smooth but still some useful signal”. Values above 1.0 are valid.
SpindleArm (Arm Angle)
SpindleArm is the angle, in degrees, of the attachment of the tie rod to the spindle. Zero degrees means the tie rod is attached directly aft of the axis. That particular distance, how far aft, is not critical, because that just amounts to scale, which we adjust based on squeezing into the device range anyway. The angle though matters a lot in how the forces feel when the steering wheel is not straight.
90 degrees is then with the tie rod directly inboard of the axis, which physically would result in the inability to steer. Realistic values I'd guess are between 0 and 45.
Note that the per force Soft Clippers from Topology 2 have been removed. This is one of the adjustments to make FFB control completely from the GUI reasonable.
Seat of Pants
EDIT TUNING SETUP / FORCE FEEDBACK / BODY & SOP
The basic idea of “Seat of Pants” is to present information from what is happening at the rear of the car through force feedback. There are two physical forces that are used. The rear side loads and the rear vertical loads.
SoPScale (SoP Scale)
Overall scaling of Seat of Pants
SoPLateral (SoP Lateral Scale)
Scaling of the rear side load effect.
SoPDifferential (SoP Differential Scale) Scaling of the rear vertical load effect, which is actually the difference between right and left vertical loads.
SoPLoPass (SoP Damping) Smoothing of the Seat of Pants signal. 0.0 is no smoothing. 1.0 is normalized to “really smooth but still some useful signal”. Values above 1.0 are valid.
Relative Torque Adjust
FORCE FEEDBACK CALIBRATION
This is an all new concept for Topology 3. The idea here is to present torque to the wheel based on the change in torque through time instead of as absolute torque. This means that with reasonable parameters, the wheel will never fully saturate. But unlike soft clipping (which can also prevent saturation), the high end torques do not get as heavily squeezed.
There is one side effect to tune out though, and that is the wheel losing center over time. If all torque was completely via “Relative Torque Adjust”, centered torque would move around as the wheel goes through previously saturating torques. To prevent this, we use the bleed value to “bleed” absolute torque back into the mix.
RelativeGain (Relative Adjust Gain) This is the scaling on the amount of calculated torque change that is applied. 1.0 is the intuitively correct value. 0.0 turns this component off.
RelativeBleed (Relative Adjust Bleed) This is a time value for bleeding absolute torque back in. 1.0s is a good starting point.
RelativeClamp (Relative Adjust Clamp) This is the force to wheel value (so in the 0.0 to 1.0 range) where the non absolute running magnitude is clamped. This does not clamp the overall value, and torques can still go above this, but it does exert a strong clamping effect. 1.0 is a good starting point for this. Values greater than 1.0 can make sense if soft clipping is also used. Values less than 1.0 makes sense to give some headroom for spikes to be a little more symmetrical around the clamp.
Note that with this component on, and with clamp at 1.0 or less, and not too much bleed, there is no full saturation. What this means is that what was too much force before now becomes more force effects felt near full force. But this too can become too much, as that can start to overpower the more subtle unsaturated force range. So you still need to dial overall force (via Tire Force and the scales), but that scaling can become an interesting control, not just something to avoid saturation with.
EDIT TUNING SETUP / FORCE FEEDBACK / BODY & SOP
This is a simulation of the G forces on the body of the driver. Basically, G forces move the body around via a physical simulation, and the result of that simulation is translated to force feedback.
GutScale (Body Scale) Magnitude of the gut simulation in FFB. 1.0 is normalized to “significant but not overpowering”.
GutLongScale (Body Longitudinal Scale) Magnitude of longitudinal effect applied. This is a scaling of the baseline lateral effect. At 0.0, the gut effect will be all based on lateral G’s. With non zero GutLongScale, under braking G’s, the lateral effect will increase, and under acceleration G’s the lateral effect will decrease.
This is the mass of the simulated “gut”, which should not be the whole human body. It should be some lesser portion, roughly being the effective amount of mass not “locked down” rigid by the seat and seatbelts. This is a very fuzzy concept, so the number is really just a very rough ballpark number. This is fine, because the simulation is not overly sensitive to this number. It matters, but it is not extremely critical.
The default is 50 kg.
GutStiffness (Body Stiffness) Stiffness of the gut with respect to the car. So in a kart this may be lower. In an F1 car this is probably pretty high.
GutDamping (Body Damping) This is a multiplier on critical damping of whatever mass and stiffness is set. Therefore, 1.0 means exactly critically damped.
FORCE FEEDBACK CALIBRATION
The arm/linkage simulation simulates that the wheel is driven by a non rigid linkage, namely the driver’s arms, as well as play and mass in the linkages themselves.. However, this is done purely with force feedback. The position of the the controller still directly dictates the location of the simulation wheel.
This simulation also serves as the main global smoothing stage.
ArmScale (Linkage Scale) Ratio of incoming signal to pass through the arm/linkage simulation. 0.0 if off. 1.0 is application of all incoming signal.
Mass of “arms”, with respect to simulation. This does not necessarily mean the average mass of two human arms. This is the effective mass with respect to the degree of freedom that is the wheel/controller.
ArmStiffness (Linkage Stiffness) Springlike stiffness of the “arms”. Stiffer settings will pass through higher frequency information. Softer settings will smooth more.
ArmDamping (Linkage Damping) This is a multiplier on critical damping of whatever mass and stiffness is set. Therefore, 1.0 means exactly critically damped. Soft Clipping
FORCE FEEDBACK CALIBRATION
This compresses all force within range of the wheel, although the stronger the force, the more it is squeezed into the higher force range. In some ways this is like Log Scaling in previous topologies, but Soft Clipping guarantees all signal will squeeze into the range, however compressed. On the other hand, approaching linear behavior is not implicit with soft clipping, as it can be with log scaling.
SoftClip (Soft Clipping (Half Input)) The “half signal” for setting the soft clipper. The value set here is the input signal that will become 0.5 as an output signal. Setting this to 0.0 turns the soft clipping off. Setting this to 0.5 is maybe the closest approximation to linear while on, but is not linear. Setting this to 1.0 will match the derivative/slope of the output at zero input (so if you want the lowest forces to feel similar, and compress everything else). Therefore, less than 1.0 will amplify some lower force, and reduce larger forces. Greater than 1.0 will reduce all forces.
SoftClipUnity (Soft Clipping (Full Output)) Straight soft clipping will never reach full 1.0 magnitude, which means for lots of soft clipping scenarios, the full force of the wheel is never quite used, possibly to a noticeable level.
SoftClipUnity sets the expected maximum force that will hit the soft clipper, and rescales such that that force outputs at 1.0 (full force of wheel). This means saturation may be reintroduced if this is set too low, but it is useful to fine tune output, especially when the soft clipper is used more for nonlinear response than for antisaturation. Setting this to 0.0 turns the unity rescaling off.
FORCE FEEDBACK CALIBRATION
This is a new component for Topology 3, and is directly in response to some devices going flat in response at higher force levels. This is somewhat the opposite nonlinear tool as the soft clipper, but is shaped differently, to better fit the nature of devices (and be easier to control).
So what scoop does is reduce lower forces more and high forces less, thereby increasing the slope of force where some devices reduce the slope of force. Since devices seem to do this in two more or less linear regimes, with a knee in between, this is how this component works (in the opposite direction so as to counter the wheel). ScoopKnee (Scoop Knee) The input force level where the knee is at. If this is 0.0, this component is turned off.
ScoopReduction (Scoop Reduction) The input force reduction below the knee. Above the knee, the force slope is increased such that at 1.0 input force, the output force is 1.0.