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

208 lines
9.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: HTPC Bazzite — Proton Compatibility
created: '2026-05-23'
updated: '2026-05-27'
type: tech
namespace: personal
tags:
- htpc
- infra
- how-to
- pitfalls
- vk-play
- atomic-heart
sources:
- family/projects/htpc-windows-games-fix.md
confidence: medium
---
# 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 Games
Fallout 4, Vladik Brutal, Red Alert 3, GTA V, Cuphead. Samurai Gunn works
but gamepad is not detected.
## Common Fix Recipes
### "Doesn't start" → try vcrun2019
For UE3/UE4 and modern Windows titles missing Visual C++ runtime:
```
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%` in Steam launch options
2. `WINEDLLOVERRIDES=\"gdiplus=n,b\"`
3. Install `ttf-mscorefonts` manually + 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 Experimental и 7+/8+/9+ ломают текстуры — известный регресс.
**Лучший фикс** — заменить движок через Luxtorpeda:
1. Совместимость → **Luxtorpeda** (установлен в compatibilitytools.d)
2. При запуске выбрать **rbdoom-3-bfg** (нативный Linux движок)
3. LaunchOptions очищены (`PROTON_USE_WINED3D=1` больше не нужен)
## VK Play / VK GameCenter на Bazzite
### Общая схема
VK Play версии игр запускаются через лаунчер VK GameCenter (`GameCenter.exe`) поверх Proton. Игра устанавливается средствами VK Play, лаунчер отвечает за авторизацию и лицензирование (в т.ч. Denuvo-эмуляцию).
### Steam shortcuts
| Shortcut | AppID (signed) | AppID (unsigned) | Proton | Путь |
|----------|----------------|-------------------|--------|------|
| 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` |
### VK Play + Proton: известные проблемы и решения
- **Авторизация:** лаунчер использует `mycomgames://` URL-схему для браузера. Может потребоваться ручной ввод логина/пароля или обработчик схемы (через Lutris конфиг).
- **vcredist:** на Steam Deck гайдах рекомендуется установить Visual C++ runtime через protontricks перед первым запуском.
- **Совместимость:** VK Play официально подтвердил совместимость Atomic Heart со Steam Deck/Proton.
- **Альтернатива через Lutris:** есть готовый `vk_play_lutris.yml` с обработчиком `mycomgames://` схемы (источник: gist.github.com/keyCat).
### Запуск VK Play игры
1. Запустить VK GameCenter через Steam (GE-Proton10-34)
2. Авторизоваться в VK Play
3. Установить игру через лаунчер (в данном случае Atomic Heart установлен заранее)
4. После авторизации игра появится в библиотеке VK Play, можно запускать
## Key Infra Notes
- **shortcuts.vdf**: binary VDF at
`~/.steam/steam/userdata/147839491/config/shortcuts.vdf`
Edit with Steam closed:
`systemctl --user stop gamescope-session-plus@steam.service`
- **CompatToolMapping**: `~/.steam/steam/config/config.vdf` — per-AppID Proton override
- **Wine prefix**: `~/.local/share/Steam/steamapps/compatdata/<AppID>/pfx/`
- **protontricks**: Flatpak, needs xvfb + flatpak filesystem permission to
`~/.local/share/Steam`
- **Background protontricks** (survives SSH disconnect):
`systemd-run --user --unit=<name> flatpak run ...`
- **shortcuts.vdf бэкапы:** хранятся в той же папке, именованные `shortcuts.vdf.bak-*`. Автоматический daily backup через saves-backup.service в `/run/media/bazzite/Data/backups/saves/shortcuts/shortcuts.vdf.YYYY-MM-DD`.
## BTRFS / Backups
- **saves-backup.service** — systemd user service, ежедневный rsync Steam userdata + копия shortcuts.vdf с ротацией 30 дней.
- После изменений shortcuts.vdf: cp в `shortcuts.vdf.whale-restored-YYYY-MM-DD` в той же папке.
## Added Games
| Game | AppID (unsigned) | Path | Proton |
|------|-----------------|------|--------|
| Atomic Heart (insaneramzes) | 2234736297 | `/run/media/bazzite/Data/games/atomic.heart.ultimate.edition-insaneramzes/atomicheart.exe` | GE-Proton10-34 |
| VK GameCenter | 3739311894 | `/run/media/bazzite/Windows/users/mallexxx/AppData/Local/GameCenter/GameCenter.exe` | GE-Proton10-34 |
| Atomic Heart VK | 3819174694 | `/run/media/bazzite/Data/gamecenter/atomic heart/AtomicHeart.exe` | GE-Proton10-34 |
| Doom 3 BFG | 3602815006 | `/run/media/bazzite/Data/games/doom 3 bfg edition/doom3bfg.exe` | Luxtorpeda → rbdoom-3-bfg |
## Broken Status
| Game | AppID | Issue | Next |
|------|-------|-------|------|
| Atomic Bomberman | 2875360586 | DOS-era; 0x0 memory read | DOSBox wrapper |
| Brawlhalla | 2410005953 | Won't start | Try `Brawlhalla.exe` entry-point |
| Duck Game | 2926094216 | XNA 4.0 missing | Wait for `xna40` install |
| Worms W.M.D | 3846411911 | UE3 + anti-tamper | `vcrun2019 + d3dcompiler_47` |
| Metro Exodus | 3594910936 | steam_api64.dll | Goldberg + appid.txt |
| Castle Crashers | 3048471472 | Mini-dump crash | `vcrun2019 dotnet48` |
## Gamepad Issues
- **Samurai Gunn, Super Bomberman R2**: not detected
→ try Steam Input "Force Off" → "Use Default" cycle
→ or `SDL_GAMECONTROLLER_ALLOW_STEAM_VIRTUAL_GAMEPAD=1`
- **Metal Slug X**: wrong speed in Neo-Geo wrapper → check emulator settings
## How to Add a Non-Steam Game via VDF
**Шаг 0: Остановить Steam**
```
systemctl --user stop gamescope-session-plus@steam.service
```
**Шаг 1: Прочитать shortcuts.vdf backup**
```
python3 -c "
import vdf
with open('shortcuts.vdf.bak-eagle', 'rb') as f:
data = f.read()
d = vdf.binary_loads(data)
# modify d['shortcuts']
with open('shortcuts.vdf', 'wb') as f:
f.write(vdf.binary_dumps(d))
"
```
**Шаг 2: Добавить CompatToolMapping в config.vdf**
AppID в CompatToolMapping — unsigned uint32.
Если в shortcuts.vdf appid signed (-555655402), то unsigned = signed & 0xFFFFFFFF (3739311894).
**Шаг 3: Запустить Steam, проверить**
**Критически важно:**
- signed appid в shortcuts.vdf и unsigned в config.vdf — это один и тот же appid
- Не редактировать файлы при запущенном Steam — он перезапишет
- Делать бэкап перед любыми изменениями
- vdf.binary_loads ищет ключи с точным регистром: `AppName`, не `appname`
## VDF Troubleshooting
### shortcuts.vdf испорчен (все записи пустые)
Steam перезаписывает VDF при старте если не понимает ручные правки.
Восстановление: скопировать один из бэкапов (bak-eagle, bak-launch и т.д.) и добавить нужные новые записи заново.
Бэкапы в том же каталоге: `shortcuts.vdf.bak-eagle` (23 мая, 106 записей, последний чистый до экспериментов).
Проверка бэкапа:
```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")
```
### AppID mismatch: shortcuts.vdf vs config.vdf
Steam хранит appid как unsigned uint32 в CompatToolMapping, но в shortcuts.vdf как signed int32. При добавлении нового шортката через VDF нужно сгенерировать новый appid (signed int32) и добавить его же (unsigned) в CompatToolMapping.
### Бэкап после восстановления
```
cp shortcuts.vdf shortcuts.vdf.whale-restored-YYYY-MM-DD
```
## SteamGridDB
API key хранится в `~/Documents/steamgriddb_api_key.txt` на HTPC.
Текущий ключ: `5f0a7cb3366dede2c10860a95795ce60` (обновлён: 2026-05-23, regenerated).
Скрипты постеров: `~/scripts/update-artwork.sh` (или аналог).
Запускать после добавления новых шорткатов.
## See Also
[[personal-os-architecture]] [[obsidian-mcp-wrapper]] [[family/how-to/htpc-steam-nonsteam-shortcuts]]