Files
obsidian-vault/family/how-to/htpc-bazzite-proton.md
T

22 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-06-01

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)
  • VK GameCenter (GE-Proton10-34, Data/gamecenter/GameCenter/)
  • Discworld Noir (NQ) — работает, сейвы грузятся
  • 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\"

Target:

Unravel — EA App, вылет после "preparing game"

Steam AppID: 1225560 Статус: broken — вылетает после "preparing game" на GE-Proton10-34

План фикса

  1. Заменить EAappInstaller.exe — скачать свежий (~2 MB) с EA CDN и переписать:

    /run/media/system/Data/Steam/steamapps/common/Unravel/__Installer/Origin/redist/internal/EAappInstaller.exe
    
  2. Включить GE-Proton10-34 для Unravel (Properties → Compatibility → Force GE-Proton10-34)

  3. Launch Options: PROTON_USE_WINED3D=1 %command%

  4. После запуска — EA app установится, привязать аккаунт EA к Steam, дальше работает

Источник

Steam Guide — Unravel on Linux (Foxidy Fox, 2026-03-29)

Still broken — fundamental issues

Game AppID Symptom What's known What might help
FPC Atomic Bomberman -1009122144 (unsigned: 3285845152) Native Linux SDL-порт (FPC). Работает: геймпад, музыка. Причина: sleep 5 в LaunchOptions. Win95-шорткат (BM95.EXE) удалён. Артворки скопированы. Путь в /run/media/bazzite/Data/Games/fpc_atomic/. Фикс: sleep 5 && LD_LIBRARY_PATH=/run/media/bazzite/Data/Games/fpc_atomic %command%
Atomic Heart VK Требует VK Play авторизацию через Lutris 97GB, GameCenter, shared prefix Логин через Lutris на десктопе HTPC
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

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: cover art swapped (FPC native, BM95.EXE удалён)
  • 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]/
  • Discworld Noir (скачан 2026-05-29): /run/media/bazzite/Data/downloads/Discworld Noir.isz (ISZ, 1.1GB, Alcohol 120%)
  • Discworld (оригинал, скопирован 2026-05-29): /run/media/bazzite/Data/downloads/DISCWORLD.iso (ISO, 434MB) — с TrueNAS /mnt/RED_2TB/backup/Downloads/Distr/games/DISCWORLD.iso
  • FFX settings: /run/media/bazzite/Windows/Users/mallexxx/documents/square enix/...

Discworld Noir (NQ repack) — настроен

Статус: работает — запускается, сейвы грузятся

Источник: Discworld Noir.isz (Alcohol 120%, 1.1 GB) с Яндекс.Диска — пропатченный репак с фиксом "insert disk III"

Папка: /run/media/bazzite/Data/Games/discworld_noir_nq/

  • tin3_dxd.exe — оригинальный (560160 bytes, не Loma fix)
  • cd1/, cd2/ — оба диска (по 313 файлов, merged)
  • DN_Setting_*.exe, cw3220.dll, dwnoir.dll

Proton prefix: compatdata/2973247222/pfx/ (unsigned от appid -1321720074) Symlink: C:\Discworld Noir/run/media/bazzite/Data/Games/discworld_noir_nq/ Registry: [Software\Wow6432Node\Perfect Entertainment\Discworld Noir] — все пути C:\Discworld Noir

Steam shortcut: Index 108, Exe = Linux-путь напрямую, GE-Proton10-34

Ключевой фикс — fstab монтирование: Сейвы не грузились (Load задизейблен, sg.1 создавался но не читался). Решилось перемонтированием Data через /etc/fstab:

UUID=01D99C23361E63D0 /run/media/bazzite/Data ntfs-3g uid=1000,gid=1000,fmask=113,dmask=002,noatime,exec 0 2

udisks2 давал неверные права для Proton I/O. После fstab NTFS стал регистрозависимым — Games с большой буквы, Downloads с большой буквы.

Что не сработало:

  • Loma fix — спиннер / кривая палитра
  • Dolomite (ddraw.dll) — не влияет на меню

Original Discworld (ScummVM) — работает

Статус: работает — запускается через Steam shortcut

Источник: DISCWORLD.iso (434 MB) с TrueNAS → распакован в /run/media/bazzite/Data/Downloads/discworld_iso/

Steam shortcut: Index 107, Exe = scummvm.sh → flatpak org.scummvm.ScummVM, CompatToolMapping не нужен (native Linux)

Game ID: tinsel:dw — ScummVM 2026.2.0, engine-qualified LaunchOptions: -f -p "/run/media/bazzite/Data/Downloads/discworld_iso/DISCWLD" tinsel:dw

Путь к данным: /run/media/bazzite/Data/Downloads/discworld_iso/DISCWLD/ — внутри .GRA файлы

Что было сломано:

  1. Прописан dw1 — ScummVM 2026.2.0 требует engine-qualified ID tinsel:dw
  2. Путь указывал на корень discworld_iso/ — файлы лежат в DISCWLD/
  3. После fstab путь был с маленькой буквы downloads — NTFS стал регистрозависимым

Open Questions

  1. Delete pfx/ folders for still-broken GE-Proton games (Brawlhalla, Castle Crashers, Worms WMD/WP, Duck Game) |2. FPC Atomic Bomberman фикс: sleep 5 && в LaunchOptions
  2. Metro Exodus: Goldberg Steam emulator?
  3. Atomic Heart VK: test VK Play авторизацию, при необходимости protontricks vcrun2019

FPC Atomic Bomberman — Native Linux

Не Proton. Нативный SDL-порт (Free Pascal). Всё работает.

Расположение

  • Папка: /run/media/bazzite/Data/Games/fpc_atomic/
  • Бинарник: fpc_atomic (8.9MB)
  • Steam shortcut: Index 107, unsigned AppID 3285845152
  • Steam LaunchOptions: LD_LIBRARY_PATH=/run/media/bazzite/Data/Games/fpc_atomic sleep 5 && LD_LIBRARY_PATH=/run/media/bazzite/Data/Games/fpc_atomic %command%

Почему sleep 5

Steam Virtual Gamepad создаётся с задержкой после старта Steam-сессии. FPC Atomic вызывает SDL_Init сразу при запуске и сканирует SDL-устройства. Если Virtual Gamepad ещё не появился — ResolveGameControllerNameToIndex() возвращает -1 и геймпад не работает. sleep 5 перед запуском игры даёт Steam время создать виртуальный геймпад.

SDL2

  • Библиотеки (libbass.so, libsdl2.so) лежат в папке игры
  • LD_LIBRARY_PATH указывает на /run/media/bazzite/Data/Games/fpc_atomic/
  • SDL2-devel не ставится на Bazzite (exclude-filtered mesa-libGLU-devel), но системная SDL2 работает

Анимации взрывов

  • ani.zip (xplode18-21 ANIs) — скачан через HTPC (Cloudflare на Mac блокирует geocities)

Конфиг

  • ~/.config/fpc_atomic/fpc_atomic.cfg
  • Настройки геймпада сохраняются и не сбрасываются
  • SDL_Name=Steam Virtual Gamepad, SDL_NameIndex=0, SDL_IsGameController=1

Артворки

Скопированы с удалённого BM95.EXE шортката (unsigned appid 28753605863285845152):

  • 3285845152_hero.png
  • 3285845152_logo.png
  • 3285845152.png
  • 3285845152p.png

See Also

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