Files
obsidian-vault/wiki/htpc-bazzite-proton.md
T

16 KiB
Raw Blame History

confidence, created, namespace, sources, tags, title, type, updated
confidence created namespace sources tags title type updated
medium 2026-05-23 personal
family/projects/htpc-windows-games-fix.md
htpc
infra
how-to
pitfalls
vk-play
atomic-heart
vdf
doom
HTPC Bazzite — Proton Compatibility tech 2026-05-27

HTPC Bazzite — Windows Game Proton Compatibility

Bazzite HTPC at bazzite@192.168.1.86. 39 non-Steam Windows games added as Steam shortcuts (2026-05-22). Default tool: Proton Experimental; older titles on Proton 8.0.


Working

  • Fallout 4
  • Vladik Brutal
  • Red Alert 3
  • Rayman Origins (fixed 2026-05-23 — GE-Proton10-34 + WINEDLLOVERRIDES=\"d3d9=b\" %command%)
  • Samurai Gunn (works but gamepad not detected)
  • GTA V, Cuphead (assumed; not retested) <<<<<<< HEAD
  • VK GameCenter (GE-Proton10-34, shared prefix c Lutris, авторизация через Lutris + vk-login-helper)
  • Atomic Heart VK (через VK GameCenter, 97GB, Data/gamecenter/atomic heart/, URL-схема vkplay://play/0.2015959) =======
  • VK GameCenter (GE-Proton10-34, Data/gamecenter/GameCenter/)
  • Atomic Heart VK (через VK GameCenter, 97GB, Data/gamecenter/atomic heart/)

nas/main

  • Doom 3 BFG (через flatpak Classic-RBDOOM-3-BFG)

Removed from Steam shortcuts

  • Human Fall Flat (3928445186) — already in real Steam
  • Shovel Knight (2526703384) — already in real Steam

Mapped to GE-Proton10-34 but still broken

Game AppID Symptom LaunchOpt set
Brawlhalla 2410005953 Doesn't start WINEDLLOVERRIDES=\"msvcp140,vcruntime140=n,b\"
Castle Crashers 3048471472 "crash, mini dump sent" WINEDLLOVERRIDES=\"msvcp140,vcruntime140=n,b\"
Worms WMD 3846411911 Doesn't start WINEDLLOVERRIDES=\"msvcp140,vcruntime140,d3dcompiler_47=n,b\"
Worms World Party 2401592779 Doesn't start WINEDLLOVERRIDES=\"msvcp140,vcruntime140=n,b\"
Duck Game 2926094216 Won't launch WINEDLLOVERRIDES=\"msvcp140,vcruntime140=n,b\"
  • Doom 3 BFG (flatpak, appid -2113091226) — работает
  • Atomic Heart VK / VK GameCenter — VK GameCenter запускается через Steam (GE-Proton10-34). Atomic Heart (97GB) установлен через GameCenter на Data. Exe GameCenter скопирован на Data (не на Windows/ — read-only). Symlink d: в dosdevices ведёт на /run/media/bazzite/Data.

Target:

Still broken — fundamental issues

Game AppID Symptom What's known What might help
Atomic Bomberman / BM95 2875360586 Crash "instruction at 0x0 referenced 0x7" Win3.1-era PE32. Tried: proton_8, registry Version=win98, virtual desktop 640×480, WineBus controllers off Dedicated 32-bit WINEARCH=win32; or DOSBoxX
Discworld Noir 2361018632 "Please insert disk III" Russian 2-CD "Zatmenie v2". 69 missing files copied . Drive D: → cd2 as CD-ROM Try cd1; or mount .nrg images
Final Fantasy X HD 2642741094 Was Japanese, no saves GameSetting.ini replaced (en+HD) from Windows Test pending
Metal Slug X 2938712902 Speed wrong, controls dead Neo-Geo emulator config issue, not Wine
Metro Exodus 3594910936 "Unable to create interface isteamuser" VC++ runtime copied Needs Goldberg steam_api64.dll + steam_appid.txt
Split Second 3871231787 Green artifacts PROTON_USE_WINED3D=1 Switch to GE-Proton; copy d3dx9_*.dll
Super Bomberman R2 3340354231 Gamepad not detected Steam Input config issue

Gamepad Issues

  • Samurai Gunn, Super Bomberman R2: not detected → Steam Input "Force Off" / "Use Default" cycle; or SDL_GAMECONTROLLER_ALLOW_STEAM_VIRTUAL_GAMEPAD=1
  • Metal Slug X: wrong speed in Neo-Geo wrapper

Common Fix Recipes

"Doesn't start" → try vcrun2019

protontricks <AppID> vcrun2019 d3dcompiler_47

XNA 4.0 games (Duck Game, etc.)

protontricks <AppID> xna40

DOS-era games (e.g. Atomic Bomberman)

Proton won't work. Use Steam Tinker Launch → wrap with DOSBox (dosbox-staging).

Non-Steam copy of a Steam game (e.g. Metro Exodus)

Game needs steam_api64.dll emulator:

  1. Drop in Goldberg steam_api64.dll
  2. Add steam_appid.txt with the real App ID (e.g. 412020 for Metro Exodus Enhanced)

Cyrillic encoding issues (e.g. Discworld Noir)

Try in order:

  1. LANG=ru_RU.UTF-8 %command%
  2. WINEDLLOVERRIDES=\"gdiplus=n,b\"
  3. Install ttf-mscorefonts + set Cyrillic codepage in Wine registry

White screen / broken D3D9 (Rayman Origins, Split Second)

PROTON_USE_WINED3D=1 %command%

Or try WINEDLLOVERRIDES=\"d3d9=b\" or an older Proton version.

Doom 3 BFG Edition — чёрные текстуры, краш после интро

Proton ломает текстуры — известный регресс. Фикс: Luxtorpeda → rbdoom-3-bfg (native Linux engine).


VK Play / VK GameCenter на Bazzite

Аккаунты VK Play

  • Основной: xxxellam@gmail.com — Google, залогинен на Bazzite
  • Дополнительный: mallexxx@mail.ru — подключён к VK Play

Общая схема

VK Play версии игр запускаются через лаунчер VK GameCenter (GameCenter.exe) поверх Proton. Лаунчер отвечает за авторизацию и лицензирование (в т.ч. Denuvo-эмуляцию).

Известно:

  • VK Play официально подтвердил совместимость Atomic Heart со Steam Deck/Proton.
  • Для авторизации используется mycomgames:// URL-схема. На HTPC без Steam Deck API может потребоваться ручной ввод логина/пароля.
  • Альтернатива: Lutris с конфигом из gist.github.com/keyCat (обработчик mycomgames:// схемы).
  • Перед первым запуском может понадобиться protontricks -555655402 vcrun2019.

Как добавить VK Play игру

  1. Запустить VK GameCenter через Steam (GE-Proton10-34)
  2. Авторизоваться в VK Play
  3. Установить игру через лаунчер (Atomic Heart уже установлен)
  4. После авторизации игра появится в библиотеке VK Play

Lutris login workaround (shared prefix with Steam/Proton)

Проблема: Steam CEF browser не умеет обрабатывать mycomgames:// URL-схему, необходимую для OAuth-логина VK Play. При клике "Login" — ERR_NETWORK_IO_SUSPENDED.

Решение: использовать Lutris для первичной авторизации, потом запускать игру через Steam/Proton.

Implementation status (2026-05-28)

Все компоненты настроены через SSH (Kraken → HTPC). Последний шаг (логин) требует GUI-сеанса на HTPC.

Component Status Notes
d: dosdevices symlink (→ Data) /run/media/bazzite/Data
handle-vkplay-scheme script ~/.local/bin/ — обрабатывает mycomgames:// через Proton 10.0
.desktop → MIME x-scheme-handler/mycomgames Зарегистрирован на Vkplay-scheme-handler.desktop
Lutris flatpak flathub net.lutris.Lutris
Lutris game config (shared prefix) ~/.config/lutris/games/vk-play-shared.yml
start-vk.cmd in Proton prefix drive_c/VKPlay/gamecenter/start-vk.cmd
Steam shortcut VK GameCenter AppID=-1973339958, GE-Proton10-34
Steam shortcut Atomic Heart VK AppID=-1973339958 (через GameCenter)
Atomic Heart installed (97GB) /run/media/bazzite/Data/gamecenter/atomic heart/

Осталось сделать (на HTPC в десктоп-режиме):

  1. Открыть Lutris → VK Play Game Center → Login

  2. Авторизоваться в браузере, разрешить mycomgames://

  3. Вернуться в игровой режим

  4. Запустить Atomic Heart через Steam → ожидать что токен в shared prefix работает

  5. Установить Lutris через flatpak:

    flatpak install flathub net.lutris.Lutris
    
  6. Создать кастомный пресет VK GameCenter в Lutris, указав тот же Wine prefix, что использует Steam:

    ~/.local/share/Steam/steamapps/compatdata/-1973339958/pfx/
    
  7. Зарегистрировать mycomgames:// protocol handler — поместить .desktop-файл, который ассоциирует схему с Lutris:

  8. Выполнить логин через Lutris — откроется внешний браузер, авторизация сработает, редирект mycomgames:// попадёт в Lutris.

  9. После успешного логина запускать игру через Steam — токен уже лежит в shared prefix, mycomgames:// больше не нужен.

Почему shared prefix: игра (Atomic Heart, 97GB) НЕ копируется — она уже установлена в /run/media/bazzite/Data/gamecenter/atomic heart/ через Steam-версию VK GameCenter. Lutris будет использовать тот же префикс, где уже есть dosdevices symlink d:/run/media/bazzite/Data и все токены авторизации.


How to Add a Non-Steam Game via VDF

Шаг 0: Остановить Steam

systemctl --user stop gamescope-session-plus@steam.service

Шаг 1: Прочитать shortcuts.vdf backup AppID в shortcuts.vdf — signed int32. В config.vdf CompatToolMapping — unsigned uint32.

import vdf
# read backup
with open('shortcuts.vdf.bak-eagle', 'rb') as f:
    d = vdf.binary_loads(f.read())
# edit d['shortcuts']
# write
with open('shortcuts.vdf', 'wb') as f:
    f.write(vdf.binary_dumps(d))

Шаг 2: Добавить CompatToolMapping в config.vdf Unsigned appid = signed & 0xFFFFFFFF.

Шаг 3: Запустить Steam, проверить

Критически важно:

  • Редактировать ТОЛЬКО при остановленном Steam
  • Делать бэкап до изменений
  • vdf.binary_loads — регистрозависим: AppName, Exe, а не appname, exe

VDF Troubleshooting

shortcuts.vdf испорчен (все записи пустые)

Steam перезаписывает VDF при старте если не понимает ручные правки. Восстанавливай из бэкапа.

Бэкапы~/.steam/steam/userdata/147839491/config/):

Файл Дата Entries Примечание
shortcuts.vdf.bak-eagle 23 мая 18:32 106 Последний чистый бэкап — не тронут
shortcuts.vdf.bak-launch 22 мая 22:25 108 Старый, без Atomic Heart
shortcuts.vdf.whale-restored-YYYY-MM-DD по ситуации 108 Текущее состояние после восстановления
/run/media/bazzite/Data/backups/saves/shortcuts/shortcuts.vdf.YYYY-MM-DD daily Автоматический через saves-backup.service

Проверка бэкапа:

import vdf
with open("shortcuts.vdf.bak-eagle", "rb") as f:
    d = vdf.binary_loads(f.read())
named = sum(1 for e in d["shortcuts"].values() if e.get("AppName"))
print(f"{named} named entries")

VDF Incident — 2026-05-27 (разбор)

Что произошло: при попытке добавить VK GameCenter + Atomic Heart VK через Python vdf на работающем Steam, Steam переписал файл при старте, создав 110 пустых записей-заглушек.

Почему бэкапы тоже пустые: все бэкапы были сделаны уже после того как Steam испортил файл. Единственный выживший — bak-eagle (23 мая, до начала экспериментов).

Как нашли: hexdump показал имена игр, но vdf.binary_loads не видел их — проблема в регистре ключей (AppName, а не appname).

Как восстановили:

  1. Остановлен Steam
  2. Считан bak-eagle (106 записей) + добавлены VK GameCenter (index 106) и Atomic Heart VK (index 107)
  3. Обнаружено что config.vdf уже имеет CompatToolMapping с другими appid от предыдущих попыток
  4. Перегенерация с appid, совпадающими с config.vdf
  5. Удалены дублирующиеся unsigned записи из config.vdf
  6. Создан shortcuts.vdf.whale-restored-2026-05-27

Уроки:

  • Только при остановленном Steam
  • Бэкап ДО изменений
  • Проверять signed↔unsigned соответствие
  • Регистр ключей в vdf.binary_loads

Key Infra Notes

  • shortcuts.vdf: ~/.steam/steam/userdata/147839491/config/shortcuts.vdf (binary VDF)
  • config.vdf: ~/.steam/steam/config/config.vdf (text VDF, CompatToolMapping block)
  • Wine prefix: ~/.local/share/Steam/steamapps/compatdata/<AppID>/pfx/
  • protontricks: Flatpak, needs flatpak override --user --filesystem=/var/home/bazzite/.local/share/Steam
  • Background jobs: systemd-run --user --unit=<name>
  • GE-Proton: extract tar.gz into ~/.steam/steam/compatibilitytools.d/, restart Steam

saves-backup.service

Systemd user service (/etc/systemd/user/saves-backup.service):

  • Ежедневный rsync Steam userdata
  • Копия shortcuts.vdf в /run/media/bazzite/Data/backups/saves/shortcuts/shortcuts.vdf.YYYY-MM-DD
  • Ротация: удаление старше 30 дней

Fixes Done (filesystem / config / cover-art)

  • Cover art swapped: Atomic Bomberman, Discworld Noir, SBR2, FFVI, ALttP, Sunset Riders
  • "Captain Commando" → "Sunset Riders"
  • CompatToolMapping for all AppIDs:
    • GE-Proton10-34: Brawlhalla, Castle Crashers, Worms WMD/WP, Duck Game, Rayman Origins, VK GameCenter, Atomic Heart VK, insaneramzes Atomic Heart
    • Proton 8.0: Atomic Bomberman, Discworld Noir, Metal Slug X, Soldat, Red Alert 3, Split Second
    • Luxtorpeda: Doom 3 BFG
    • Proton Experimental: ~24 remaining games
  • Doom 3 BFG → Luxtorpeda (rbdoom-3-bfg, 2026-05-27)
  • Rayman Legends: Ubisoft Connect + registry fix
  • Discworld Noir: symlink, Cyrillic locale, missing files, drive D: as CD-ROM
  • FFX HD: English GameSetting.ini
  • VC++ runtime + d3dcompiler DLLs copied into 6 prefixes from Windows partition
  • Duck Game: XNA 4.0 framework dir copied
  • Atomic Bomberman: Version=win98 + virtual desktop 640×480 + WineBus controllers off
  • GE-Proton10-34 installed

Source Assets (Windows partition)

  • Ubisoft Game Launcher: /run/media/bazzite/Windows/Program Files (x86)/Ubisoft/
  • System DLLs: /run/media/bazzite/Windows/Windows/System32/, SysWOW64/
  • XNA 4.0: /run/media/bazzite/Windows/Program Files (x86)/Microsoft XNA/
  • .NET 4.0: /run/media/bazzite/Windows/Microsoft.NET/Framework64/v4.0.30319/
  • Discworld Noir source: /run/media/bazzite/Data/downloads/zatmenie v2 [torrents.ru]/
  • FFX settings: /run/media/bazzite/Windows/Users/mallexxx/documents/square enix/...

Open Questions

  1. Delete pfx/ folders for still-broken GE-Proton games (Brawlhalla, Castle Crashers, Worms WMD/WP, Duck Game)
  2. Atomic Bomberman: 32-bit Wineprefix outside Proton
  3. Discworld Noir: try cd1 or mount .nrg images
  4. Metro Exodus: Goldberg Steam emulator?
  5. Atomic Heart VK: test VK Play авторизацию, при необходимости protontricks vcrun2019
  6. Doom 3 BFG: test с Luxtorpeda → rbdoom-3-bfg

See Also

personal-os-architecture obsidian-mcp-wrapper family/how-to/htpc-steam-nonsteam-shortcuts