A collection of tools for flight and driving simulation gamers on Windows
Through this document, FFB is used as an acronym for Force Feedback.
FFFSake
, or For Force Feedback’s Sake, is:
tl;dr if you’re having a wheel/joystick binding, input, or FFB problem, Joystick Gremlin with
FFFSake
can usually help you work around that.
In a perfect world, your game controller (typically a racing wheel or joystick/HOTAS, plus additional hardware like pedals, H-shifter etc.) would allow configuring inputs in ways that work for everyone. They would also correctly implement outputs i.e., the FFB specification for DirectInput devices completely and correctly, so that the player gets the game developers’ intended experience.
Meanwhile, the game you’re playing would have a nice configurable control scheme. It would allow you to tune your FFB experience based on your preferences and your specific hardware.
In the real world, both hardware and software can fall short or fail at these for a variety of reasons. This is where third-party tools like Joystick Gremlin and vJoy come in. You configure your game to use the vJoy virtual joystick as a FFB capable input device, and use Joystick Gremlin to read control inputs from various sources (say, your physical steering wheel), and “feed” them into the vJoy virtual joystick. This allows you to fix a broad range of input-related issues, such as:
FFFSake
handles the output i.e. FFB side of things, taking these commands
from the vJoy device (coming from the game) and writing them to your physical
FFB capable device. In this process, it can also fix various force
feedback issues and allow some amount of tweaking; see the Features section later.
While there are other applications with similar functionality, feeding vJoy with inputs from DirectInput devices, none of them appear to be maintained by the time of this writing. Joystick Gremlin is actively being developed; we will be using the older but stable R13 version.
Support could be added for other vJoy feeders, especially if someone is willing to
help integrate FFFSake
as a DLL or Python module into the feeder. Please get in touch
via
GitHub Discussions.
Budget about 15-45 minutes for this one-time setup.
Using FFFSake requires the following third party dependencies. First, download them all:
SDK.zip
archive.FFFSake
, if you don’t hide the physical device redirected through
vJoy from the game. HidHide is the best option, at the time of this writing.Install and configure these:
vJoyInterface.dll
, rename it to something like vJoyInterface.old.dll
.SDK/lib/x86/vJoyInterface.dll
to the above path, taking the place of
the original DLL that Gremlin shipped with.Configure vJoy
app from the Start Menu and configure vJoy. The
recommendation on the Joystick Gremlin page is a bit outdated; instead,
I suggest having it match the screenshot below.Actions
menu, create a 1:1 mapping. Scroll down
the list and verify that a 1:1 mapping was created (usually works
as long as you start with a clean slate i.e. zero existing mappings).
Joystick Gremlin Quickstart
has more details for this step.Plugins
tab. Use the Add Plugin
button and browse to
the joystick_gremlin/plugins/fffsake_gremlin_plugin.py
file,
at the location you extracted Sim Gamer Kit to.FF Device
dropdown in
plugin configuration, ensure your FFB capable device is selected. Most
people would have exactly one such device.reducing
engine is available in initial alpha releases].
Select either the forwarding
or the reducing
engine. See section
below for details. If you’re not sure, start with the reducing
engine
if using a wheel and forwarding
if using a joystick.Mute/Unmute Force Feedback
. Think of this as a safety cutoff
button, to be pressed if you lose control of your FFB device. For this reason, use a button
not on the FFB joystick/wheel. It doesn’t need to be on the FFB device either.
Once done, the plugin page should look something like the follows, minus
the Running and Active
status (we’ll do that later): Ctrl + Shift + Esc
) to find the path of the
application .exe
file. The applications tab should look something like:
This is a lot of setup; if you made it this far, congratulations! You’ve enabled some really powerful tools for your sim gaming journey. I suggest starting with a single Joystick Gremlin profile and then branching out to more as you gain experience with these tools.
Once you’ve completed the above one-time setup, future usage involves (do all these BEFORE starting your game):
Activate
. FFFSake
will activate if it’s a plugin loaded for this profile.
FFFSake
. Tools
> Log Display
> User
will show a message when FFFSake
is
turned on or off.At this point you can launch your game and configure it for vJoy. You should be able to select and configure it inside the game as you would a physical controller.
FFFSake
has two “engines” that connect the FFB commands received by the vJoy
device to your physical FFB-capable controller. They do this in rather different
ways, as described below.
The forwarding
engine takes FFB commands received from vJoy (coming from
the game or from Windows) and writes them to the physical device using DirectInput.
In this process, the common compatibility fixes, described later, are also applied.
This engine has relatively lower CPU usage but cannot fix all compatibility issues.
The reducing
engine takes FFB commands received from vJoy (coming from
the game or from Windows) and “reduces” them to a stream of constant forces, which
are written to the physical device using DirectInput. This way the above common and
following additional compatibility issues can be fixed:
Both engines have the following features:
forwarding
engine is currently better for this. With
planned future optimizations, the reducing
engine will always be the
superior option for this feature.Activate
in Gremlin).The following limitations exist because I don’t know of any gamers who are affected by them; if you are, please in touch via GitHub Discussions
reducing
engine. In other
words, it’s only expected to be used for racing wheels. I don’t know of any
FFB joysticks that have mistakes in their hardware effects implementation.The following known issues and planned features will be addressed in a future release:
reducing
engine.forwarding
engine. In other
words, it’s only expected to be used for racing wheels. It’s relatively easy to
add support for (two axes) FFB joysticks, it’s just currently lower
priority given how rare such devices are.FFFSake
pluging may need to be removed and re-added to a profile if you
change your FFB device.The plugin publishes some messages via the Joystick Gremlin logging system, which you can
view in the latter by going to Tools
> Log Display
> User
.
FFFSake
generates an error log file in the directory where Joystick Gremlin is running
from. If you run into an issue and the file contains errors or warnings, please open a
GitHub issue attaching the log file.
If force feedback cuts out or you seem to suddenly be missing effects, try Alt-tabbing out
of the game and then getting back into it, this should generally fix the problem. Please
check the FFFSake
log for errors and send feedback via GitHub.
Section to be filled out based on user experience. Please share yours via the GitHub Discussions page!