Introducing Boson

Game developers build using a variety of game engines, frameworks and libraries, similarly to web developers.

Sometimes, there's an overlap between game and web developers; A web developer wants to get into game development or vice versa, and then develops a web game: Video games that run on the web browser.

These browser games then sometimes make it onto PC as a release on a platform like Steam. However you can't just expect every developer on the planet to rewrite their games (or web apps) to run on PC.

That's where frameworks like Electron come in, allowing developers to give users a native app, by wrapping a web app in a Chromium runtime, complete with APIs to interact with the host system. Applications like Visual Studio Code and the Discord client are simply web applications wrapped inside Electron.

Some games on Steam are just web games wrapped with Electron, and some of them don't have native Linux builds. Either due to lack of attention, or some kind of misconception about Electron APIs.

Some of you might be thinking right now: "Well, why not just use Proton?" That is indeed a valid answer! You could simply run these applications with Proton. However there's some major downsides to that.

Web browsers are known to be the one category of applications that run horribly under Wine/Proton, they're often riddled with performance issues and rendering bugs, which you wouldn't get if you just run the application on a native build of Chromium.

This is why we built Boson, a Steam "compatibility" layer designed to run Windows-only, Electron-based applications using a native Linux version of Electron. This means that (most) games that use the Electron runtime can now be run natively on Linux, boosting performance significantly by using native Chromium, with native graphics APIs!

It can also be run standalone without Steam! Simply find the executable of the Electron application you would like to run and do boson run /path/to/app.exe and now your Electron app should just run.

A window of the game Cookie Clicker, running on KDE Plasma
We're clicking cookies and appeasing grandmas with this one

For example, I'm running Cookie Clicker, known as the godfather of idle games. Infamous for its crazy late-game upgrades and high CPU usage.

Now it runs natively on Linux, no API translation needed!

Look! Another Electron-based game on Steam, working completely fine natively on Linux even though the developer themself didn't publish a Linux build.

...I don't actually know Japanese...

In some cases though, it still won't work due to other reasons

Like for example the Ninja Kiwi Archive, which requires Flash Player in the runtime. Or maybe you could stuff Ruffle in there?

We become what we behold. We shape our tools and then our tools shape us.
We're going down the rabbit hole with this one...

We've been working hard on Boson, and now with version 0.3.0 (Yes, we had 3 major releases before announcing this :3), Boson now comes with a hook script to enable Steamworks API integration! This means that most of your Steam games should simply just work out of the box, multiplayer and achievements included!

Getting Boson

If you'd like to try running Boson on your Linux build of Steam, download a release right now on GitHub, and extract the files in your Steam library folder, in the compatibilitytools.d directory, usually located at ~/.local/share/Steam/compatibilitytools.d (or somewhere else depending on how you installed Steam), then restart Steam so it reloads your compatibility tools list just like how you'd install a custom Proton build.

However, there's some catches:

  • Right now, you still need an Electron binary in your $PATH to actually run Electron. Please install the electron package from the Terra repositories or download an Electron release from the official GitHub and set the ELECTRON_PATH environment variable in your Steam launch options.
  • Some games may require native Node.js (NAPI) modules that might be incompatible with the Electron/Chromium ABI version you have. You may have to use an older version of Electron (see instructions above)

Getting Support

Join one of our Discord, or Matrix, or Open an Issue on GitHub. We'll get you started!