Skip to content

messiahlap/atomic-heart-vkplay-linux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

Atomic Heart (VK Play / GameCenter) on Linux — Lutris + UMU + Proton

English | Русский

How to get the VK Play (VKGC / GameCenter) edition of Atomic Heart running on Linux through Lutris + umu-run + Proton: fixing the instant startup crash, the blank launcher window after a GameCenter update, and a 720p/blurry render, and getting native 4K.

TL;DR (updated for GE-Proton11-1):

  1. Use GE-Proton11-1 or newer. Its reworked winedmo/FFmpeg backend plays the intro movies that crashed the game on GE-Proton 10 — no more movie-skipping or PROTON_MEDIA_USE_GST.
  2. Mind the space in the path. ProtonPlus installs it as a folder literally named Proton-GE Latest; the space makes umu silently fall back to another Proton. Point PROTONPATH at a space-free symlink.
  3. Do NOT set PROTON_ENABLE_WAYLAND=1. After a GameCenter self-update, the CEF launcher shows a blank window (or crashes with DuplicateHandle) under Proton's native Wayland driver.
  4. Fix the resolution in GameUserSettings.ini if it renders at 720p. HDR is not exposed by this build of the game.

Tested environment

OS Bazzite (Fedora atomic), kernel 7.0.x
DE / session KDE Plasma 6.6.5, kwin 6.6.5, Wayland
GPU / driver NVIDIA RTX 4090, proprietary driver 610.43.02
CPU Ryzen 7 7800X3D
Launcher Lutris 0.5.22, runner umu-run (umu-launcher 1.4.0)
Proton GE-Proton11-1 (installed via ProtonPlus as Proton-GE Latest)
Game Atomic Heart, VK Play edition (via GameCenter.exe), UE4 4.27.2

Launch chain: Lutris → umu-run → GameCenter.exe (VKGC) → AtomicHeart-Win64-Shipping.exe.


Symptom 1 — instant crash on startup (intro video)

The game crashes immediately at launch (SecondsSinceStart=0), crash dump like:

C:\users\steamuser\AppData\Local\AtomicHeart\Saved\Crashes\UE4CC-Windows-XXXX_0000
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000000

Root cause

The startup movie Launch_FHD_60FPS_PC_Steam.mp4 (H264 + AAC) is played through Media Foundation. On GE-Proton 10 the MF backend winedmo had a flawed byte-stream read/Seek() implementation and could not read the stream (winedmo_demuxer_create ... error -22, then status 0xc0000001). MF never got a media source → CreatePresentationDescriptor returned NULL → NULL dereference → crash. Switching to the alternate backend (winegstreamer via PROTON_MEDIA_USE_GST=1) only moved the crash into winegstreamer's IMFByteStream → wg_parser glue. Both MF backends failed on this movie.

✅ Fix — use GE-Proton11-1

GE-Proton11-1 completely reworked video playback: DirectShow and Media Foundation now go through a rebuilt winedmo → FFmpeg path (winegstreamer was removed entirely). This new winedmo opens the Atomic Heart intro movie without crashing — verified: with the Launch_*.mp4 files present, winedmo loads, demuxer_create no longer fails, and the game reaches gameplay.

So on GE-Proton11-1 you do nothing special for video: leave the movies in place, don't set PROTON_MEDIA_USE_GST (it's a no-op there — gstreamer is gone), just select the Proton version.

Historical / GE-Proton 10 only: if you are stuck on GE10, the working workaround was to rename all AtomicHeart/Content/Movies/Launch_*.mp4.bak and set PROTON_MEDIA_USE_GST=1. See Appendix: GE-Proton 10 fallback.


Gotcha A — the space in Proton-GE Latest breaks umu

ProtonPlus installs GE-Proton11-1 as a directory literally named Proton-GE Latest (with a space). If you put that path directly in PROTONPATH, umu-run fails to resolve it and silently falls back to another installed Proton (e.g. GE-Proton 10) — so you think you're testing GE11 but you aren't. Check a Proton log: the paths will show the wrong version.

Fix — point PROTONPATH at a space-free symlink:

CT="$HOME/.local/share/Steam/compatibilitytools.d"
ln -sfn "$CT/Proton-GE Latest" "$CT/GE-Proton11-1"
# then use PROTONPATH=$CT/GE-Proton11-1

Symptom 2 — GameCenter shows a blank window / self-closes (after a VKGC update)

At some point VK Play GameCenter pulls a server-side self-update (LightUpdate.dll). This happens on any Proton version. After it, the updated CEF-based launcher may show a loader → blank window → self-close, with logs like:

network_sandbox.cc: Failed to grant sandbox access ... Cache\Chrome\Network
FATAL: platform_handle_in_transit.cc DuplicateHandle failed ... (0xCB)

Root cause

The launcher is a Chromium/CEF app. Under Proton's native Wayland driver (PROTON_ENABLE_WAYLAND=1), CEF/Electron launchers are known to render as blank/white windows; the updated GameCenter build additionally FATALs on a mojo DuplicateHandle while wiring up its network service. This is not a Proton-version problem and not a game problem — it's the Wayland driver vs. CEF.

✅ Fix

  • Remove PROTON_ENABLE_WAYLAND (and the HDR vars) from the env. CEF then renders through XWayland (X11), which it handles fine. This is the single most important fix for the blank window.
  • Keep --in-process-gpu in the game arguments (helps CEF under Wine).
  • If the launcher is stuck (blank window that stays), clear the CEF cache once — it forces a clean rebuild and does not log you out (the login lives in the registry, not in the cache):
    GC="$HOME/Games/atomic-heart-vk/drive_c/users/steamuser/AppData/Local/GameCenter"
    mv "$GC/Cache/Chrome" "$GC/Cache/Chrome.bak"

