DirectInput effects

Thanks bro!! Good to know about

1 Like

Mika, you talk about games “these days.” Do you have any classic games to test on? They often used these effects.

I do have some, but it would be nice to know which ones to test.

1 Like

It would appear that nobody can name a game which this effect would be useful to debug? We do have a title in testing that I will be able to test, and a roadmap is to get a beta version out soon.

What was the reason to integrate them? I thought you at least had a list of games they work with.

AMS2 uses the spring effect in the menus. By default it’s set to 2% strength, which can be changed in the settings. I plan to test it during the weekend, and will let you know what parameters they send to the wheel (dinput SetParameters, etc.), and whether the SC2 feels correct with them.

2 Likes

@logos I will send you a alpha version tomorrow with the added fields.

1 Like

The Spring effect was developed with ETS2 as it was known to use it, but they have changed their game and do not use spring effect anymore.

I’ll try AMS2 also.

The only ones using the spring effect which I know of so far are:
WRC 9 and 10.
Both have the circle filled, means available and active.

Both titles also offer dampening. Effect is available and active, both have the circle fully filled.

Tested AMS2 with 100% DI spring in TrueDrive, and it feels OK to me during menus. Here are the effect parameters captured with dinput logging:

815.883:051c:0628:trace:dinput:hid_joystick_effect_Initialize iface 0000000001F604F0, inst 0000000308050000, version 0x800, guid {13541c27-8e33-11d0-9ad0-00a0c9a06e35}
815.883:051c:0628:trace:dinput:hid_joystick_effect_SetParameters iface 0000000001F604F0, params 000000009F5E317C, flags 0x3ff.
815.883:051c:0628:trace:dinput:hid_joystick_effect_Download iface 0000000001F604F0
815.883:051c:0628:trace:dinput:hid_joystick_effect_Download Condition [id: 1 count: 1]
815.883:051c:0628:trace:dinput:hid_joystick_effect_Download Condition[0] [lOffset: 0 lPositiveCoefficient: 10000 lNegativeCoefficient: 10000 dwPositiveSaturation: 100 dwNegativeSaturation: 100 lDeadBand: 0]
815.884:051c:0628:trace:dinput:hid_joystick_effect_Download [id: 1 dwDuration: 4294967295 dwGain: 100 dwSamplePeriod: 0 dwStartDelay: 0 dwTriggerRepeatInterval: 4294967295 dwTriggerButton: 4294967295]
815.884:051c:0628:trace:dinput:hid_joystick_effect_Download rglDirection[0]: 0

From the parameters looks like a standard autocenter spring with 1% max force saturation. However, it felt like a lot more force was applied at max saturation, than the 1% allowed. Interestingly the effect also has a 1% gain, which if it were to be applied to the effect, would end up with 1% of the 1% max force saturation. :slight_smile: Don’t know if effect gain should be applied to condition parameters, though.
Also, the effect DI parameters don’t change with different spring strengths from the UI. So obviously this UI parameter is only cosmetic for now.

Tested with 2022.7 release Fw.

EDIT:
I tested this further and looks like they actually change the dwPositiveSaturation/dwNegativeSaturation in relation to the UI spring strength parameter. For example 2% is 200 Saturation, 10% is 1000 Saturation, 100% is 10000 Saturation, etc. with dwGain set to 10000.
The above log is just from strength 0% - both saturations and gain very low values (100).

Anyway, the SC2 felt the same with UI spring strength from 0% to 100% - always at full strength. So IMO there is another issue here - with the positive/negative saturation of the condition effects - in addition to the effect gain issue.

Also this time logged a little bit from a driving session. Turns out they also use a periodic effect with different gain levels during driving, so the effect gain fix will help here too.

1 Like

You are correct, there is the overall effect gain issue. I’m currently re-working all DI_CONDITION effects (spring, friction, damping) and maybe we also implement inertia, if some simulator uses it but haven’t found any yet. It is likely that the settings will change a bit for end users also due to better implementation of these.

1 Like

