At this point, EAC will load, correctly process an IOCTL in which the loader sends an encrypted “internal dll”, which it expects the driver to inject into the game process. EAC will then correctly map this dll when the process loads, and try to initialize it. This is the point where it is failing right now (the internal dll will yield an error), but we seem to be really close to the end of the initialization function, and once blitzcrank finishes devirtualizing it, we should be able to quickly get the function to succeed. In theory, if all goes to plan, the game should then launch, and be able to load the EAC library through the hooks setup by the internal DLL / kernel.
The discussion takes place at https://discord.gg/mjWm8DK and channel #easy-anti-lobster for those who want to keep up to date. The work is primarily (as I understand it) being done by employees at Codeweavers (i.e. the company behind Crossover Linux / Chrome / etc).
For those new to the Linux situation with VT2 the game itself runs flawlessly (I even get better perfomance with Proton and DXVK than on Windows*) but is hampered by EAC not functioning on Wine (i.e. Proton), which puts the game in the untrusted state and prevents progress (see https://github.com/ValveSoftware/Proton/issues/1528). Valve and Epic (the company behind EAC, and yes, the Tim Sweeney Epic, so a competitor to Valve) are said to be working on Proton compatibility with (Windows) EAC, although nothing has been stated publicly for almost a year.
*Could very well be related to the fact that EAC is not running…
[Info] [LauncherFinished] EACAsyncResult: 0 Message: ‘Easy Anti-Cheat successfully loaded in-game’.
[Info] Entering background wait for the game process to exit.
[Info] Game process exited with process exit code (0).
[Info] Unloading the EasyAntiCheat library.
[Info] Destroying windows.
EAC loads fine with Vermintide 2, but says that the game is in an untrusted state. I wonder if that has to do with that I have to bypass the launcher.
Launcher error (I don’t think I’ll get that working since it depends on how Wine emulates some Windows APIs, but you never know):
08:38:41.426 [Launcher] [Main Window] Error when checking parent process: System.ArgumentNullException: Value cannot be null.
Parameter name: ptr
@Fatshark_Hedge Could you confirm whether or not you have to go via the launcher to get Vermintide 2 running with EAC? If you have to go via the launcher, are you (i.e. Fatshark) willing to modify the launcher so it runs in Wine?
Anyhow, I will dig a bit deeper into this tonight (got work to do during the day somehow).
Ty for the additional info. I dug a bit in my logs and it does look like EAC starts fine, but there is some communication error between game and EAC.
I.e. game starts EAC, says awesome, I started EAC. EAC says, awesome I’m running. Game says sad-face, I can’t find EAC-process. EAC says awesome, I’m running and getting no errors and so forth, and EAC quits nicely when I end the game.
This is very bleeding edge, unless you are very comfortable with Wine, DXVK, etc, hold of for now. It is likely to be integrated into both Wine (i.e. potentially as a runner with Lutris) and Proton (possible to run directly from Steam for Linux) within a semi-near future. Also, I’m sure people will start spreading packaged versions of this to the most popular Linux distros.
All development credit goes to guy and blitzcrank at the VKx discord (see earlier posts).
Performance is remarkably good out of the box, I’ll probably spend some evenings after the rest of the family is asleep to optimize the game a bit.
Everything more or less works optimally, except that the current EAC patched version of wine is not patched with ESYNC, which puts a lot of extra load on the CPU. The load is such that the single thread performance when running multiple threads is the bottleneck. Practically I’m frame capped at around 40 fps, and during hordes on higher difficulties I’m down to 5 fps or so (with the GPU at 5% load or so…).
Recruit and veteran are playable though, due to the smaller amounts of vermin which need to be coordinated on the main thread
Launch Steam with -no-browser through the modified wine executable (i.e. WINEPREFIX=/path/to/prefix/with/vermintide WINEESYNC=1 wine "C:/program files (x86)/steam/steam.exe" -no-browser 2>/dev/null, the last part to get rid of error messages which will flow freely) (technically ESYNC is not supported yet, but it doesn’t break anything anymore)
Kill some rats!
I played a game this morning and it was quite enjoyable, a little bit lower fps than I get on my Windows instance, but works well enough for me to finally get rid of my Windows partition.
As a sidenote, I run Manjaro with a modified Xanmod-kernel (based on linux 5.7.8) and nvidia 450 drivers (most linux distros are probably still using 430 or 440).
@Fatshark_Hedge Can you holler if you hear anything from EAC about banning Wine-users? I’ll remove this short guide then.
Why not join the Fatshark Discord https://discord.gg/K6gyMpu