BeamMP STEAM / LUTRIS / CUSTOM LAUNCHER Guide [LINUX]

BeamMP Steam / Lutris / Custom Launcher Guide [Linux]

As some of you already know, BeamMP just got a new launcher update and
(finally) native Linux support. Before this update, the only way of playing BeamMP on Linux was to run the installer and the old Windows client through Wine/Proton with the risk of potential stability and performance issues. Those days are now over.

In this guide, I will be going over how to:

1. Use BeamMP through the native Vulkan client

2. Use BeamMP through Steam or Lutris using either Vulkan or DirectX11

You can also use your system’s default Wine installation. However, since Lutris and Steam are made to game, I do not recommend doing so as this can lead to poor performance or issues with fullscreen, etc.

IMPORTANT: In this guide, I will be referring to my home folder user as YOUR-USER. So please, when I mention YOUR-USER in a directory, replace it with your own Linux user.

The first step to all of this is to download and compile the native BeamMP launcher from GitHub.

To do this, please refer to this post scrollcaps made on a different topic.

This launcher is what we will be using to play BeamMP on Linux, and we will never run it using Wine or Proton.

If you followed the steps in scrollcaps’s post correctly, your native BeamMP launcher should now be installed in:

/home/YOUR-USER/BeamMP-Launcher/bin/

Using BeamMP through the NATIVE VULKAN client

This method of running BeamMP is by far the easiest out of the bunch and does not require any sort of tinkering whatsoever.

All you have to do is run:
BeamMP-Launcher
in:
/home/YOUR-USER/BeamMP-Launcher/bin/
by double-clicking on it, and the game should launch natively in Vulkan.

Using BeamMP through Steam or Lutris using either Vulkan or DirectX11

Now, for some people, including me, Vulkan is very unstable and can lead to system instability or even crashes ranging from simple system freezes to full-blown mountpoint nuking.

This is why I spent some time talking to BeamMP devs and support to figure out a way to run it in DirectX.

Step 1: Choosing your launcher

If you want to track your playtime with Steam or prefer the huge tinkering possibilities that Lutris has to offer, you may use any launcher you want freely as long as it supports running the game through Wine or Proton.

For the sake of keeping this guide somewhat simple (I failed), I will only be going over Steam and Lutris.

For Steam:

Make sure you have selected “Proton - Experimental” under right-click → properties → compatibility → “Force the use of a specific Steam Play compatibility tool.”

For Lutris:

Before doing any of the steps below, consider downloading up-to-date Proton or Proton GE.

To download and select custom Proton versions, get ProtonUp-Qt from your Flatpak store or download net.davidotek.pupgui2 via:
flatpak install flathub net.davidotek.pupgui2

(Make sure to select Lutris.)

Now for adding the game:

Add game (plus icon on the top left) → “Add locally installed game.”

[GAME INFO]
Name: BeamNG.drive
Runner: Wine (Runs Windows games)

[GAME OPTIONS]
Executable: /home/YOUR-USER/.local/share/Steam/steamapps/common/BeamNG.drive/BeamNG.drive.exe
(Unless installed elsewhere.)

Leave the Wine prefix empty unless you know what you’re doing!!

[RUNNER OPTIONS]
If available: Proton - Experimental.
Otherwise: Any newer Proton or Proton GE should do the job for you.

Leave everything else at default.

Step 2: Linking your user folder (The most important step)

First of all, by default, the native BeamMP launcher uses:
/home/YOUR-USER/.local/share/BeamNG.drive/
to store and process mods and in-game data relevant to multiplayer, while Proton or Wine uses their Wine prefix to store and process client-side mods and in-game data.

This can cause issues as the two separate folders don’t work together by default for some.

To link these two directories together, we are going to use a symlink.

Open your terminal and enter:
cd /home/YOUR-USER/.local/share/

Once in your share directory, you can begin by renaming your potentially existing native user folder.

To do this, enter:
mv BeamNG.drive BeamNG.drive_old
This will rename your folder to “BeamNG.drive_old.”

This will serve as a backup in case you need something from that folder.

Now you can create the actual symlink.

Enter:
ln -s /home/YOUR-USER/.local/share/Steam/steamapps/compatdata/284160/pfx/drive_c/users/steamuser/AppData/Local/BeamNG.drive BeamNG.drive