I just edited my comment and didn’t see your reply. It appears there is an issue with the positive/negative saturation of the condition effects, in addition to the effect gain issue.

Negative saturation was not included in the USB descriptor, its only in the early alpha version I shared to you. I think we can say that yes, there are issues in this and that fixing this will benefit older games a lot.

2 Likes

Re games that use the effects: All the old SimBin games, GTR2, GT Legends, Race 07

I’d be happy to describe how to use these effects by editing the PLR files those games commonly use.

There are a number of options like this in the PLR where having these effects can be useful:

FFB brake vibe wave type=“0” // Type of wave to use for vibe: 0=Sine, 1=Square, 2=Triangle, 3=Sawtooth up, 4=Sawtooth down.

In GTR2 I find Brake Vibe and Steer Vibe valuable:

FFB brake vibe zero magnitude=“0.00100” // Magnitude of brake vibration at 0mph (reference point).
FFB brake vibe slope=“0.14063” // Slope of line defining magnitude as a function of frequency (used with FFB brake vibe zero magnitude).
FFB brake vibe wave type=“0” // Type of wave to use for vibe: 0=Sine, 1=Square, 2=Triangle, 3=Sawtooth up, 4=Sawtooth down.
FFB brake vibe update thresh=“0.00000” // Amount of change required to update brake vibe (0.0 to 1.0)

FFB steer vibe freq mult=“1.00000” // Controls frequency of steering vibration. Recommended: 0.5 to 1.0, 0.0 disables steering vibration.
FFB steer vibe zero magnitude=“0.01904” // Magnitude of steering vibration at 0mph (reference point).
FFB steer vibe slope=“0.00391” // Slope of line defining magnitude as a function of frequency (used with FFB steer vibe zero magnitude).
FFB steer vibe wave type=“0” // Type of wave to use for vibe: 0=Sine, 1=Square, 2=Triangle, 3=Sawtooth up, 4=Sawtooth down.

And of course friction and damper:

FFB steer friction coefficient=“0.00000” // Coefficient to use for steering friction. Range: -1.0 to 1.0
FFB steer friction saturation=“0.00000” // Saturation value to use for steering friction. Range: 0 - 1.0
FFB steer damper coefficient=“0.00000” // Coefficient to use for steering damper. Range: -1.0 to 1.0
FFB steer damper saturation=“0.00000” // Saturation value to use for steering damper. Range: 0 - 1.0

These are just for reference and they’ve been disabled in the config file because the SC2P gets wonky when they’re delivered.

2 Likes

I’m pretty sure you don’t need directinput effects to use all those ISI engine effects like FFB brake vibe, throttle vibe, steer vibe, etc. The only one that uses directinput effects are the steer friction and steer damper.

I’m also pretty sure you can only choose either damper or friction, not both (at least with RF2 you have to select one or the other, maybe it’s different with all the pre-RF2 stuff).

I know what you mean about the wheel getting stuck to one side after contact with another car. The way to fix it is by hitting another car again, lol, weird huh? I was getting that problem with GTR1. I always set jolt magnitude to 0. I’m not sure if that fixed it but it should be set to 0 regardless.

You’re probably right. The problem with old SimBin games is that you have to enable High and Full ffb level to enable those effects but that includes Medium which as soon as you enable it brings Friction and Damper and immediately you run into the wonky ffb problem.

I’ll try that zero Jolt Magnitude suggestion. Mine seem to be at 1.0 and I don’t think I ever changed it or tried tuning it.

I’m pretty sure you can still run Medium, High, and Full without the in-game friction / damper if you just set them to 0 in the controller or PLR file. I actually think I like a bit of the in-game damping / friction. I will experiment more with it because I usually leave it off or turn it very, very low and then use damping & friction from the Simucube but I’d like to experiment with it more. Perhaps we can share our results with one-another…

