Hello @TehFreek, this isn't generally useful feedback for a Proton dev to ponder. Instead, please describe how the game behaves with a mainline Proton build and provide logs to go along with any quirks you're observing.
Fair enough. Here's the log for the standalone version (since I don't have access to the Steam version yet) under Proton 11.0-2. Up to 1678872.439 is the launcher, everything after is trying to start the game proper. The game crashes silently and drops back to the launcher.
Unhandled exception: unimplemented function ntoskrnl.exe.KeAcquireGuardedMutex called in 64-bit code (0x006ffffff9c200). in your Proton log hints towards, https://github.com/ValveSoftware/Proton/issues/9331, but there's also a lot of access violations (c0000005) in EndfieldBase.dll before that which might be more important.
Endfield does use AntiCheatExpert, so that definitely sounds relevant in some manner.
Following up on the silent crash with AntiCheatExpert (ACE-BASE.sys) in Proton 11:
When ACE-BASE.sys initializes inside winedevice.exe, it calls two unimplemented ntoskrnl.exe stubs:
PsGetProcessExitProcessCalled (queries whether the process has called PsExitProcess)SeQueryInformationToken (queries access token credentials)Because both are @ stub in dlls/ntoskrnl.exe/ntoskrnl.exe.spec, Wine raises non-continuable STATUS_WINE_STUB exceptions. This aborts winedevice.exe and terminates the anti-cheat driver, causing Endfield.exe to drop back to the desktop ~9 seconds into launch.
Implementing safe stubs in ntoskrnl.exe allows the game to boot and run cleanly:
PsGetProcessExitProcessCalled: Return FALSE. The process is running and has not initiated exit.SeQueryInformationToken: Return STATUS_NOT_IMPLEMENTED (0xC0000002). The ACE driver disassembly shows it checks test %eax, %eax; js ... on the return code; returning an NTSTATUS failure cleanly activates the driver's fallback token cleanup rather than crashing.diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -952,3 +952,3 @@
-@ stub PsGetProcessExitProcessCalled
+@ stdcall PsGetProcessExitProcessCalled(ptr)
-@ stub SeQueryInformationToken
+@ stdcall SeQueryInformationToken(ptr long ptr)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -3420,6 +3420,18 @@
+BOOLEAN WINAPI PsGetProcessExitProcessCalled(PEPROCESS process)
+{
+ TRACE("(%p)\n", process);
+ return FALSE;
+}
+
+NTSTATUS WINAPI SeQueryInformationToken(PACCESS_TOKEN token, TOKEN_INFORMATION_CLASS class, PVOID *info)
+{
+ FIXME("(%p, %u, %p): stub\n", token, class, info);
+ return STATUS_NOT_IMPLEMENTED;
+}
Verified on Wine 11 / Proton 11: with these two stubs implemented, ACE initializes without errors, PlatformProcess.exe and CefViewWing start, and Endfield.exe successfully loads into gameplay.
The latest version of AKE has updated to a new version of ACE, so the investigation might need to start fresh.
AKE has also been released on Steam so there is that to consider as well.
Tested the Steam version (4732690) after the 2026-10-15 update with Proton Experimental (experimental-11.0-20261014). ACE now fails differently from the earlier reports: the new ACE-CORE driver loads as native and immediately calls KeBugCheckEx with code 0x65636157 (ASCII "Wace"):
3457.726:02a4:02b0:trace:loaddll:build_module Loaded L"C:\\Program Files\\AntiCheatExpert\\ACE-CORE1024303.sys" at 0000000100400000: native
3457.726:02a4:02b0:err:ntoskrnl:KeBugCheckEx 65636157 0 0 0 0
3457.735:0030:0048:err:service:process_send_command service protocol error - failed to read pipe r = 0 count = 0!
There are no unimplemented-function or stub exceptions before it, so this looks like the driver deliberately bugchecking after a failed check in DriverEntry, not a missing export.
Same result on GE-Proton11-9 and Proton-CachyOS 11.0-20261005. dwproton-11.0-14 still works with the new ACE.
FWIW, the new ACE-CORE.sys also imports KeIpiGenericCall, KeSetSystemGroupAffinityThread, KeRevertToUserGroupAffinityThread, KeGetProcessorNumberFromIndex, KeTryToAcquireGuardedMutex and ObDereferenceObjectDeferDelete, but dwproton's ntoskrnl doesn't export them either, so they're probably not what makes the difference.
System: CachyOS, kernel 7.2.9, KDE Plasma 6.8 Wayland, RTX 3060 Ti, NVIDIA 615.78.08
Launch options: XMODIFIERS=@im=none PROTON_LOG=1 %command%
Log (Proton Experimental): https://gist.github.com/kuriminanya/a3fef7b0d1cda84a639ba1d1f5976ee0
ge-proton11-9x1 2026-10proton experimentalx1 2026-10proton 11.0-2x1 2026-08PROTON_LOG=1x1 2026-10endfieldbase.dllx1 2026-080xc0000002x1 2026-09
With Arknights: Endfield coming to Steam... eventually, I feel that it's time to take a look at dwproton and GE-Proton to see which changes allow it to run (currently standalone) and pull them into base Proton.