This will link your Steam Proton prefix to your user folder.

You can replace the first directory in the command with any custom Wine or Proton prefix you may want to use. For your default Wine prefix used by Lutris, for example, the command would look like this:

ln -s /home/YOUR-USER/.wine/drive_c/users/YOUR-USER/AppData/Local/BeamNG.drive/ BeamNG.drive

(Just make sure that you have your Wine prefix set to this location in Lutris or your other game launchers.)

If your permissions are denied, try running the command with sudo.

The symlink will make the native launcher think it is using the native game’s directory when it is really using a shortcut to the game’s Wine prefix.

Once you link your BeamNG.drive folder to your Wine prefix, you can move on to step 3.

Step 3 (FINAL STEP): Launch Args / Desktop Shortcut

In order to use BeamMP with Steam or custom launchers like Lutris, we need to run the native BeamMP launcher with a specific argument.

Of course, we could open up the terminal in /home/YOUR-USER/BeamMP-Launcher/bin/ every single time we want to play BeamMP, but that is annoying, and there is a nicer way to do it.

First, we need to create a symlink to the BeamMP launcher so that we don’t need to be in the launcher’s directory just to refer to it in a command.

To do this, simply open a terminal and enter:

ln -s /home/YOUR-USER/BeamMP-Launcher/bin/BeamMP-Launcher /usr/local/bin/BeamMP-Launcher

(Retry with sudo if your permission is denied.)

Now we can create a shortcut to place on your desktop or anywhere else on your system that will open the native BeamMP launcher.

In your terminal, enter:
cd ~/Desktop

Once in your desktop directory, you can use a text editor to create a new file. In my case, I will be using KWrite since I am on KDE Plasma, but you can use nano or any other text editor as well.

KWrite: Kwrite LaunchBeamMP.desktop
Nano: nano LaunchBeamMP.desktop
(You can name the .desktop file any way you want.)

Once in your text editor, simply copy and paste the format below into the file:

[Desktop Entry]  
Type=Application  
Name=Run BeamMP  
Comment=Runs BeamMP  
Exec=Konsole -e "BeamMP-Launcher --no-launch"  
Icon=utilities-terminal  
Terminal=true  

Again, you may change the name or comment to anything you like.

IMPORTANT: “Exec” is the terminal emulator together with the command we will be executing. It is important that you select the terminal emulator that is on your system.

Here is a list of some terminal emulators with their Exec syntax for .desktop files:

GNOME Terminal: Exec=gnome-terminal -- <command>
Konsole (KDE): Exec=konsole -e <command>
Xfce Terminal: Exec=xfce4-terminal -e "<command>"
LXTerminal (LXDE): Exec=lxterminal -e <command>
Tilix: Exec=tilix -e <command>
Alacritty: Exec=alacritty -e <command>
URxvt (Rxvt-unicode): Exec=urxvt -e <command>
Terminator: Exec=terminator -x <command>
Kitty: Exec=kitty <command>
Deepin Terminal: Exec=deepin-terminal -x <command>

Replace “< command >” with the actual command you want to execute.
In this case: "BeamMP-Launcher --no-launch"

You may have to experiment with the quotation marks if the game opens natively. You may need to put “BeamMP-Launcher --no-launch” in quotation marks or not depending on what terminal emulator you are using. If the game does not automatically launch, you have succeeded.

Once you’re done, simply save the file and close your text editor.

Now, once you run the file, you should see the BeamMP launcher opening similarly to Windows.

If done correctly, it should instantly start downloading the mod to the prefix directory.

Once it finishes downloading, launch the game through Steam or Lutris and open up the mods manager.

If “multiplayerbeammp” is present, you have successfully linked the prefix to your user folder, and you are ready to go.

UPDATING:

To install a new update, simply delete:
/home/YOUR-USER/BeamMP-Launcher/bin/
and redownload and compile the launcher as mentioned in the beginning of the guide.

“When there are launcher updates, you have to update immediately, manually, otherwise your launcher may stop working right away.”
-BeamMP dev

Thanks for reading. I hope this was helpful to some.

Credits:
Lion (Dev team)
O1LER (Symlink idea)
Tixx (Launcher arguments)
scrollcaps (Compiling guide)