I always turn jolt magnitude off. Correct me if I’m wrong but I believe it’s some fake FFB effect that kicks it when you contact other cars (and possibly objects?). The game’s natural physics should take care of that on their own, especially with powerful wheels. I set it to 0.0 on every ISI engine based game including AMS1, even RF2 and R3E (if R3E still has that setting),

Recent advances in testing an upcoming simracing title, and in adding the missing fields into our USB descriptor, has produced a spring effect that I’m satisfied with. However, I would need information about titles that use damping and friction. I remember that Dirt Rally 1 used Friction that went to 0 over jumps, but are there any better examples? Regarding above ISI titles, I’m a bit hesitant to test without knowing good defaults for the .PLR file…

I’ve been tuning GTR2 FFB for years and have a mod where we crowd-source PLR FFB params based on my original params for lots of wheels and I’ve included my FFB params for my SC2P. People seem to like the feel.

Disable damage in-game via the Realism menu or else you’ll confuse broken steering with the DirectInput Effects wonkiness. Use Novice Realsim to unlock the ability to Disable Damage.

The SC2P profile in the mod has Friction, Damper, Steer Vibe and Brake Vibe disabled but you can enable them according to this “FFB Effects Level” in the PLR:

Low: Steering+Grip
Medium: Adds Friction+Damper+Rumble strips
High: Adds Brake vibration
Full: Adds Throttle vibration+Steering vibration

Here’s the SC2P profile from the mod:

User - Simucube 2 Pro by Shovas_PLR.txt (50.5 KB)

And the True Drive profile to go with it:

User - Simucube 2 Pro by Shovas - True Drive Profile_ini.txt (869 Bytes)

For Steer Vibe and Brake Vibe enable these:

FFB Throttle FX on steer axis=“1” // 0 = Throttle effects on throttle axis, 1 = throttle effects on steering axis.
FFB Brake FX on steer axis=“1” // 0 = Brake effects on brake axis, 1 = brake effects on steering axis.

Friction and Damper (subtle but definitely can feel the effects)

FFB steer friction coefficient=“0.10000” // Coefficient to use for steering friction. Range: -1.0 to 1.0
FFB steer friction saturation=“1.00000” // Saturation value to use for steering friction. Range: 0 - 1.0
FFB steer damper coefficient=“0.10000” // Coefficient to use for steering damper. Range: -1.0 to 1.0
FFB steer damper saturation=“1.00000” // Saturation value to use for steering damper. Range: 0 - 1.0

*Ensure Friction and Damper are disabled in TrueDrive when using them in the PLR. You can mix them but I just forgot I had moved them to TrueDrive since they were wonky before when done in the PLR.

Steer Vibe settings (subtle feeling of tires rolling over pavement):

FFB steer vibe freq mult=“1.00000” // Controls frequency of steering vibration. Recommended: 0.5 to 1.0, 0.0 disables steering vibration.
FFB steer vibe zero magnitude=“0.01904” // Magnitude of steering vibration at 0mph (reference point).
FFB steer vibe slope=“0.00391” // Slope of line defining magnitude as a function of frequency (used with FFB steer vibe zero magnitude).
FFB steer vibe wave type=“0” // Type of wave to use for vibe: 0=Sine, 1=Square, 2=Triangle, 3=Sawtooth up, 4=Sawtooth down.

Brake Vibe Settings (subtle pulsating feeling of a circular brake pad rotating around a disc):

FFB brake vibe freq mult=“1.00000” // Scales actual brake rotational frequency to force feedback vibration frequency.
FFB brake vibe zero magnitude=“0.00100” // Magnitude of brake vibration at 0mph (reference point).
FFB brake vibe slope=“0.14063” // Slope of line defining magnitude as a function of frequency (used with FFB brake vibe zero magnitude).
FFB brake vibe wave type=“0” // Type of wave to use for vibe: 0=Sine, 1=Square, 2=Triangle, 3=Sawtooth up, 4=Sawtooth down.
FFB brake vibe update thresh=“0.00000” // Amount of change required to update brake vibe (0.0 to 1.0)

2 Likes

ACC uses a damper effect, when the car is standing still.