Hi, for past week i have been experimenting with a new idea to add "Canned" effects to BeamNG Force Feedback. As I have close to zero coding skills i made this using Google's Gemini LLM. Custom FFB Effects Mod adds a way to input our own custom FFB signal and alter existing one. Script features auto-loader which will automaticly load any effect present in effects folder, together with adding their settings to the table. So far i managed to get 2 working effects, Engine Rumble and Gearshift Kick. Engine Rumble: Script adds low speed/idle engine vibrations with many settings to adjust it for your preference. Vibrations will change on engine fuel type, cylinder number and intensify with unstable idle speed (for you junker lovers). Basicly what it does it tries to read engine layout from its internal part name, if engine (or sub engine parts) includes text like i4, v6 or f4, it adjusts frequency to match how many times that engine would fire per rotation. This results with more ugly work of I3 and very stable and subtle work of V12. (If it cannot read it will default to 4 cylinder engine, Sunburst and SBR do not include f4 in their engine names) Diesel engines will get a boost in vibration intensity while electrics will have no vibration at all. Unstable idle rpm will cause script to add additional forces shaking the wheel and increased engine load will also increase intensity (stop chugging your car uphill in high gear!) Script includes a lowpass filter instead of rpm limit as i believe this will be a better approach to cutting higher vibrations off. Gearshift Kick: Simple subtle kick to the wheel when we put it in gear! Script detects transmission type, manual and sequential transmission will kick while auto, dct and cvt will not. All effects are adjustable by simple VLUA console commands. Reloading a car will revert settings back to default or saved in CustomFFBSettings.json inside userfolder/current/settings directory (No autosave!) CustomFFBsave() - save settings to .json CustomFFBload() - load settings from .json CustomFFBset("effectname", "setting", "value") - adjust settings on the go CustomFFBdebug() - prints currently loaded effects and their settings I have set those effects to feel nice on my Moza R9 wheel with 14" wheel. I believe every wheel will need it's own settings to get them right. I tried making Speed Dependant Damping to make cars more stable at high speed but none attempt did work properly. Maybe someone with actual understanding of .lua will have better results. As script edits original hydros.lua file it won't be allowed on repo and will require update when BeamNG devs will update this file in future. Feel free to do whatever you want with it. Take is as a proof of concept or add your own effects! I included two example scripts which should help with making new effects.
Update! I managed to figure out how to better manipulate in game ffb and i present new effect! Low Speed Vibration Dampening! Effect dampens intense low speed vibrations by treating FFB signal like Audio Equalizer would do effectively turning this: Into this: (tested on Scintilla Race Vanilla config while rolling ~10km/h) As KirillEnvy noticed, it's a must have for drifting. All noise gone, only important details left! No need for in game smoothing. Effect includes few settings to play around, defaults are what i found to work nicely with my wheel. I have added additional entry points to game FFB signal called rawAdd and rawGain which works before any of game adjustments happen, this way effect will respect player strength and smoothing settings while previous entry point will probably work better for things like Engine Rumble and Gearshift Kick effects. There is additional template script "rawtest.lua" which basicly cancels game ffb by applying negative force to it. Feel free to look into the code and do whatever you want with it!
Wow, the low-frequency vibration reduction allows you to use FFB without antialiasing and eliminates clipping and lag when drifting, even on a 12 nm base. This is similar to the AC mod - Alternative FFB: Extended 1.8, which I use. Perhaps in the future, thanks to your mod, I'll be able to add a proper FFB with more settings and proper antialiasing to baemng. But right now, the low-frequency vibration reduction solves the main problems. Perhaps we can add high-frequency vibration and shock reduction without clipping and lag. Thanks for the mod, if someone understands programming and can help finish or improve this mod, that would be really cool
Thanks for reply! That AC mod was actually my inspiration to try doing something with BeamNG FFB I believe none of that will be needed when proper tyre model update arrives but in meantime we can try something like my mod. Many simracing games do exaggerate FFB effects including that AC mod. I don't believe its wrong as in sim rigs we are missing alot of feedback from real car unless we spend crazy money on motion rig, which still cannot deliver proper g-forces. I have not tested it during drifting yet, gotta check it now that you mentioned it. EDIT: I just did, omg it is so much more pleasant now with lack of crazy spikes. Im happy this approach made it not cut out any important detail from FFB but only terrible noise. That filter is set up to disable at ~50km/h vehicle airspeed and what it does is applying negative force just to mute those spikes, inspiration for that came when i looked at Moza Pithouse settings and there is FFB Equalizer page, for BeamNG i had to almost mute everything to make wheel chillout. I tried using this effect with speed threshold crazy high to see how it works at higher speeds and it felt like it added too much of delay. Maybe because i set it to target what is shown on pictures i posted. As i have no programming skills i used AI to create that, im suprised i got it that far as working with it can be terrible. I release it as a proof-of-concept mod what can be done and have not seen anybody try it this way. Someone with actuall programming skills and understanding can make much better version of it. I don't want no credit for it, i just want my favourite game to get better. Maybe i'll try making new effects to enhance it even more but i kinda ran out of ideas what to create. Many attempts for things to enhance driving ended up quite bad unfortunately. What i found making it is that this approach requires perfect sync with game, any smoothing or delaying over multiple physics frames makes it very bad.
Very good! Is there a path to adding discernible increases/decreases in steering torque as weight/grip is shifted to and fro? I think that’s the approach the gold standard FFB of sims like original AC etc take. Very informative about car handling and absolutely intuitive. Also some small thrumming vibration when the fronts are locking on brake or the drive tires are spinning on throttle would be both useful and fairly realistic. I have something like that kind of working in Beam through my pedal motors+SimHub but it would be nice to give it to users who only have FFB through their wheels. --- Post updated --- Absolutely, absolutely. What good, artful FFB does is pretty much fool your brain. Like when you lock or spin tires on a real vehicle, particularly on loose surfaces, there’s a definite bit of a thrumming vibration you feel as well as noise. I find your brain knows that’s going on before conscious thought even if the vibration is through the hands on wheel rather than primarily through the seat. Same with G/weight shift/front grip and steering torque. Switching between sim and spirited driving in a real car, good FFB just tickles your brain the same way those forces do in real driving. And reaction to tactile stimuli is quicker and more direct through your subconscious than reactions to visual or audio stimuli, which is routed more through conscious thought. Like I say, good FFB really does partially fool your brain into thinking it feels the car moving. Put another way, most real world steering feel, even on some kinds of performance cars, is pretty dead. Great FFB design is like putting a much more informative rack in every car, while still being able to leave total steering lock and average torque roughly the same as the real car.
So how do you use this mod? I have never fooled with any of those F11 functions and I think I need a lot more instructions.
this is kinda nice, imo more immersive ffb mod is better, buuut thats kinda broken, if you could maybe take a look at that mod and implement some of the features, would be greatly appreciated
@BravoNovemberZulu "Is there a path to adding discernible increases/decreases in steering torque as weight/grip is shifted to and fro?" Not really, everything game does regarding FFB is comming straight from the physics engine, there is 0 artificial effects (maybe except side-accel forces). But it should be possible to add it artificial way. "Also some small thrumming vibration when the fronts are locking on brake or the drive tires are spinning on throttle would be both useful and fairly realistic." I didn't touch that and weight shift as this already happens from BeamNG physics engine. Driving on my Moze R9 i can feel weight transfer and abs vibration easily. "So how do you use this mod?" Mod should work after you put zip into mods folder. To check you can open console with "~", change bottom left to current vehicle and write "CustomFFBdebug()". It will show all enabled effects and their settings. To change settings you can either use long command like "CustomFFBset("enginerumble", "enabled", 1)" or just write "CustomFFBsave()". This will create settings file inside userfolder/settings/CustomFFBsettings.json, there you can edit them with notepad, after saving file respawn your car (from vehicle selector). New settings should be applied then. There is no explainations what setting does what but they should be self explainatory. @fihre boy I can take a look but im quite limited with what i can do as i only made it using Gemini. I put few example effects there to help with making your own custom effects. Even if you don't know how to code you can try what i did and put them into Gemini or other AI model that is capable of writing .lua. Just unpack .zip into mods/unpacked/ and add your own effect.lua into effects folder inside, it will get automaticly loaded in after respawning a car.
I have a Moza R9 and I've tested both these matters extensively. In the case of weight shift, I just repeated a test I've often done by driving around in a steady circle at a steady g at a steady speed holding a set steering lock between my thumb and forefinger for maximum sensitivity, in this case using the Barstow and the Civetta. I then see if their is any increase in torque when shift weight forward by either suddenly lifting and/or trail brake slightly. To be fair there is a *slight* increase in steering torque in the form of a very slight jerk back to center when you lift off/trail brake suddenly . The effect is not nonexistent but so weak as to be a useless signal as an aid for sim driving, I have to literally set up a situation of fairly sudden and weight shift and hold the wheel between two fingers to detect anything happening at all. I'm also doing these tests with smoothing lower than is really playable and zero dampener or other filter on the wheel, etc, just as pure a signal as I can get. For all practical purposes of sim driving there is nothing detectable through the racks of cars I've tested when it comes to weight shift. But since we know the game optionally uses lateral G to alter steering torque, fore-and-aft G ,or perhaps %weight shift from front/rears, compared to the config's default state, could also be blended into the FFB. Again as an option, not something everyone would have to use. I've also tested brake lock. You can get some jerking with SOME, but not all car's racks. But usually only at smoothing setting that are low enough to be marginally playable (the wheel will be full of noise rolling on a smooth surface), not on all cars, and the effect only occurs when the wheels are leaving smoke trails, not when they are just beginning to be locked. Basically the same situation as brake lock exists with tire spin. Burnout does nothing as far as I can tell with FFB with a RWD car, although if you spin out obviously some rack movement will occur. In some FWD in Beam cars you may indeed get an effect, because it is linked directly to the steering rack. And again, you really have to turn the smoothing down. This is a case where a vibration normally felt through the body and not directly linked to the wheel could profitably be put through the steering wheel as a selectable option in the game and have basically the same effect on one's brain. Kind of like the gear grind effect you're working on. I've read the way original AC does it is to have sliders to enhance the slip vibration effect to the wheel already in the feedback signal, it is said to not actually be a "canned" effect, FWIW. We can be fairly certain the game has all the telemetry data necessary for such effects, because with good tuning in SimHub both front brake lock and rear tire spin come through my brake and throttle pedal motors nicely. Also have gear grind setup through the same program and devices.
Addendum: I don’t usually drive with side acceleration on, but it you turn it to maximum, then do the lift off while driving in a hard turn you do get a noticeable increase in wheel force But this is due to the G loading in the turn suddenly increasing as the weight transfers to the front tires and they have more grips. And this really only applies to the high G turn situation.
I use slight parabolic curve in Moza PitHouse for Beam, that definetly makes weight shift more pronounced on my side, still much less than anything in Assetto. With some cars it's possible to feel even engine vibrations and torque steer on standstill but it's so slight. I also use 0 smoothing in Beam, maxed out Damping Inertia and Friction on Pithouse and FFB EQ on 1 and Momo Prototipo 14" wheel on my side and it feels pretty good for Beam.
Interesting. I’ve been doing the opposite, just enough smoothing in Beam to make a rough rally stage not too violent and nothing in Pithouse. Intwrweuhd Ideas to try.
Recently i play more of Assetto than Beam but now i did some testing about what you said. BX-Series 200BX Type-L (M) on Hirochi Raceway -Stock tires: barely any feel for weight transfer -Semi Slick tires: much much more weight transfer feeling during trailbraking and overall nudging brake on turn. -ABS and no ABS: clearly can feel wheels locking up (bit less for stock tires but semi slicks with race brakes made it more intense) I checked that Immersive FFB mod but what i only found is increasing of side-accel forces option together with multiplying it by 2 it in hydros.lua (i compared it with current 0.38.3 hydros.lua, it's missing few newly added things like gamepad ffb, wheelslip, jerk, abs lock things, not sure if they are for gamepad or for wheel too) Current settings i tested it at now: Smoothing 100 (i thought before i had it at zero) Strenght 200 Side-Accel 0 On Pithouse i tried same settings i use for AC Intensity and Torque Limit at 100% Max speed at 200% Hands off protection off Interpolation 0 Damping 60% Friction 30% Inertia 250% Speed dependant damping (i think this does not work in BeamNG) 25%@75km/h FFB EQ 40hz - 90% 60hz - 40% 100hz - 20% FFB curve linear It is not as that intense as in AC with Extended FFB mod but it is very much present. Trying with side-accel forces just made wheel heavier and give less detail for me. Also i use Tyre Thermals and Tire Physics (GGT) mods
side accel option is made for logitech wheels, you really dont need to use it if you got anything with more than 3nm
Hello Esquisita, Can you try this effect? I tried only to soften the high frequencies that cause the rattle without using the smooth setting in game, in order to not lose ffb definition. As one needs two set verificacion i'll paste the code right here. I'm using your files except the ones in thr FFBeffects folder, where i put this one. Code: local M = {} M.params = { enabled = 1, crossoverFreq = 60.0, lfGain = 1.5, -- NOVO: "Volume" do peso do carro (Frequências Baixas) hfGain = 0.15 -- "Volume" dos estalos (Frequências Altas) } local lfForce = 0 local lastTime = 0 function M.calculate(time, params, gameBaseForce) if tonumber(params.enabled) ~= 1 then return { rawGain = 1.0, rawAdd = 0 } end if lastTime == 0 then lastTime = time end local dt = time - lastTime lastTime = time if dt > 0.1 or dt <= 0 then dt = 0.0005 end local currentForce = gameBaseForce or 0 -- 1. Separar as bandas local alpha = math.min(1.0, dt * (tonumber(params.crossoverFreq) or 60.0)) lfForce = lfForce + alpha * (currentForce - lfForce) local hfForce = currentForce - lfForce -- 2. Aplicar multiplicadores independentes (EQ de 2 Bandas) local finalLF = lfForce * (tonumber(params.lfGain) or 1.0) local finalHF = hfForce * (tonumber(params.hfGain) or 0.15) -- 3. Reconstruir o sinal local finalForce = finalLF + finalHF return { rawGain = 0.0, rawAdd = finalForce } end return M I've named it eqfilter.lua