1. Do you need support for Assetto Corsa Competizione? Please use the proper forum below and ALWAYS zip and attach the WHOLE "Logs" folder in your c:\users\*youruser*\AppData\Local\AC2\Saved. The "AppData" folder is hidden by default, check "Hidden items" in your Windows view properties. If you report a crash, ALWAYS zip and attach the WHOLE "Crashes" folder in the same directory. Do not post "I have the same issue" in an existing thread with a game crash, always open your own thread. Do not PM developers and staff members for personal troubleshooting and support.
  2. As part of our continuous maintenance and improvements to Assetto Corsa Competizione we will be releasing small updates on a regular basis during the esports season which might not go through the usual announcement process detailing the changes until a later version update where these changes will be listed retrospectively.
  3. If ACC doesn't start with an error or the executable is missing, please add your entire Steam directory to the exceptions in your antivirus software, run a Steam integrity check or reinstall the game altogether. Make sure you add the User/Documents/Assetto Corsa Competizione folder to your antivirus/Defender exceptions and exclude it from any file sharing app (GDrive, OneDrive or Dropbox)! The Corsair iCue software is also known to conflict with Input Device initialization, if the game does not start up and you have such devices, please try disabling the iCue software and try again. [file:unknown] [line: 95] secure crt: invalid error is a sign of antivirus interference, while [Pak chunk signing mismatch on chunk] indicates a corrupted installation that requires game file verification.
  4. When reporting an issue with saved games, please always zip and attach your entire User/Documents/Assetto Corsa Competizione/Savegame folder, along with the logs and the crash folder (when reporting related to a crash).

AC FFB Implementation, Improvement Suggestions

