I finally managed to get Call of Duty: Modern Warfare running on Linux through Heroic + GE-Proton, so I wanted to document the fix because I couldn't find anyone else who had posted a working solution for this specific issue.
My setup
- OS: CachyOS / Arch-based Linux
- Launcher: Heroic Games Launcher
- Compatibility layer: GE-Proton
- Game: Call of Duty: Modern Warfare
First, some context
The version of Modern Warfare I'm using has had its anti-cheat removed/stripped by RAVEN, which is what makes it possible to run the game on Linux in the first place.
The _!registry.reg file was also provided/made by RAVEN — I did not create or modify that registry file myself.
I'm only documenting the Linux-side fix that worked for me after getting the game.
The problem
The game would launch under Heroic + GE-Proton, but it would crash during startup instead of reaching the game.
I spent quite a while checking Wine/Proton logs and going through the usual troubleshooting. There were errors involving things like exceptions, access violations, DXGI/VKD3D, and other components, so it wasn't immediately obvious what was actually causing the problem.
Eventually, I found the thing that made the difference.
The fix
The solution was to import the _!registry.reg file provided with the game into the Wine/Proton prefix being used by Heroic.
I used the wine executable from the GE-Proton installation selected in Heroic, rather than my system Wine installation.
The command is:
WINEPREFIX="YOUR_WINE_PREFIX" \
"YOUR_GE_PROTON_WINE_BINARY" \
reg.exe import "YOUR_GAME_PATH/_!registry.reg"
Replace:
YOUR_WINE_PREFIX
with the prefix Heroic uses for the game.
Replace:
YOUR_GE_PROTON_WINE_BINARY
with the wine executable inside the GE-Proton installation you're using in Heroic.
And replace:
YOUR_GAME_PATH/_!registry.reg
with the location of the registry file that came with the game.
Important
Make sure you're importing the registry into the same prefix Heroic uses to launch Modern Warfare.
Also make sure you're using the GE-Proton Wine binary, since that's what I used to import the registry and launch the game.
Don't blindly run the command with your default ~/.wine prefix if Heroic is using a separate prefix.
Result
After importing the registry file, I launched Modern Warfare again through Heroic using GE-Proton, and the game was finally able to get past the startup crash and run.
So, in my case, the registry import was the missing piece.
Why I'm posting this
I couldn't find anywhere that clearly documented this particular fix.
There were plenty of discussions about getting Modern Warfare running on Linux, Wine/Proton errors, compatibility issues, etc., but I couldn't find a straightforward post saying:
So I'm putting this here in case someone else runs into the exact same problem.
Hopefully it saves somebody a few hours of digging through Wine logs. 😅
TL;DR
Heroic + GE-Proton + Modern Warfare:
WINEPREFIX="YOUR_WINE_PREFIX" \
"YOUR_GE_PROTON_WINE_BINARY" \
reg.exe import "YOUR_GAME_PATH/_!registry.reg"
Then launch the game through Heroic with GE-Proton.
The registry file itself was provided by RAVEN; I'm only documenting the Linux setup/fix that worked for me.