[2026-06-08] syncthing: .stversions/.obsidian/workspace-mobile.json .stversions/family/how-to/htpc-bazzite-proton.md .stversions/personal/projects/personal-os/enrichment-runs/cross-enrichment-last.md .stversions/personal/projects/personal-os/enrichment-runs/cross-enrichment-overflow-2026-05-24.md .stversions/personal/projects/personal-os/enrichment-runs/cross-enrichment-overflow-2026-05-31.md .stversions/personal/projects/personal-os/enrichment-runs/cross-enrichment-queue.md .stversions/personal/projects/personal-os/enrichment-runs/last.md .stversions/personal/projects/personal-os/wiki-curation-runs/2026-05-15.md .stversions/personal/projects/personal-os/wiki-curation-runs/2026-05-16-p2.md .stversions/personal/projects/personal-os/wiki-curation-runs/2026-05-16.md
This commit is contained in:
+13
-13
@@ -141,12 +141,12 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "family/documents/games-wishlist.md",
|
"file": "personal/projects/personal-os/wiki-curation-runs/2026-05-23.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
},
|
},
|
||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "games-wishlist"
|
"title": "2026-05-23"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -290,7 +290,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"currentTab": 19
|
"currentTab": 9
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "vertical"
|
"direction": "vertical"
|
||||||
@@ -306,7 +306,7 @@
|
|||||||
"type": "file-explorer",
|
"type": "file-explorer",
|
||||||
"state": {
|
"state": {
|
||||||
"sortOrder": "alphabetical",
|
"sortOrder": "alphabetical",
|
||||||
"autoReveal": false
|
"autoReveal": true
|
||||||
},
|
},
|
||||||
"icon": "lucide-folder-closed",
|
"icon": "lucide-folder-closed",
|
||||||
"title": "Файловый менеджер"
|
"title": "Файловый менеджер"
|
||||||
@@ -318,7 +318,7 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "search",
|
"type": "search",
|
||||||
"state": {
|
"state": {
|
||||||
"query": "Мерседес",
|
"query": "Bazzite",
|
||||||
"matchingCase": false,
|
"matchingCase": false,
|
||||||
"explainSearch": false,
|
"explainSearch": false,
|
||||||
"collapseAll": false,
|
"collapseAll": false,
|
||||||
@@ -445,8 +445,15 @@
|
|||||||
"bases:Создать новую базу": false
|
"bases:Создать новую базу": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "98d78f21d10301ba",
|
"active": "6fbf0b97dfa87f9b",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
|
"personal/projects/personal-os/wiki-curation-runs/2026-05-28.md",
|
||||||
|
"family/how-to/htpc.md",
|
||||||
|
"family/how-to/htpc-bazzite-proton.md",
|
||||||
|
"personal/projects/personal-os/wiki-curation-runs/2026-05-23.md",
|
||||||
|
"family/documents/games-wishlist.md",
|
||||||
|
"personal/books-wishlist.md",
|
||||||
|
"personal/documents/learning-list.md",
|
||||||
"personal/documents/3d-print-wishlist.md",
|
"personal/documents/3d-print-wishlist.md",
|
||||||
"personal/documents/books-reading-list.md",
|
"personal/documents/books-reading-list.md",
|
||||||
"family/documents/books-reading-list.md",
|
"family/documents/books-reading-list.md",
|
||||||
@@ -454,7 +461,6 @@
|
|||||||
"personal/projects/balda/workspace-context.md",
|
"personal/projects/balda/workspace-context.md",
|
||||||
"personal/projects/balda/soul.md",
|
"personal/projects/balda/soul.md",
|
||||||
"personal/shopping-order.md",
|
"personal/shopping-order.md",
|
||||||
"personal/books-wishlist.md",
|
|
||||||
"personal/documents/fly-box.md",
|
"personal/documents/fly-box.md",
|
||||||
"family/documents/car-notes.md",
|
"family/documents/car-notes.md",
|
||||||
"work/briefs/inbox/2026-06-05-1630.md",
|
"work/briefs/inbox/2026-06-05-1630.md",
|
||||||
@@ -469,12 +475,6 @@
|
|||||||
"personal/projects/eagle-dashboard.md",
|
"personal/projects/eagle-dashboard.md",
|
||||||
"personal/gift-ideas.md",
|
"personal/gift-ideas.md",
|
||||||
"work/briefs/daily/2026-06-04.md",
|
"work/briefs/daily/2026-06-04.md",
|
||||||
"family/contacts/services.md",
|
|
||||||
"personal/index.md",
|
|
||||||
"family/documents/recipes-wishlist.md",
|
|
||||||
"work/zoom-personal-link.md",
|
|
||||||
"personal/documents/music-recommendations.md",
|
|
||||||
"personal/documents/medical-notes.md",
|
|
||||||
"work/briefs/daily",
|
"work/briefs/daily",
|
||||||
"work/briefs/weekly",
|
"work/briefs/weekly",
|
||||||
"work/briefs/inbox",
|
"work/briefs/inbox",
|
||||||
|
|||||||
+455
@@ -0,0 +1,455 @@
|
|||||||
|
---
|
||||||
|
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-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)
|
||||||
|
- **Worms W.M.D (native Linux)** — ✅ запускается (MojoSetup-инсталлятор, rutracker, не Proton)
|
||||||
|
|
||||||
|
## 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 | Diagnosis | 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 World Party Remastered | 2401592779 | Лог: `Steam denied appID 2401592779`. **Вывод:** GOG, `w2.exe` со вшитым Steamworks SDK — игра дёргает `SteamAPI_Init()` с хардкодом 270910, Steam проверяет лицензию → denied. `steam_appid.txt` не помогает. Фундаментально неработоспособна через Proton как non-Steam без обхода Steam API. | — | `WINEDLLOVERRIDES=\"msvcp140,vcruntime140=n,b\"` |
|
||||||
|
| Duck Game | 2926094216 | Won't launch | — | `WINEDLLOVERRIDES=\"msvcp140,vcruntime140=n,b\"` |
|
||||||
|
|
||||||
|
## Epic Games & GOG — Heroic Launcher
|
||||||
|
|
||||||
|
### Игры
|
||||||
|
|
||||||
|
| Игра | Источник | Статус |
|
||||||
|
|------|----------|--------|
|
||||||
|
| GTA V | Epic Games | ✅ уже в списке (Working) |
|
||||||
|
| Fall Guys | Epic Games | 📥 к установке |
|
||||||
|
| Borderlands: The Handsome Collection | Epic Games | 📥 к установке |
|
||||||
|
| Sid Meier's Civilization® VI | Epic Games | 📥 к установке |
|
||||||
|
| Grand Theft Auto V: Premium Edition | Epic Games | 📥 к установке (дубль GTA V?) |
|
||||||
|
| Hitman Absolution | GOG.com | ⬇️ скачивается |
|
||||||
|
|
||||||
|
### Как установить Epic Games игры через Heroic
|
||||||
|
|
||||||
|
1. **Установить Heroic Games Launcher** (если ещё нет):
|
||||||
|
```bash
|
||||||
|
flatpak install flathub com.heroicgameslauncher.hgl
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Войти в Epic Games:**
|
||||||
|
Heroic → Login → Epic Games → авторизация через браузер
|
||||||
|
|
||||||
|
3. **Установить игру:**
|
||||||
|
Library → найти игру → Install → выбрать путь:
|
||||||
|
`/run/media/system/Data/games/`
|
||||||
|
|
||||||
|
4. **Настроить Proton:**
|
||||||
|
Heroic → игра → Settings → Wine → выбрать GE-Proton
|
||||||
|
(скачать через Heroic → Wine Manager если ещё нет)
|
||||||
|
|
||||||
|
5. **Добавить в Steam для Gaming Mode:**
|
||||||
|
Heroic → игра → правая кнопка → Add to Steam
|
||||||
|
Игра появится как non-Steam shortcut, запускается через gamescope
|
||||||
|
|
||||||
|
6. **Обложки:**
|
||||||
|
После добавления в Steam запустить `fix_artwork.py` для арта с SteamGridDB
|
||||||
|
|
||||||
|
### GOG игры через Heroic
|
||||||
|
|
||||||
|
Аналогично Epic — Heroic поддерживает GOG нативно:
|
||||||
|
1. Heroic → Login → GOG → авторизация
|
||||||
|
2. Library → GOG tab → Install
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Target:
|
||||||
|
|
||||||
|
## Unravel — EA App, вылет после "preparing game"
|
||||||
|
|
||||||
|
**Steam AppID:** 1225560
|
||||||
|
**Статус:** broken — вылетает после "preparing game" на GE-Proton10-34
|
||||||
|
|
||||||
|
### План фикса
|
||||||
|
|
||||||
|
1. **Заменить EAappInstaller.exe** — скачать свежий (~2 MB) с [EA CDN](https://origin-a.akamaihd.net/EA-Desktop-Client-Download/installer-releases/EAappInstaller.exe) и переписать:
|
||||||
|
```
|
||||||
|
/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](https://steamcommunity.com/sharedfiles/filedetails/?id=3695395873) (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 | — | ✅ Авторизация сделана, игра обновлена. Запуск тестируется. | 97GB, GameCenter, shared prefix | — |
|
||||||
|
| 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 | — |
|
||||||
|
| 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
|
||||||
|
Game needs `steam_api64.dll` emulator:
|
||||||
|
1. Drop in Goldberg `steam_api64.dll`
|
||||||
|
2. Add `steam_appid.txt` with the real App ID
|
||||||
|
|
||||||
|
### 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/` |
|
||||||
|
|
||||||
|
**Статус (2026-06-07):** ✅ Авторизация через Lutris выполнена. Игра обновлена. Запуск проверяется.
|
||||||
|
|
||||||
|
1. Установить Lutris через flatpak:
|
||||||
|
```
|
||||||
|
flatpak install flathub net.lutris.Lutris
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Создать кастомный пресет VK GameCenter в Lutris, указав **тот же Wine prefix**, что использует Steam:
|
||||||
|
```
|
||||||
|
~/.local/share/Steam/steamapps/compatdata/-1973339958/pfx/
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Зарегистрировать `mycomgames://` protocol handler — поместить .desktop-файл, который ассоциирует схему с Lutris:
|
||||||
|
- Референс: https://gist.github.com/keyCat/a77b1d4d1e0f651b9d3a9818e7f739c5
|
||||||
|
|
||||||
|
4. Выполнить логин через Lutris — откроется внешний браузер, авторизация сработает, редирект `mycomgames://` попадёт в Lutris.
|
||||||
|
|
||||||
|
5. После успешного логина запускать игру через 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.
|
||||||
|
```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: 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`:
|
||||||
|
```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
|
||||||
|
3. Metro Exodus: Goldberg Steam emulator?
|
||||||
|
4. **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 `2875360586` → `3285845152`):
|
||||||
|
- `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]]
|
||||||
Regular → Executable
+10
-12
@@ -122,15 +122,14 @@ on Proton 8.0.
|
|||||||
|
|
||||||
## Still broken — fundamental issues
|
## Still broken — fundamental issues
|
||||||
|
|
||||||
| Game | AppID | Symptom | What's known | What might help |
|
| 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%` |
|
| 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 | — | ✅ Авторизация сделана, игра обновлена. Запуск тестируется. | 97GB, GameCenter, shared prefix | — |
|
| Atomic Heart VK | — | ✅ Авторизация сделана, игра обновлена. Запуск тестируется. | 97GB, GameCenter, shared prefix | — |
|
||||||
| Final Fantasy X HD | 2642741094 | Was Japanese, no saves | `GameSetting.ini` replaced (en+HD) from Windows | Test pending |
|
| 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 | — |
|
| 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` |
|
||||||
| 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 | — |
|
||||||
| Super Bomberman R2 | 3340354231 | Gamepad not detected | Steam Input config issue | — |
|
|
||||||
|
|
||||||
## Gamepad Issues
|
## Gamepad Issues
|
||||||
- **Samurai Gunn, Super Bomberman R2**: not detected → Steam Input "Force Off" / "Use Default" cycle; or `SDL_GAMECONTROLLER_ALLOW_STEAM_VIRTUAL_GAMEPAD=1`
|
- **Samurai Gunn, Super Bomberman R2**: not detected → Steam Input "Force Off" / "Use Default" cycle; or `SDL_GAMECONTROLLER_ALLOW_STEAM_VIRTUAL_GAMEPAD=1`
|
||||||
@@ -153,10 +152,10 @@ protontricks <AppID> xna40
|
|||||||
### DOS-era games
|
### DOS-era games
|
||||||
Proton won't work. Use **Steam Tinker Launch** → wrap with DOSBox (dosbox-staging).
|
Proton won't work. Use **Steam Tinker Launch** → wrap with DOSBox (dosbox-staging).
|
||||||
|
|
||||||
### Non-Steam copy of a Steam game (e.g. Metro Exodus)
|
### Non-Steam copy of a Steam game
|
||||||
Game needs `steam_api64.dll` emulator:
|
Game needs `steam_api64.dll` emulator:
|
||||||
1. Drop in Goldberg `steam_api64.dll`
|
1. Drop in Goldberg `steam_api64.dll`
|
||||||
2. Add `steam_appid.txt` with the real App ID (e.g. 412020 for Metro Exodus Enhanced)
|
2. Add `steam_appid.txt` with the real App ID
|
||||||
|
|
||||||
### Cyrillic encoding issues (e.g. Discworld Noir)
|
### Cyrillic encoding issues (e.g. Discworld Noir)
|
||||||
Try in order:
|
Try in order:
|
||||||
@@ -413,8 +412,7 @@ udisks2 давал неверные права для Proton I/O. После fst
|
|||||||
## Open Questions
|
## Open Questions
|
||||||
1. Delete `pfx/` folders for still-broken GE-Proton games (Brawlhalla, Castle Crashers, Worms WMD/WP, Duck Game)
|
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. ~~FPC Atomic Bomberman~~ ✅ фикс: `sleep 5 &&` в LaunchOptions
|
||||||
3. Metro Exodus: Goldberg Steam emulator?
|
2. **Atomic Heart VK:** test VK Play авторизацию, при необходимости `protontricks vcrun2019`
|
||||||
4. **Atomic Heart VK:** test VK Play авторизацию, при необходимости `protontricks vcrun2019`
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user