It's possible to use BakkesMod on GNU/Linux when running the Windows edition of Rocket League via Valve's Proton. The in-game GUI is not showing up, but the console and plugins seem to function correctly.
- 1 Setup
- 2 Start Bakkesmod when RocketLeague is startet and close Bakkesmod when RocketLeague is closed
- 3 References
BakkesMod needs to be injected from the same wineprefix using the same version of wine that is used to run Rocket League. Protontricks allows working with wine for Proton enabled games. It's also possible to setup with the wine environment manually.
It's required to install Microsoft Visual C++ libraries to run the injector. They can be installed using the vcrun2017 winetrick:
$ protontricks 252950 vcrun2017
The runtime configuration for Rocket League has to be adjusted to use D9VK.
After starting Rocket League, the injector can be launched:
$ protontricks -c 'wine ~/Downloads/BakkesModInjector/BakkesMod.exe' 252950
Be sure to launch the injector using the same in-process synchronization primitives as for running Rocket League. Set WINEFSYNC=1, WINEESYNC=1 or none of those according to your configuration.
Test for the correct wine environment
The first step is to verify that you can run commands in the Proton instance of Wine. Errors at this step can occur due to a conflict from existing Wine settings via the ~/.wine directory.
Someone may have a better approach (if you are currently using wine frequently and have made config changes, you may not want to do this), whereas I just removed the ~/.wine directory all together and ran
env WINEPREFIX="~/.steam/steam/steamapps/compatdata/252950/pfx" ~/.steam/steam/steamapps/common/Proton\ 4.11/dist/bin/wine64 winecfg
This initialized ~/.wine and opened up the configuration pane. There were some custom entries in the Application Settings panel "Bayonetta.exe, NewColossus_x64k.exe" that I think are unique to proton. If this works, you can close winecfg and continue.
Directions to download vc_redist.x86.exe at Troubleshooting.
env WINEPREFIX="~/.steam/steam/steamapps/compatdata/252950/pfx" WINEESYNC=1 ~/.steam/steam/steamapps/common/Proton\ 4.11/dist/bin/wine64 vc_redist.x86.exe
Some concerning looking logs will be churned out from wine at this time, but as of yet it seems to install correctly after this.
Installing & Injecting BakkesMod
Launch Rocket League from Steam (Be sure D9VK is enabled), after Rocket League is launched - run the following command:
env WINEPREFIX="~/.steam/steam/steamapps/compatdata/252950/pfx" WINEESYNC=1 ~/.steam/steam/steamapps/common/Proton\ 4.11/dist/bin/wine64 BakkesMod.exe
Start Bakkesmod when RocketLeague is startet and close Bakkesmod when RocketLeague is closed
You need to create a script with execute rights.
Copy this in it:
#!/bin/sh #Start Bakkesmod WINEESYNC=1 protontricks -c 'STEAM_COMPAT_DATA_PATH="/home/jokergermany/.steam/steam/steamapps/compatdata/252950" /home/jokergermany/.steam/root/compatibilitytools.d/Proton-5.9-GE-8-ST/proton run "/home/jokergermany/.steam/steam/steamapps/compatdata/252950/pfx/drive_c/users/steamuser/My Documents/My Games/Rocket League/TAGame/BakkesMod.exe"' 252950 2> bakkesmod-wine.log & #Start RocketLeague mangohud MANGOHUD_CONFIG=position=top-right gamemoderun STEAM_COMPAT_DATA_PATH="/home/jokergermany/.steam/steam/steamapps/compatdata/252950" /home/jokergermany/.steam/root/compatibilitytools.d/Proton-5.9-GE-8-ST/proton run /home/jokergermany/.steam/steam/steamapps/common/rocketleague/Binaries/Win64/RocketLeague.exe & #wait until RocketLeague.ex is running while ! killall -0 RocketLeague.ex 2> /dev/null; do sleep 1 done #wait for closing RocketLeague while killall -0 RocketLeague.ex 2> /dev/null; do sleep 1 done killall BakkesMod.exe
You have to change this:
Put the right paths into it.
If you don't use mangohud or gamemoderun, delete it.
Steam Launch Options
Right Click on Rocketleague -> Properties
Paste this into the Launch Options
"/media/HDD/Nextcloud/rocket.sh" && echo %command%
Change the Path to the location of the script from above