265 lines
12 KiB
Markdown
265 lines
12 KiB
Markdown
---
|
||
confidence: medium
|
||
created: '2026-05-23'
|
||
namespace: personal
|
||
sources:
|
||
- family/projects/htpc-windows-games-fix.md
|
||
tags:
|
||
- htpc
|
||
- infra
|
||
- how-to
|
||
- pitfalls
|
||
- vk-play
|
||
- atomic-heart
|
||
- vdf
|
||
- doom
|
||
title: HTPC Bazzite — Proton Compatibility
|
||
type: tech
|
||
updated: '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)
|
||
|
||
## Removed from Steam shortcuts ✅
|
||
- Human Fall Flat (3928445186) — already in real Steam
|
||
- Shovel Knight (2526703384) — already in real Steam
|
||
|
||
## Recently added — not yet tested
|
||
| Game | AppID (signed) | AppID (unsigned) | Proton | Path |
|
||
|------|----------------|-------------------|--------|------|
|
||
| VK GameCenter | -555655402 | 3739311894 | GE-Proton10-34 | `/run/media/bazzite/Windows/users/mallexxx/AppData/Local/GameCenter/GameCenter.exe` |
|
||
| Atomic Heart VK | -475792602 | 3819174694 | GE-Proton10-34 | `/run/media/bazzite/Data/gamecenter/atomic heart/AtomicHeart.exe` |
|
||
|
||
## 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\"` |
|
||
|
||
## Moved to Luxtorpeda — need testing
|
||
| Game | AppID | Before | After | Notes |
|
||
|------|-------|--------|-------|-------|
|
||
| Doom 3 BFG | 3602815006 | GE-Proton10-34 (white screen, audio plays) | **Luxtorpeda → rbdoom-3-bfg** (native Linux engine) | LaunchOptions cleared ✅ |
|
||
|
||
## 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 DOSBox‑X |
|
||
| 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 версии игр запускаются через лаунчер 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
|
||
|
||
---
|
||
|
||
## 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.
|
||
```python
|
||
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 |
|
||
|
||
Проверка бэкапа:
|
||
```python
|
||
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]]
|