3 Likes

this is really great!

i have just one question for now:

(asking for everybody in the future) :blush:

how does one use FeralInteractive’s gamemoderun %command% (because not everyone has Lutris) which is in BeamNG’s launch options in Steam, when BeamMP launches the native BeamNG binary by directly bypassing Steam?

then, would it be possible to either: A) change BeamMP’s launch options in a way that would make it so it launches BeamNG from Steam or B) so that it launches BeamNG under user-defined parameters (i.e. gamemoderun ./BeamNG.drive.x64) and paths?

1 Like

Hello, small update.

Scrollcaps has corrected something in their guide.
Simply scroll down a bit or click on this link:

1 Like

Hello, thanks for the question.

If you are looking to run the native BeamMP launcher and the native BeamNG client together with
gamemode , simply create a shortcut like in step 3 including the command

"gamemode BeamMP-Launcher"

instead of

"BeamMP-Launcher --no-launch".

Or simply open up a terminal and run gamemode BeamMP-Launcher

(Or the directory to the launcher if you have not made a symlink.)

This will start the BeamMP launcher in gamemode and therefore launch the game itself in gamemode.

If I misunderstood your question, please let me know. Cheers

Also, Steam by default will always launch the windows version of BeamNG.

2 Likes

thank you very much! but i think it’s probably not the launcher:
gamemoderun ./BeamNG.drive.x64
:blush:

EDIT: nevermind, we are forcing the beamMP launcher to not launch anything afterwards, so i suppose my question is pretty silly if we are launching beamNG manually anyway lol

probably worth noting that it probably (i cant check atm) doesnt apply itself to BeamNG too if youre launching BeamMP via gamemode, like you suggested, because BeamNG is a new, different process (just like launchers launching games are two separate processes! people often forget how much of a problem that is if you are working primarily in a terminal!), so instead you get yourself into a situation: you have made BeamMP take the HIGHEST priority in your entire system, even higher than BeamNG (if you do care about framerates), your compositor (the game doesnt run in exclusive fullscreen, so you get tearing), your daemons, etc. which is a really bad idea!

and yes, it is true that Steam launches BeamNG through proton by default, but what you can do is create a non-steam game to library and set its path to "~/.local/share/Steam/steamapps/common/BeamNG.drive/BinLinux/BeamNG.drive.x64" and then add launch options on top of it, such as gamemoderun %command% for some extra frames!

one more thing – there should be instructions on how to remove a symbolic link (via rm or unlink), just in case there was a mistake or a change of mind

If a launcher is run with gamemode, all processes that run from that launcher will also be in gamemode. If you leave away --no-launch, native BeamNG will run under gamemode.

As for deleting a symlink, simply delete the shortcut in a file manager like Dolphin. I works the same way as deleting a shortcut on windows. There is no need for commands or an extra step.

oh, really? i didnt know it does that… but that doesnt answer my question whether such priorities, governors, and pinning/parking will affect performance overall when there are two (not counting threads that beamng makes) such processes :face_with_monocle:

also, yeah, i honestly forgot gui exists, but im just picky and nosey at this point – you do all this and that in your terminal just to then use dolphin in the end, well, alright, nevermind haha :sweat_smile:

Wanting to do everything in the terminal is fair, and I tried doing that for the most part. After a while it’s easy to lose oversight that way, that’s why I left a couple things out.

1 Like

Since the launcher is a terminal window that will not eat resources via gui or graphical interfaces, the performance impact of running both under gamemode is merely unnoticable. Most of the performance improvements that gamemode does are applied system-wide eitherway. This is not task priorities like windows.

In short: running the BeamMP launcher in gamemode will not affect your framerate in a noticable amount.

thats exactly what i mean: most of them are global, and it’s unpredictable when will it decide to dedicate more/less ram or cpu at any moment. maybe it is insignificant, but remember how many threads beamNG makes with every vehicle count, thats a core every time. im afraid there will be a problem, especially knowing that vulkan mode in this game is unstable as it is, its not a good idea having beamMP also ran through gamemode

to be fair and honest, i think it’s better to go for --no-launch and then run beamNG in gamemode

You may do as you please, I know that Vulkan is unstable. Vulkan being unstable is the only reason I even made this guide.