Discussion in 'Suggestions' started by Pax, Nov 10, 2013.

  1. Pax

    Pax Rookie

    Hello All,

    this is Fredric at LifeOn2 Development, I develop high end FFB wheel systems, both HW and SW.

    (Improvement suggestions in green below)

    I have now had 90 min or so in AC Early Access, and I made a quick analysis of the FFB traffic it generates:

    AC Early Access uses two FFB effects, Constant Force and Damper. Damper strength is static and remains as set by the user in the control config interface.

    The Constant Force effect magnitude updates at 250 Hz, which is higher than in the first Technology Preview, where I measured it to 200 Hz. For comparison (and which most of you know by now...), rFactor2 updates at 400 Hz and iRacing at 60 Hz. With a high end wheel, it is a very significant difference between 60 and 400 Hz, and a noticeable difference between 250 and 400 Hz (and yes, higher is better :) )

    As some of you might remember, back when I analyzed the FFB traffic of the Technology Preview, I noticed quite a lot of redundant FFB traffic. I discussed this with Stefano, and he fixed that in the second Technology Preview (or at least he said he would). When I look at the Early Access FFB traffic, the redundant traffic is back! With the USB FFB drivers I use atm, 90% of the FFB traffic volume on the USB bus is redundant and can (should) be removed. rFactor2 does a great job here (in keeping redundant traffic low), and iRacing too after a clean up David did some time ago.

    Of course a "clever" FFB device driver stack can filter out redundant traffic using some logic, but I think most drivers are not that clever and just do what the caller asks them to.

    One more thing I noticed is that AC Early Access sets damper strength in an unorthodox way. This way of doing it leaves some room for interpretation on how it should be implemented in the FFB device firmware (the FFB protocol documentation is not crystal clear here), so IMO it is better to do it the way both iRacing and ISI, plus a reference Microsoft implementation does it.

    As for FFB feel, all-through good physics and vehicle (dynamics) models yield good FFB, and with my limited seat time I would say FFB is good in many respects, and in some extremely good.
     

  2. Similar Threads
    Forum Title Date
    ACC Controls & Peripherals Thrustmaster ts-xw ffb on pc Feb 26, 2024
    ACC Troubleshooting FFB is lost after going to the Menus Feb 3, 2024
    ACC Controls & Peripherals Redurce FFB on Curbs Jan 25, 2024
    ACC Controls & Peripherals What's happened to ACC FFB Jan 3, 2024
    ACC Controls & Peripherals Better FFB in ACC for low-medium range wheels? Dec 10, 2023
    ACC PS4/PS5/XB1/XBX/S General Discussions FFB coming and going at random with Thurstmaster TS-XW Aug 27, 2023
    ACC PS4/PS5/XB1/XBX/S General Discussions Weird ffb on G920 Aug 21, 2023
    ACC Controls & Peripherals No FFB from Simagic Alpha Mini Aug 5, 2023
    ACC PS4/PS5/XB1/XBX/S General Discussions FFB and FOV Jul 20, 2023
    Physics Bugs & Issues Lost of FFB - PC Jun 7, 2023
    ACC Controls & Peripherals PC - FFB issues Jun 7, 2023
    ACC Controls & Peripherals Thrustmaster T818 FFB issue Apr 28, 2023
    ACC Controls & Peripherals 1.9 & T300 - check here if you feel mushy ffb Apr 24, 2023
    ACC Physics [1.9] 4 wheel drifts have no FFB Apr 23, 2023
    ACC Troubleshooting No FFB after switch to Desktop Apr 20, 2023

  3. 3lfk1ng

    3lfk1ng Gamer

    Thank you for confirming my suspicion.

    I was unable to provide measurements to support what I was "feeling" but I could tell that (was I was calling "Polling") feedback frequency was far less than rFactor2. I hope that they can increase the rate, as much as the physics feel great, a great part of the immersion through my hands is being lost.
     
  4. Derek Speare

    Derek Speare Gamer

    This man , Pax, knows FFB.
     
  5. magicfr

    magicfr Sébastien Tixier

    Hey Fred,

    Can you tell me exactly what do you mean by redundancy?

    Is it sending twice the value at same frame? or same value to 2 consecutive frame?
    If it' s 1st then I agree it's a problem.
     
  6. magicfr

    magicfr Sébastien Tixier

    400hz, 250hz, I'm not sure your problem come from there. Try set damper to 0 in your driver. I have high torque wheel 12N.m and I don't have any issue with FFB, thing is my wheel don't support damper yet ;)
     
  7. hello Pax.. thanks for popping in.

    I'd like to dig into this.. so I ask the same question as magicfr.. what do you mean by redundant?
     
  8. magicfr

    magicfr Sébastien Tixier

    I was talking to some thrustmaster driver engineer Friday, and he told me , has long has you call effect->start once and effect->stop once at the end, you can call effect->setParameter many time has you want with no problem, it's just updating the effect's magnitude. ( off course withoutthe DIEP_START flag set ;) ). Also duration has to be set to INFINITE in this case.
     
  9. At the moment I am not flagging DIEP_START.
    I was adding the flag DIEP_DIRECTION everytime, but I guess that is redundant as well
     
  10. Ok still works on the G25 without sending DIRECTION all the time.
    So, right now I am just sending DIEP_TYPESPECIFICPARAMS.

    Cant think about anything more to do.. Sebastian, does your code looks some how like this?
    I fill up this huge structure everytime:

    DIEFFECT eff;

    LONG lDirection[2] = {1, 1};
    DICONSTANTFORCE cf;
    cf.lMagnitude=v*10000.0f;

    ZeroMemory( &eff, sizeof(eff) );
    eff.dwSize = sizeof(DIEFFECT);
    eff.dwFlags = DIEFF_CARTESIAN | DIEFF_OBJECTOFFSETS;
    eff.cAxes = 1;
    eff.rglDirection = lDirection;
    eff.lpEnvelope = 0;
    eff.cbTypeSpecificParams = sizeof(DICONSTANTFORCE);
    eff.lpvTypeSpecificParams = &cf;
    eff.dwStartDelay = 0;

    and then just call:

    lpFFConstantForce->SetParameters( &eff, fflags);
     
  11. magicfr

    magicfr Sébastien Tixier

    I just fixed some bug in my FFB implementation last Friday, it was making Thrustmaster latest driver stalled.
    My error was to setting DIEP_START every frame, the only flag now that a use is DIEP_TYPESPECIFICPARAMS.
    And to avoid the effect to always run, I call stop when the magnitude is 0 since 2 frame ,and start when the magnitude is not 0 anymore.
     
  12. Pax could you suggest how to "sniff" FF traffic?

    I wonder why my damper implementation is weird.. it is the only way I managed to get it to work. :p
    You mean it's weird because I am tweaking it everyframe?

    We are aligned now sebastian.. I am sending only that.. me to I used to send DIEP_START every frame and removed it after Pax's suggestion during the TP days.
     
  13. magicfr

    magicfr Sébastien Tixier

    hmm, I don't have acces to my code at home. I don't remember using changing the direction as the magnitude range is -10000,10000, but I don't know all my code by heart :)

    edit : so yes my code looks very similar to that :)
     
  14. magicfr

    magicfr Sébastien Tixier

    I think you need "hardware" to sniff FFB traffic. Or to create a "fake/virtual" HID FFB device.

    My wheel don't support damper so I can't relate, but maybe the only things weird is that the damper is not decreasing when the tire start rolling? It's a pure guess, I don't even know how the damper vary in AC.
     
  15. I wonder if "redundant" means sending up the same magnitude twice?
     
  16. magicfr

    magicfr Sébastien Tixier

    Yes this is it, but how, is this calling setParameters twice in same frame, it's useless for sure, and could overflow USB ( I doubt that USB can do 1000hz ). It's it's same magnitude 2 consecutive frame, I don't see a problem except it could means some problem in the sending because there's low probability it could happen, except when clipping or 0 magnitude.
     
  17. ok I am resetting the same damper value like an idiot every time but adding a cache to the FF signal shows that the occurrence of a signal with the same magnitude is VERY rare.
     
  18. magicfr

    magicfr Sébastien Tixier

    I totally agree about the FF Constant.
    About the damper, I'm still puzzled why you don't reduce damper effect when tire is rolling? or maybe you want to simulate the steering shaft friction?
     
  19. actually I used to to tricky stuff with it.. like adding damp as a function of wheel load (increased contact patch length) and a kind of simulation of gyroscopic effect of the rotating tyres.. but then I moved these things into the FF signal where they belong.
    So, at the moment there is no actual reason to have the effect updated per frame.. it is ALWAYS a constant value set from ini.

    Im going to push the update to Steam right now.. hopefully Pax will be kind enough to have a look at it and see if he can still see redundant traffic.
     
  20. Psit

    Psit Alien

    I have no idea of what you guys are tlaking about but i sure hope there is something good that comes out of this update :D

    Will drive the game later tonight.

    Btw, GREAT JOB on AC Kunos.
     
  21. magicfr

    magicfr Sébastien Tixier

    He he :) I made same experimentation, was also using a spring effect, magnitude and offset:) I think you have same idea, that if most effects is computed in the FFB driver instead of the simulation, it will be updated at higher rate.

    I still think with a combination of spring/constant/damper/friction it's possible, but it's hard to extract those components ( spring/damper/friction ) from the aligning torque computed in tire model and keep only the constant force.
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice