protonscr

Aces of Thunder

protonopen appid 2754090Game compatibility - Unofficial
ValveSoftware/Proton#9464 · opened 2026-02-03 by Patola · updated 2026-10-28 · 12 comments · github · game page · search this game
PPatola 2026-02-03 github

steam-2754090-proton10-04.log

Compatibility Report

  • Name of the game with compatibility issues: Aces of Thunder
  • Steam AppID of the game: 2754090

System Information

  • GPU: RX 7900 XTX
  • Video driver version: 25.3.4
  • Kernel version: 6.18.8-273-tkg-eevdf
  • Link to full system information report as Gist: https://gist.github.com/Patola/5e31a3e3fbf396113033b70f1e64df85
  • Proton version: 10.0-4, also tested 9.0-5 and experimental (removing the prefix between each attempt). Not that is matters to this issue but I have also tested with GE-Proton10-28 and GE-Proton10-29, unofficial versions, and purged everything after this attempt to try again with the regular proton. I am sending only the proton 10.0-4 log because the symptom is the same on all of them.

I confirm:

  • [X] that I haven't found an existing compatibility report for this game.
  • [X] that I have checked whether there are updates for my system available.

Note

This is a VR optional game. However, it is not starting correctly even in flatscreen mode. As a way to simplify treatment, I am first just saying the issues in flatscreen mode, and I will augment with VR data later.

Symptoms

Game shows the start screen, asks to press space to continue, says we're authorized, and throws the player in an empty field with some fire in the distance. In this empty field, some controls work (WASD + mouse-button to change the view), but there are no menus, no objects, no other controls working.

Image

Reproduction

Just start the game.

PPatola 2026-02-03 github

VR

So, the symptoms in VR are the following:

  • For information: I am using the official Steam Link client on the Meta Quest 3 headset, SteamVR version 2.14.5.
  • In Proton 10.0-4, instead of the initial screen before the plain terrain, the game window is completely black.
  • In Proton Experimental, the initial screen works and you get thrown inside the same empty terrain but in VR. And as in the flatscreen mode, you can only move (teleport) around and not do anything else.

I understand that in proton experimental the OpenXR initialization code works correctly (recent fix that will be eventually applied to proton stable), but the other issues remain. I am first sending a simple PROTON_LOG=1 %command% logfile and a video showing how it went.

Video is on youtube: https://youtu.be/zACPYqvIgtQ

steam-2754090-proton-experimental.log

PPatola 2026-02-03 github

Now I did the same as above but instead I've used as launch parameters: PROTON_LOG=+vrclient,+openxr,+file %command%

The result is this 86 MB logfile (uncompressed) I am attaching but zipped (2.2MB).

steam-2754090-vrclient-openxr-file-proton-experimental.zip

PPatola 2026-02-03 github

Still with PROTON_LOG=+vrclient,+openxr,+file %command% I did the same as above but with Proton 10.0-4. The VR screen never initializes, SteamVR doesn't fade to black, and in a very short time it generates a 431 MB logfile, attached here.

steam-2754090-proton10-04-vrclient-openxr-file.zip

So, I am trying to be thorough on my bug report because I am refunding right after this, being unable to provide more data before the game is sold at a considerable discount. No offense, but this game is expensive and I've opened many other bug reports (like the one for Glassbreakers) that have no activity at all for more than one month, so I don't know if in one hour I will receive a follow-up or if this issue will stay silent and take years to resolve.

PPatola 2026-05-07 github

Any news on that game? Even the flat version? It's on sale again.

AAgent6472 2026-05-23 github

I have had luck getting it to render in using proton-cachyos-11.0-20260506-slr-x86_64_v3 with the following launch command

PROTON_VKD3D_HEAP=1 VKD3D_CONFIG=enable_experimental_features,descriptor_heap,no_upload_hvv,single_queue %command%

What also solved the issues I was having with Forza Horizon 6

PPatola 2026-05-23 github

@Agent6472 you mean you are able to play the game? Are you playing it in VR or flatscreen?

AAgent6472 2026-05-23 github

@Patola can confirm flatscreen. Just moved from Pop_OS to Bazzite so I haven't had a chance to re-set up the vr but its looking good so far.

PPatola 2026-05-24 github

@Agent6472 what GPU and drivers do you have?

AAgent6472 2026-05-24 github

@Patola Nvidia 3060ti on 595.71.05

HHansKristian-Work 2026-06-03 github

Seems like enable_experimental_features was the key. The non-VR version at least should work with the linked PR.

PPatola 2026-07-07 github

Seems like enable_experimental_features was the key. The non-VR version at least should work with the linked PR.

Now that the non-VR version is working, what do we need for the VR version to work?
Do you need more tests? More logs?

I have repurchased the game now and I want to play it in VR.

DDawsSangio 2026-10-28 github
Hi, I hope you can accept AI assisted test and debugging ,

With the help of AI (claude) and a lot of test, I was able to find two major problem that affect this game in Proton.
Since an update of the game around september, it simply crash on start. This fix is very simple, you'll finds info below.
So the game can start and in flat it works flalessy.
In VR I found a second bug, that affect rendering pipeline.
With tests and logs analizing. Claude was able to find the root of the issue and fix it.
Below the extended report.

Two more issues found (startup crash + broken VR rendering), with root causes and a working fix

System

  • GPU: NVIDIA RTX 4070 Super, driver 595.99.02
  • CPU: Ryzen 7 9700X, 32 GB RAM
  • Distro: Linux Mint
  • Proton: Experimental
  • VR: Meta Quest 3 via WiVRn v26.9 (OpenXR, D3D12 binding through wineopenxr)
  • Game version 0.1.2.22, build 2026Oct16

The two problems are independent, so I'm describing them separately.


1) Crash at startup: the game rejects DX12 because d3d12.dll has no version resource

Symptom. The game starts with a fatal error:

Cannot find precompiled shaders for this videocard
(while looking for files compiledShaders/game.psXX.shdump.bin)

After that comes steam/ask_verify_content. The game only ships DX12 shaders (compiledShaders/gameDX12.ps50.shdump.bin), so the game.psXX it looks for is the DX11 path.

Root cause. Before creating a D3D12 device, aces.exe checks the file version of D3D12.dll (GetFileVersionInfoSizeA / GetFileVersionInfoA / VerQueryValue). It only accepts DX12 if the version is >= 10.0.18362.267. Otherwise it logs one of these two messages and silently falls back to DX11:

DX12: Unsupported OS, can't determine D3D12.dll's version
DX12: Unsupported OS, D3D12.dll's version %u.%u.%u.%u

vkd3d-proton's d3d12.dll has no VS_VERSIONINFO resource at all, so the check always fails, regardless of GPU vendor (tested here on NVIDIA only). This is consistent with the Proton log: d3d12.dll is loaded, but no D3D12 device is ever created and there isn't a single vkd3d line. Changing config.blk (driver:t="dx12") or using -config:video/driver:t=dx12 makes no difference, because the check happens first.

Fix. Give vkd3d-proton's d3d12.dll a version resource. I added VS_VERSIONINFO with FileVersion 10.0.19041.1 to the d3d12.dll in Proton's files/lib/wine/vkd3d-proton/x86_64-windows/, without touching the code, and the game started immediately in DX12. The DLL in the game prefix is not enough on its own, because Proton copies its own file over it on every launch. Putting a copy in the game folder doesn't work either, because the game loads D3D12.dll from system32 only. The clean fix would be a .rc version resource in vkd3d-proton's build. It's the same idea as the old DXVK discussion: https://github.com/doitsujin/dxvk/issues/980


2) VR: no opaque geometry or UI, because of an unsupported view instancing configuration

Symptom. In VR only the sky, transparent surfaces (cockpit glass), fire, water and reflections are rendered. Terrain, aircraft, objects and menus are missing. Head tracking and locomotion work. The desktop mirror shows the same broken image, so it's not a compositor or wineopenxr issue.

Root cause. vkd3d-proton reports view instancing tier 2. In VR the game then uses D3D12 view instancing for stereo, and its game log confirms it:

VR multiview is supported through tier 2 view instancing.

The game's default stereo mode (vrMultiviewStereoMode = "vertical") puts both views on RenderTargetArrayIndex 0 with different ViewportArrayIndex, i.e. both eyes in one texture, split by viewport. d3d12_pipeline_state_validate_view_instancing() rejects this case ("The same RenderTargetArrayIndex is used for multiple ViewIDs. This is unsupported."). The result is that every opaque pipeline using the use_vr_multiview shader variants fails with E_NOTIMPL. The game log has around 17,500 errors like:

DX12: CreatePipelineState returned unknown return code 0x80004001
CreatePipelineState failed for <land_mesh){use_vr_multiview=[>=1],...}>, ... fb_layout was { hasDepth 1 depthStencilFormat DXGI_FORMAT_D16_UNORM colorTargetMask 0 ... }

The affected pipelines are land_mesh, heightmap, rendinst_*, dynamic_masked_chrome_bump, random_grass_gpu and others. The game doesn't allow disabling multiview from config.blk (Settings: 'xr/useVrMultiview' is not allowed for overwrite!), so there is no user-side workaround.

Fix: replay draws per view. I implemented a fallback in vkd3d-proton for configurations that plain Vulkan multiview cannot express:

  • dxil-spirv: dxil-spirv already has a non-multiview path in which ViewID and the layer come from a meta descriptor (DynamicViewInstancingOffsets), and Layer and ViewportIndex are exported by the shader. I added a new meta descriptor kind, DXIL_SPV_META_DESCRIPTOR_KIND_SPEC_CONSTANT, so that word (ViewID in the low 16 bits, layer in the high 16 bits) can come from a specialization constant instead of a UBO.
  • Pipelines: when validation hits one of the unsupported cases (same RT array index for multiple views, RT array index out of range, or GS/tessellation without multiview support), the PSO switches to multiview.replay. Shaders are compiled without VK multiview (view_mask = 0), and each view gets its own pipeline variant (vkd3d_pipeline_key.replay_view) with a different value of the new spec constant VKD3D_SHADER_VIEW_REPLAY_WORD_SPEC_CONSTANT. The pipeline library and the base pipeline cover view 0.
  • Command lists: DrawInstanced, DrawIndexedInstanced, ExecuteIndirect (both the plain MDI path and the state-template/DGC path, whose batch snapshots dynamic_state including the replay view) and DispatchMesh loop over the active views. They honour the view instance mask and bind the matching variant before each replay.
  • VKD3D_VIEW_INSTANCING_REPLAY=1 forces this path for all view instancing PSOs. This is useful for testing, and for the "shader exports SV_RenderTargetArrayIndex" case, which is only detected at shader compile time and isn't handled automatically yet.

Result. With the patched vkd3d-proton, the game logs RenderTargetArrayIndex 0 is used for multiple ViewIDs. Replaying draws per view. and VR renders correctly on the RTX 4070 Super, with an unmodified game executable. Performance feels in line with Windows on the same machine (dual boot). I saw some stutter early on, probably because the per-view variants are currently compiled lazily on first use. Compiling them at PSO creation time is an obvious follow-up.

I also checked the dxil-spirv side in isolation: test vertex and pixel shaders using SV_ViewID (compiled with DXC, SM 6.1) produce valid SPIR-V (spirv-val --target-env vulkan1.3) that reads ViewID and the layer from the spec constant and writes Layer / ViewportIndex correctly. This also holds when the shader itself exports SV_RenderTargetArrayIndex.