libSPEEDHACK Brief Guide - Using a Speedhack to Adjust Gamespeed on Linux

Intro

Evgeniy Zhabotinskiy's libSPEEDHACK is "a simple dynamic library to slowdown or speedup games on Linux" and functions similarly to the "speedhack" feature on Cheat Engine. In short this tool, is a hack library that attempts to adjust a game's speed by " ntercept[ing] every single time-getting function that the game in question uses to properly adjust the time seen by the game."

Henceforth libspeedhack will be used in reference of the library/tool, to differentiate it from libSPEEDHACK, the project. speedhack refers to the executable and will show up in commands.

Those already familiar with Cheat Engine's "speedhack" feature will be aware of the limitations of tools like this and the necessity of troubleshooting game behavior on a per-game basis. This guide will cover the installation and proper basic usage of libspeedhack with the assumption that you are prepared to test and troubleshoot if the speedhack does not work as intended.

Disclaimers

  • I am in no way affiliated with Evgeniy Zhabotinskiy or the libSPEEDHACK project; this guide is not official documentation nor should be treated as such.
  • This guide is intended to be informative on the topic of using libSPEEDHACK on offline, singleplayer games; this is neither an endorsement nor recommendation of using this or similar tools on online or multiplayer games, or games where such usage is violation of the terms of use.
  • This guide, much like the open-source project it is about, is offered “as-is”, without warranty, and disclaiming liability for damages resulting from using it.
  • This guide comes with no guarantee of revision or update; due to changes to either the libSPEEDHACK software itself or the environment it is run in, this guide may become inaccurate without notice.
  • libSPEEDHACK is technically outdated and, to my knowledge, not actively developed anymore. The AUR package, last updated in 2021, has been flagged out-of-date as of 2023, and the GitHub latest release is dated 2022. By proceeding you understand the risks of installing and using old, unsupported software: something I do not recommend. I will not be held liable to any problems, security-related or otherwise, that doing so may cause.

⚠️ Warning: never run console commands or execute scripts from unknown, untrusted sources, unless you have reviewed them and know exactly what they do. I am an unknown, untrusted source.

ℹ️ This guide was written and tested on Arch Linux 6.10.3.arch1-1 via EndeavourOS, with Steam version 1.0.0.79-2. Testing was performed in July/August of 2024.

The Short Version

This guide is intended for quick-start reference and assumes you know how bash and CLIs work, as well as how your Linux distro handles community packages that are not in the official repos.

Install libspeedhack

The project GitHub page offers three options:

  1. Source Code
  2. Binaries
  3. AUR Package

Choose your preferred method and install. Make note of your install directory.

Find speedhack

After libspeedhack is installed, the executable speedhack should now be accessible. Make note of its location.

Depending on how exactly you installed libspeedhack you may use which speedhack (note! not which libspeedhack) which will output the directory where it is located. Below is an example of my system's output (which works because I installed libspeedhack via the AUR using the yay helper).

$ which speedhack
/usr/bin/speedhack

⚠️ This location may vary depending on your distro!

Hook speedhack Into Your Game

via Steam

Steam Library > Right click game title > Properties > General > Launch Options

In the text field, insert /path/to/speedhack %command%; where %command% is written verbatim. Using my system as example, the Launch Options field should say:

/usr/bin/speedhack %command%

ℹ️ Technically in my case, speedhack %command% would suffice, but I like to use full paths as a general practice.

Steam will save your Launch Options and will now launch your game with speedhack hooked every time you hit Play through the normal Steam UI.

Directly via Game Executable

If you choose to run your game executable directly from the commandline, you can ensure speedhack is hooked in with /path/to/speedhack /path/to/game/executable [args]

Using my system as example, hooking into the game myman:

$ /usr/bin/speedhack /usr/bin/myman

This launches the game myman with speedhack hooked and ready to use.

ℹ️ Again, in my case, I could simply run speedhack myman to the same effect.

Adjust Gamespeed

Now that your game is running with speedhack hooked, speedhack is listening to /tmp/speedhack_pipe. Simply feed /tmp/speedhack_pipe your desired time factor/multiplier and speedhack will adjust your gamespeed accordingly, live. You do this via echo n >/tmp/speedhack_pipe where n is a floating-point number representing your time factor/multiplier.

Below is an example of telling speedhack to halve gamespeed to 0.5x (50%)

$ echo 0.5 >/tmp/speedhack_pipe

And below is an example of telling speedhack to double gamespeed to 2x (200%)

$ echo 2 >/tmp/speedhack_pipe

⚠️ Note the single angle bracket > used here.

speedhack is constantly listening to the /tmp/speedhack_pipe file and you may continue to adjust your time factor as you like, while you play.

ℹ️ /tmp/speedhack_pipe is cleared upon game close or crash. Every boot of your game will start at 1x speed and you will need to use one of these commands to adjust gamespeed again.

ℹ️ Although speedhack does allow multiple hooked games to run simultaneously, it seems only the first hooked game will apply gamespeed adjustments, with all other instances running unaffected at 1x speed. I have not tested this extensively and YMMV.

Basic Troubleshooting

  • In my experience Steam Overlay has not caused problems with speedhacks on both Linux and Windows but for troubleshooting purposes you can easily disable Steam Overlay for that specific game via Steam Library > Right click game title > Properties > General > Enable Steam Overlay
    • If you really want to, you can disable Steam Overlay globally via Steam > Settings > In Game > The Steam Overlay
  • An in-game FPS counter can be a helpful troubleshooting tool. Steam Overlay has its own built-in version which can be enabled via Steam > Settings > In Game > The Steam Overlay
  • Games can encounter problems with extreme gamespeed multipliers. Test on 0.5x and 2x and gradually adjust instead of starting with 0.1x or 10x.
  • Sometimes a speedhack works partially. In addition to character movement, check UI animations and in-game timers to see what is and is not affected by the speedhack.
  • Per the libspeedhack wiki, "Libspeedhack does not work with any "Pressure Vessel"-packaged Steam runtime" and a potential fix is detailed in the notes.

Under the Hood

  • The libspeedhack GitHub page and project GitHub wiki include some helpful explanations of how this hack library works, and some notes on compatibility. I highly recommend reading the README (the very first thing you see when you scroll down on the GitHub page!).
  • I have only done some basic testing of multiple speedhack instances running at once (noted above) and do not know if there is a way to get multi-instance working.
  • I have not tested libspeedhack on games with multiple/chained executables such as launchers.