Forza Horizon 6 runs fine on Windows. The problem is what happens when you try to play it anywhere else—and what that reveals about how modern games are actually built. The phrase "this game is extremely broken" comes from Hans-Kristian Arntzen, the lead developer of VKD3D-Proton, the translation layer that lets Linux systems run DirectX 12 games. He wasn't venting about frame rates or crashes. He was documenting engine-level bugs: memory allocation happening after resources get submitted to the GPU, descriptors pointing to unallocated heap space, and timing violations that Windows drivers apparently paper over silently. For Linux players, these aren't edge cases. They're why the game won't start, hangs on loading, or corrupts visually. For everyone else, it's a window into how fragile "working" PC ports really are.
What VKD3D-Proton Actually Does (And Why It Exposes These Bugs)
VKD3D-Proton sits between a Windows game and a Linux graphics stack, translating Direct3D 12 API calls into Vulkan. Think of it less like emulation and more like real-time protocol conversion. The game speaks one graphics language; your Linux GPU driver speaks another. The translation layer has to maintain state, manage memory barriers, and reconstruct rendering commands fast enough to not destroy performance.
Here's the non-obvious part: translation layers are stricter than native Windows drivers. They can't silently fix engine bugs the way Nvidia or AMD's Windows teams might with driver-side workarounds. When Arntzen says Forza Horizon 6 is "extremely broken," he means the engine relies on undefined behavior—operations that happen to work on Windows because specific driver versions tolerate them, but have no guarantee in the D3D12 specification.
The specific bug he flagged, "use-before-alloc," is a timing violation. The game submits work to the GPU, then allocates the memory that work references, then writes descriptors pointing to that freshly-allocated memory—all while the GPU may already be executing the earlier submission. On Windows, the driver or runtime might delay the actual GPU work, or the allocation might happen to complete before the GPU reaches that command. On Linux through VKD3D-Proton, the timing isn't guaranteed, and the result is corruption or crash.
| What players see | What's actually happening |
|---|---|
| Game won't launch on Linux | D3D12-to-Vulkan translation hits unrecoverable validation error |
| Visual corruption, black textures | GPU reads from memory that hasn't been allocated or initialized |
| Random hangs during races | Descriptors point to freed or unbound heap regions |
| Works fine on same hardware in Windows | Native D3D12 runtime or driver tolerates the timing violation |
This isn't unique to Forza Horizon 6. Translation layers have exposed similar issues in other D3D12 titles. The pattern: game ships, works on dominant platform, "Linux port broken" headlines follow, translation layer developers diagnose engine bugs that were always present. The asymmetry is that Windows players never know their "stable" experience depends on vendor-specific driver forgiveness.
For someone deciding whether to try Forza Horizon 6 on Linux today, the practical reality is wait—or contribute debug logs. Arntzen's patches may merge into VKD3D-Proton's next release, but each workaround for engine bugs adds complexity and potential performance cost. The translation layer becomes a compatibility shim for sloppy D3D12 usage rather than a clean API converter.
The Decision Framework: Play Now, Wait, or Switch Platforms
If you're the player staring at a broken Forza Horizon 6 install on Steam Deck or your Linux desktop, you have three paths with very different trade-offs.
Path one: Force Proton Experimental or GE-Proton
These builds pick up VKD3D-Proton changes fastest. Gain: might work tomorrow if Arntzen's patches land. Lose: you're running untested bleeding-edge code, and "works" might mean "launches but corrupts occasionally." For a racing game where split-second visual cues matter, occasional corruption is arguably worse than not playing.
Path two: Dual-boot Windows for this specific game
Gain: the intended experience, anti-cheat compatibility, future DLC support. Lose: rebooting, separate game installs, surrendering Linux conveniences like seamless suspend/resume on Steam Deck. The hidden cost here isn't just disk space—it's mental overhead. Games you can't launch frictionlessly get played less.
Path three: Skip Forza Horizon 6 until verified stable
Gain: no troubleshooting, no corrupted saves, no forum archaeology. Lose: missing the launch window with friends, potential spoilers, eventual price changes. For live-service games, "wait" sometimes means "miss the active player curve."
| Your situation | Likely best path | Hidden variable |
|---|---|---|
| Steam Deck primary, casual player | Path three (wait) | Battery life on workarounds is often worse than native |
| Linux desktop, other racing games queued | Path two (dual-boot) | Time spent fixing > time spent playing |
| VKD3D-Proton contributor or tester | Path one (experimental) | Your debug reports directly accelerate fixes |
| Game Pass subscriber | Path two or three | PC Game Pass on Linux has additional wrapper complexity |
The misconception to kill: "Linux gaming is broken" versus "this specific engine has D3D12 validation errors that Windows hides." The former blames your platform choice. The latter points to a quality gap in porting that affects all players eventually—Windows users just get temporary vendor protection that can break with any driver update.
What This Reveals About Modern PC Game Development
The deeper pattern here matters beyond one racing game. DirectX 12 and Vulkan are "explicit" APIs—developers manage memory, barriers, and synchronization directly. The promise was performance. The reality for many studios is error-prone code that gets validated only against one vendor's driver stack on one operating system.
Arntzen's public frustration is unusual only in its directness. Behind closed doors, graphics programmers at every major studio know their D3D12 code has undefined behavior that "works" because of tested configurations, not specification compliance. The translation layer developers become unpaid QA, documenting bugs that should have been caught in certification.
For players, this creates an invisible reliability gradient. Games on Game Pass or Steam that "work everywhere" often do so because they use D3D11, Vulkan natively, or have actual QA across configurations. Newer D3D12 titles from studios without deep low-level graphics expertise are increasingly lottery tickets on non-Windows platforms.
The actionable insight: check ProtonDB or GamingOnLinux reports before buying any D3D12 game for Linux play. Not for "does it work"—for why it doesn't work. If the reports mention VKD3D-Proton crashes or "needs bleeding-edge," you're looking at engine-level issues, not configuration problems you can solve.
Conclusion
Stop treating "works on Windows" as proof of a clean PC port. The next time you see a game praised for "great PC performance," ask whether that validation included anything beyond the dominant OS and GPU vendor. For Forza Horizon 6 specifically, Linux players should wait for VKD3D-Proton updates rather than fight through workarounds—and Windows players should recognize their stability is partly borrowed from driver tolerance, not engine quality. The one thing to do differently: before buying any D3D12 game, spend sixty seconds checking if translation layer developers are already calling it broken. That single check saves hours of troubleshooting for a problem you didn't create.