Note: you cannot fix this by adding Chromium flags (--no-sandbox, --disable-features=NetworkServiceSandbox) via Lutris — GameCenter rebuilds its child command lines and ignores them. Removing the Wayland driver is the fix.


Symptom 3 — blurry / 720p render, cursor clipped to the corner

After the logo, a black 1280×720 window appears, the picture is blurry, and in the menu the cursor only moves within the top-left corner (the 720p zone over a 4K screen).

Root cause

A mismatch in GameUserSettings.ini: ResolutionSizeX/Y is 4K, but the actual window size is taken from DesiredScreenWidth/Height=1280×720.

Fix

File:

<prefix>/drive_c/users/steamuser/AppData/Local/AtomicHeart/Saved/Config/WindowsNoEditor/GameUserSettings.ini

Set all resolution fields to native (example for 4K):

ResolutionSizeX=3840
ResolutionSizeY=2160
LastUserConfirmedResolutionSizeX=3840
LastUserConfirmedResolutionSizeY=2160
DesiredScreenWidth=3840
DesiredScreenHeight=2160
bUseDesiredScreenHeight=True
LastUserConfirmedDesiredScreenWidth=3840
LastUserConfirmedDesiredScreenHeight=2160

The key fields were DesiredScreenWidth/Height. After this: native 4K, cursor across the whole screen.


HDR

This build of the game has no HDR setting, so UE4 never activates an HDR swapchain and no HDR is emitted, regardless of which variables you set. The HDR/Wayland env vars are best left off here — they do nothing in-game and (as in Symptom 2) actively break the launcher.

gamescope is not a viable HDR route either: it crashes GameCenter (VKGC), and gamescope-HDR on NVIDIA has been broken since Plasma 6.5.


Final Lutris configuration (env section)

game:
  args: --in-process-gpu          # helps the GameCenter CEF window
system:
  disable_runtime: true
  env:
    GAMEID: '0'
    LC_ALL: ''
    PROTONPATH: /home/<user>/.local/share/Steam/compatibilitytools.d/GE-Proton11-1   # space-free symlink!
    WINEDLLOVERRIDES: sl.interposer=
    STEAM_COMPAT_CLIENT_INSTALL_PATH: /home/<user>/.local/share/Steam
    STEAM_COMPAT_DATA_PATH: /home/<user>/Games/atomic-heart-vk
  gamescope: false
wine:
  runner_executable: /usr/bin/umu-run

No PROTON_MEDIA_USE_GST, no movie-skipping, no PROTON_ENABLE_WAYLAND/HDR. That's the whole point of moving to GE-Proton11-1.

For debugging video/MF you can temporarily add:

PROTON_LOG: -all,+loaddll,+module,+warn,+err,+mfplat,+quartz,+dmo
PROTON_LOG_DIR: /home/<user>

From-scratch checklist

  1. Install the VK Play game via GameCenter (in Lutris through umu-run / GE-Proton).
  2. Install GE-Proton11-1 (e.g. via ProtonPlus) and make a space-free symlink for it (Gotcha A). Point PROTONPATH at the symlink.
  3. Make sure PROTON_ENABLE_WAYLAND is not set (Symptom 2). Keep --in-process-gpu in args.
  4. Launch → GameCenter UI → Play. The intro movie now plays; the game reaches the menu.
  5. If it renders at 720p/blurry, fix GameUserSettings.ini (DesiredScreenWidth/Height) — Symptom 3.
  6. Play.

Appendix — GE-Proton 10 fallback

If for some reason you must stay on GE-Proton 10 (where winedmo cannot play the intro), the pre-GE11 workaround was both of these together:

# 1) skip the crashing startup movies
MOV="$HOME/Games/atomic-heart-vk/pfx/drive_c/VK Play/Atomic Heart/AtomicHeart/Content/Movies"
for f in "$MOV"/Launch_*.mp4; do mv -v "$f" "$f.bak"; done
# revert: for f in "$MOV"/Launch_*.bak; do mv "$f" "${f%.bak}"; done
    PROTON_MEDIA_USE_GST: '1'        # force winegstreamer instead of broken winedmo

Skipping the movies alone is not enough on GE10 — an early MF call still crashes winedmo without PROTON_MEDIA_USE_GST=1. In-game videos will be black on GE10 but won't crash. On GE11 none of this is needed.

⚠️ VK Play GameCenter verifies the GUP manifest (size + MD5) on check/update and may re-download renamed movie files. A normal launch usually leaves them alone.


Sources / credits

  • GE-Proton11-1 release notes (GloriousEggroll): complete video-playback rework, gstreamer removed, all DirectShow/Media Foundation routed through the rebuilt winedmo → FFmpeg.
  • ProtonDB — Atomic Heart (app 668580): reports about broken videos and skipping startup movies (GE10).
  • CachyOS proton-cachyos CHANGELOG — description of the winedmo Seek() bug (GE10).
  • Known CEF/Electron-on-Proton issue: launchers render blank under the native Wayland driver; --in-process-gpu helps.
  • ValveSoftware/Proton issue #6554 (Atomic Heart, videos don't render).

Diagnosis done by reverse-engineering winedmo.so and parsing Proton logs.


If this helped, a star is appreciated. PRs confirming other hardware/drivers are welcome.

About

Atomic Heart (VK Play / GameCenter) on Linux via Lutris + UMU + Proton: fix startup crash (winedmo / Media Foundation), broken video, native 4K + HDR notes

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors