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.
  2. FOR ASSETTO CORSA COMPETIZIONE: If you report issues with saved games, please always zip and attach your entire User/Documents/Assetto Corsa Competizione/Savegame folder!
  3. If your game executable is missing, please add your entire Steam directory to the exceptions in your antivirus software, then run a Steam integrity check or reinstall the game altogether.

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 Troubleshooting Lost FFB on Accuforce Thursday at 5:22 AM
    ACC Troubleshooting Need help tracking loss of FFB Mar 24, 2020
    ACC Gameplay FFB Mar 9, 2020
    ACC Controls & Peripherals T300 FFB way too light Mar 5, 2020
    ACC Controls & Peripherals which config files should i delete to have fresh ffb settings?!? Feb 23, 2020
    ACC Physics Spring effect ffb?? Feb 13, 2020
    Troubleshooting - Workarounds My logitech g27 ffb is not working properly Feb 10, 2020
    ACC Controls & Peripherals G27 FFB Disappearing [Hardware Issue] Feb 9, 2020
    ACC Physics ferrari losing ffb Feb 8, 2020
    ACC Troubleshooting Loosing FFB in Multiplayer Sessions - Fanatec DD1 Feb 6, 2020
    ACC General Discussions ACC FFB became like RF2? Feb 6, 2020
    ACC Controls & Peripherals FFB is terrible (even non existent, somehow) Feb 4, 2020
    Controllers and Peripherals Bugs & Issues Tabbing out of the game - Loss of FFB and freesync stops working. Jan 29, 2020
    ACC Troubleshooting FFB stops sometimes. Restart possible? Jan 20, 2020
    ACC Physics lack or no ffb information while turning Jan 19, 2020

  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. Lord Kunos

    Lord Kunos His master's voice. Staff Member KS Dev Team

    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. Lord Kunos

    Lord Kunos His master's voice. Staff Member KS Dev Team

    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. Lord Kunos

    Lord Kunos His master's voice. Staff Member KS Dev Team

    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};

    ZeroMemory( &eff, sizeof(eff) );
    eff.dwSize = sizeof(DIEFFECT);
    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. Lord Kunos

    Lord Kunos His master's voice. Staff Member KS Dev Team

    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. Lord Kunos

    Lord Kunos His master's voice. Staff Member KS Dev Team

    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. Lord Kunos

    Lord Kunos His master's voice. Staff Member KS Dev Team

    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. Lord Kunos

    Lord Kunos His master's voice. Staff Member KS Dev Team

    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