From bdec542b876ae4c715df345ba6304e2113fb260e Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Wed, 27 May 2026 17:26:10 +0600 Subject: [PATCH] =?UTF-8?q?[2026-05-27]=20HTPC=20docs:=20updated=20with=20?= =?UTF-8?q?VK=20Play/Atomic=20Heart=20setup,=20Doom=203=20BFG=20=E2=86=92?= =?UTF-8?q?=20Luxtorpeda,=20VDF=20incident=20report?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- family/projects/htpc-windows-games-fix.md | 108 ++++++++++++------ wiki/htpc-bazzite-proton.md | 133 ++++++++++++++++------ work/briefs/inbox/2026-05-27.md | 8 ++ 3 files changed, 177 insertions(+), 72 deletions(-) diff --git a/family/projects/htpc-windows-games-fix.md b/family/projects/htpc-windows-games-fix.md index 9649b3fe..57f0a63b 100644 --- a/family/projects/htpc-windows-games-fix.md +++ b/family/projects/htpc-windows-games-fix.md @@ -1,12 +1,12 @@ # HTPC Windows Games — Compat Status -Live status of 39 non-Steam Windows games added to Steam on Bazzite HTPC (`bazzite@192.168.1.86`). Setup started 2026-05-22. +Live status of non-Steam Windows games added to Steam on Bazzite HTPC (`bazzite@192.168.1.86`). Setup started 2026-05-22. ## Working ✅ - Fallout 4 - Vladik Brutal - Red Alert 3 -- **Rayman Origins** (fixed 2026-05-23 — GE-Proton10-34 + `WINEDLLOVERRIDES="d3d9=b" %command%`) +- **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) @@ -14,73 +14,111 @@ Live status of 39 non-Steam Windows games added to Steam on Bazzite HTPC (`bazzi - 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` | + +Примечание: требуется авторизация в VK Play через лаунчер. VK Play использует `mycomgames://` URL-схему. Atomic Heart официально совместим со Steam Deck/Proton (подтверждено VK Play). + ## Mapped to GE-Proton10-34 but **still broken** (need further investigation) These were swapped to GE-Proton in hopes its bundled VC++/d3dcompiler/dotnet/dxvk-async would fix them. Same symptoms as before — GE-Proton may be reusing the existing prefix's wine state. **Next:** consider deleting `pfx/` to force GE-Proton to regenerate cleanly. | 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 | 3602815006 | White screen, audio plays | `PROTON_USE_WINED3D=1 %command%` | +| 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 | Status | +|------|-------|--------|-------|--------| +| Doom 3 BFG | 3602815006 | GE-Proton10-34 (white screen, audio plays) | Luxtorpeda → rbdoom-3-bfg (native Linux engine) | LaunchOptions `PROTON_USE_WINED3D=1` removed ✅ | ## Still broken — fundamental issues | Game | AppID | Symptom | What's known | What might help | |---|---|---|---|---| -| Atomic Bomberman / BM95 | 2875360586 | Crash "instruction at 0x0 referenced 0x7" before main window | Win3.1-era PE32 (Windows 4.00 subsystem). Tried: `proton_8`, registry `Version=win98`, virtual desktop 640×480, `[Services\WineBus] Map Controllers=0 + Enable SDL=0`, LaunchOpt `SDL_JOYSTICK_DISABLE=1` | Run in dedicated 32-bit Wineprefix (`WINEARCH=win32`); try Wine ≤ 9.x; or DOSBox-X (despite being PE32, the game has DOS-like 16-bit color expectations) | -| Discworld Noir | 2361018632 | "Please insert disk III" prompt (in Russian, after Cyrillic fix) | Russian "Zatmenie v2" 2-CD release. `install.lst` only references M1+M2. Source has 233 files in cd1 / 85 files in cd2; installed had 16 files missing — **copied 69 missing files into cd2** ✅; original cd3 / cd4 folders are empty (Russian release packs everything into 2 CDs). Now mapped **drive D: → cd2 folder** in prefix as CD-ROM type | Try drive D: → cd1 instead; or mount the `dwnrus_1_v2.nrg` / `dwnrus_2.nrg` images with `udisksctl` and bind-mount; or check `dwnoir.dll` for hardcoded paths | +| Atomic Bomberman / BM95 | 2875360586 | Crash "instruction at 0x0 referenced 0x7" before main window | Win3.1-era PE32 (Windows 4.00 subsystem). Tried: `proton_8`, registry `Version=win98`, virtual desktop 640×480, `[Services\\WineBus] Map Controllers=0 + Enable SDL=0`, LaunchOpt `SDL_JOYSTICK_DISABLE=1` | Run in dedicated 32-bit Wineprefix (`WINEARCH=win32`); try Wine ≤ 9.x; or DOSBox‑X | +| Discworld Noir | 2361018632 | "Please insert disk III" prompt (in Russian, after Cyrillic fix) | Russian "Zatmenie v2" 2-CD release. 69 missing files copied ✅. Drive D: → cd2 folder as CD-ROM | Try drive D: → cd1; or mount `.nrg` images | | Final Fantasy X HD | 2642741094 | Was Japanese, no saves | `GameSetting.ini Language=jp → en` (copied from Windows) | **Test pending** | | Metal Slug X | 2938712902 | Speed wrong, controls dead | (none) | Neo-Geo emulator config issue, not Wine | -| Metro Exodus | 3594910936 | "Unable to create interface isteamuser" | VC++ runtime copied; LaunchOpt `WINEDLLOVERRIDES` | Needs Goldberg `steam_api64.dll` emulator + `steam_appid.txt` (game expects real Steam install) — DRM-adjacent | +| Metro Exodus | 3594910936 | "Unable to create interface isteamuser" | VC++ runtime copied; LaunchOpt `WINEDLLOVERRIDES` | Needs Goldberg `steam_api64.dll` emulator + `steam_appid.txt` | | Split Second | 3871231787 | Green artifacts | LaunchOpt `PROTON_USE_WINED3D=1` | Switch to GE-Proton; or copy `d3dx9_*.dll` from Windows | | Super Bomberman R2 | 3340354231 | Gamepad not detected | (none) | Steam Input config issue | +## VDF Incident — 2026-05-27 +### Что произошло +При попытке добавить VK GameCenter и Atomic Heart VK в shortcuts.vdf через Python vdf.binary_load/dump на работающем Steam, Steam переписал VDF при старте, создав 110 пустых записей-заглушек. Все бэкапы (bak, bak-launch, bak2-6, clean, timestamped) также оказались пустыми — они были сделаны уже после того как Steam испортил файл. + +### Как восстановили +Обнаружено что `shortcuts.vdf.bak-eagle` (23 мая, 50720 байт) содержит 106 живых шорткатов. Проблема с `vdf.binary_loads` — он ищет ключи с точным регистром: `AppName`, а не `appname`. + +1. Остановлен Steam (`systemctl --user stop gamescope-session-plus@steam.service`) +2. Считан bak-eagle, добавлены записи VK GameCenter (index 106) и Atomic Heart VK (index 107) +3. AppID в shortcuts.vdf — signed int32; в config.vdf CompatToolMapping добавлены как unsigned uint32 +4. После записи обнаружено несоответствие appid — в config.vdf уже были entries с другими appid от предыдущих попыток +5. Перегенерация shortcuts.vdf с appid, совпадающими с config.vdf: VK GameCenter = `-555655402`, Atomic Heart VK = `-475792602` +6. Удалены дублирующиеся unsigned записи из config.vdf +7. Создан бэкап `shortcuts.vdf.whale-restored-2026-05-27` + +### Восстановленный backups +- `shortcuts.vdf.bak-eagle` — 106 entries, чистый, не тронут ✅ +- `shortcuts.vdf.whale-restored-2026-05-27` — 108 entries (106 старых + VK GameCenter + Atomic Heart VK) ✅ + +### Уроки +- Редактировать shortcuts.vdf ТОЛЬКО при остановленном Steam +- vdf.binary_loads: ключи с точным регистром (`AppName`, `Exe`, а не `appname`, `exe`) +- signed appid в shortcuts.vdf → unsigned (signed & 0xFFFFFFFF) в CompatToolMapping config.vdf +- Перед добавлением новой пары шорткат+Proton — проверить, нет ли уже CompatToolMapping с нужным appid в config.vdf +- Делать бэкап ДО любых изменений, а не после + ## Fixes done (filesystem / config / cover-art) - Cover art swapped: Atomic Bomberman, Discworld Noir, SBR2, FFVI, ALttP, Sunset Riders - "Captain Commando" Steam shortcut renamed → "Sunset Riders" -- `CompatToolMapping` for all 39 AppIDs in `config.vdf` - - **GE-Proton10-34**: Brawlhalla, Castle Crashers, Worms WMD, Worms WP, Duck Game, Rayman Origins, Doom 3 BFG (7 games) - - **Proton 8.0**: Atomic Bomberman, Discworld Noir, Metal Slug X, Soldat, Red Alert 3, Split Second (6 games) +- `CompatToolMapping` for all AppIDs in `config.vdf`: + - **GE-Proton10-34**: Brawlhalla, Castle Crashers, Worms WMD, Worms 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 -- Rayman Legends: Ubisoft Connect copied from Windows partition into prefix + registry `HKLM\Software\Wow6432Node\Ubisoft\Launcher\InstallDir` -- Discworld Noir: - - `C:\Discworld Noir` symlink → game folder ✅ - - LaunchOpt `HOST_LANG=ru_RU.UTF-8 HOST_LC_ALL=ru_RU.UTF-8 LANG=ru_RU.UTF-8 LC_ALL=ru_RU.UTF-8 %command%` ✅ (Cyrillic now renders) - - `corefonts` installed via protontricks ✅ - - 69 missing files copied from `/Data/downloads/zatmenie v2 [torrents.ru]/cd2/` to game's cd2 ✅ - - Drive D: → cd2 folder, marked as CD-ROM in `[Software\Wine\Drives]` +- Doom 3 BFG moved to Luxtorpeda → rbdoom-3-bfg (native Linux engine, 2026-05-27) +- Rayman Legends: Ubisoft Connect copied from Windows partition into prefix + registry +- Discworld Noir fixes (symlink, Cyrillic locale, missing files, drive D:) - FFX HD: `GameSetting.ini` replaced with English+HD version - VC++ runtime DLLs + `d3dcompiler_43/47` copied into 6 prefixes from Windows partition - Duck Game prefix: XNA 4.0 framework dir copied from Windows -- Atomic Bomberman prefix: `Version=win98` + virtual desktop 640×480 + WineBus controller mapping disabled +- Atomic Bomberman prefix: `Version=win98` + virtual desktop 640×480 + WineBus disabled - GE-Proton10-34 installed to `~/.steam/steam/compatibilitytools.d/` ## Source assets discovered on Windows partition -- `/run/media/bazzite/Windows/Program Files (x86)/Ubisoft/ubisoft game launcher/` (595 MB) — used for Rayman Legends prefix +- `/run/media/bazzite/Windows/Program Files (x86)/Ubisoft/ubisoft game launcher/` (595 MB) - `/run/media/bazzite/Windows/Windows/System32/` and `SysWOW64/` — VC++ runtime, d3dcompiler, xinput DLLs - `/run/media/bazzite/Windows/Program Files (x86)/Microsoft XNA/` — XNA 4.0 Framework - `/run/media/bazzite/Windows/Microsoft.NET/Framework64/v4.0.30319/` — .NET 4.0 -- `/run/media/bazzite/Data/downloads/zatmenie v2 [torrents.ru]/` — original Discworld Noir Russian 2-CD source (cd1, cd2, dwnrus_1_v2.nrg, dwnrus_2.nrg) +- `/run/media/bazzite/Data/downloads/zatmenie v2 [torrents.ru]/` — Discworld Noir source (cd1, cd2, .nrg images) - `/run/media/bazzite/Windows/Users/mallexxx/documents/square enix/...` — FFX gamesetting.ini ## Open questions / next steps -1. Try **deleting `pfx/` folders** for the still-broken GE-Proton games (Brawlhalla, Castle Crashers, Worms WMD/WP, Duck Game) to force fresh prefix creation with GE-Proton's bundled runtimes -2. Doom 3 BFG: investigate gamescope+OpenGL interaction (the game uses OpenGL natively, not D3D; white screen suggests gamescope/X11 swap issue, not DXVK) -3. Atomic Bomberman: create a separate 32-bit `WINEARCH=win32` prefix outside Proton, install game there, wrap as launcher script -4. Discworld Noir: if drive D: → cd2 doesn't satisfy CD check, try cd1 or mount one of the `.nrg` images -5. Metro Exodus: ask user if OK to use Goldberg Steam emulator +1. Try **deleting `pfx/` folders** for the still-broken GE-Proton games (Brawlhalla, Castle Crashers, Worms WMD/WP, Duck Game) +2. Atomic Bomberman: create separate 32-bit Wineprefix outside Proton +3. Discworld Noir: try drive D: → cd1 or mount `.nrg` images +4. Metro Exodus: ask user if OK to use Goldberg Steam emulator +5. **Atomic Heart VK:** test VK Play авторизацию через Proton, при необходимости — protontricks vcrun2019 +6. **Doom 3 BFG:** test с Luxtorpeda → rbdoom-3-bfg (должно работать с нативным OpenGL) ## Lessons learned / Infra notes -- `shortcuts.vdf` is binary VDF; edit only with Steam closed (`systemctl --user stop gamescope-session-plus@steam.service`) +- `shortcuts.vdf` is binary VDF; edit only with Steam closed - `config.vdf` is text VDF; `CompatToolMapping` block controls per-AppID Proton -- Steam reads both vdfs on startup, writes back from in-memory state on exit → any edit while Steam running will be lost +- Steam reads both vdfs on startup, writes back from in-memory state on exit - `protontricks` (Flatpak) needs `flatpak override --user --filesystem=/var/home/bazzite/.local/share/Steam` -- Parallel protontricks runs on same Proton version **conflict** on the shared bin cache — must sequence -- `xvfb-run protontricks ` — MS-redist EXE installers (dotnet40, VC_redist) **hang on invisible button click**. Workaround: copy DLLs from Windows partition + `WINEDLLOVERRIDES="dll1,dll2=n,b" %command%` -- For Cyrillic/locale: Proton needs `HOST_LANG` / `HOST_LC_ALL` env vars to propagate locale into prefix +- Parallel protontricks runs on same Proton version **conflict** +- `xvfb-run protontricks ` — MS-redist EXE installers **hang on invisible button click**. Workaround: copy DLLs from Windows partition +- For Cyrillic/locale: Proton needs `HOST_LANG` / `HOST_LC_ALL` env vars - Background jobs that survive SSH disconnect: `systemd-run --user --unit=` -- **GE-Proton install:** download tar.gz from `github.com/GloriousEggroll/proton-ge-custom/releases/latest`, extract into `~/.steam/steam/compatibilitytools.d/`, restart Steam — tool name in `CompatToolMapping` matches the extracted directory name (e.g. `GE-Proton10-34`) +- GE-Proton install: extract tar.gz into `~/.steam/steam/compatibilitytools.d/` +- `vdf.binary_loads` key names are case-sensitive: `AppName`, not `appname` +- signed appid in shortcuts.vdf ↔ unsigned in config.vdf CompatToolMapping diff --git a/wiki/htpc-bazzite-proton.md b/wiki/htpc-bazzite-proton.md index 25eb4ded..2ac681c3 100644 --- a/wiki/htpc-bazzite-proton.md +++ b/wiki/htpc-bazzite-proton.md @@ -1,14 +1,20 @@ --- title: HTPC Bazzite — Proton Compatibility created: '2026-05-23' -updated: '2026-05-23' +updated: '2026-05-27' type: tech namespace: personal -tags: [htpc, infra, how-to, pitfalls] -sources: [family/projects/htpc-windows-games-fix.md] +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 @@ -44,37 +50,46 @@ Game needs `steam_api64.dll` emulator: ### 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"` +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. +Or try `WINEDLLOVERRIDES=\"d3d9=b\"` or an older Proton version. -### Doom 3 BFG Edition (App 208200) — чёрные текстуры, краш после интро +### Doom 3 BFG Edition — чёрные текстуры, краш после интро Proton Experimental и 7+/8+/9+ ломают текстуры — известный регресс. -**Быстрый фикс** — откатить Proton версию: -ПКМ → Свойства → Совместимость → **Proton 5.13** (самый стабильный) +**Лучший фикс** — заменить движок через Luxtorpeda: +1. Совместимость → **Luxtorpeda** (установлен в compatibilitytools.d) +2. При запуске выбрать **rbdoom-3-bfg** (нативный Linux движок) +3. LaunchOptions очищены (`PROTON_USE_WINED3D=1` больше не нужен) -**AMD GPU** — launch option: -``` -MESA_GL_VERSION_OVERRIDE=4.5COMPAT %command% -``` +## VK Play / VK GameCenter на Bazzite -**Лучший долгосрочный фикс** — заменить движок через Luxtorpeda: -1. Установить Luxtorpeda (Steam compatibility tool) -2. Свойства → Совместимость → **Luxtorpeda** -3. При запуске выбрать **rbdoom-3-bfg** +### Общая схема +VK Play версии игр запускаются через лаунчер VK GameCenter (`GameCenter.exe`) поверх Proton. Игра устанавливается средствами VK Play, лаунчер отвечает за авторизацию и лицензирование (в т.ч. Denuvo-эмуляцию). -Или flatpak без Proton: -``` -flatpak install flathub io.github.maddecoder.Classic-RBDOOM-3-BFG -``` -Указать путь к данным: `~/.local/share/Steam/steamapps/common/DOOM 3 BFG Edition/` +### 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 @@ -88,14 +103,23 @@ flatpak install flathub io.github.maddecoder.Classic-RBDOOM-3-BFG `~/.local/share/Steam` - **Background protontricks** (survives SSH disconnect): `systemd-run --user --unit= flatpak run ...` +- **shortcuts.vdf бэкапы:** хранятся в той же папке, именованные `shortcuts.vdf.bak-*`. Автоматический daily backup через saves-backup.service в `/run/media/bazzite/Data/backups/saves/shortcuts/shortcuts.vdf.YYYY-MM-DD`. -## Added Games (2026-05-23) +## 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 | 2234736297 | `/run/media/bazzite/Data/games/atomic.heart.ultimate.edition-insaneramzes/atomicheart.exe` | GE-Proton10-34 | +| 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 (2026-05-22) +## Broken Status | Game | AppID | Issue | Next | |------|-------|-------|------| @@ -113,27 +137,62 @@ flatpak install flathub io.github.maddecoder.Classic-RBDOOM-3-BFG → or `SDL_GAMECONTROLLER_ALLOW_STEAM_VIRTUAL_GAMEPAD=1` - **Metal Slug X**: wrong speed in Neo-Geo wrapper → check emulator settings -## How to Add a New Game +## How to Add a Non-Steam Game via VDF **Шаг 0: Остановить Steam** ``` systemctl --user stop gamescope-session-plus@steam.service ``` -**Portable (нет установщика)** — скопируй папку на HTPC, переходи к шагу 1. +**Шаг 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)) +" +``` -**С установщиком** — сначала добавь `setup.exe` как шорткат, запусти → -после установки замени путь на основной `.exe`. +**Шаг 2: Добавить CompatToolMapping в config.vdf** +AppID в CompatToolMapping — unsigned uint32. +Если в shortcuts.vdf appid signed (-555655402), то unsigned = signed & 0xFFFFFFFF (3739311894). -**Шаг 1: Добавить шорткат** -Steam → *Игры → Добавить не-Steam игру* → выбери `.exe` +**Шаг 3: Запустить Steam, проверить** -**Шаг 2: Назначить Proton** -ПКМ на игре → Свойства → Совместимость → Proton Experimental +**Критически важно:** +- signed appid в shortcuts.vdf и unsigned в config.vdf — это один и тот же appid +- Не редактировать файлы при запущенном Steam — он перезапишет +- Делать бэкап перед любыми изменениями +- vdf.binary_loads ищет ключи с точным регистром: `AppName`, не `appname` -**Шаг 3: Запустить один раз** -Wine prefix создастся в: -`~/.local/share/Steam/steamapps/compatdata//pfx/` +## 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 @@ -145,4 +204,4 @@ API key хранится в `~/Documents/steamgriddb_api_key.txt` на HTPC. ## See Also -[[personal-os-architecture]] [[obsidian-mcp-wrapper]] +[[personal-os-architecture]] [[obsidian-mcp-wrapper]] [[family/how-to/htpc-steam-nonsteam-shortcuts]] diff --git a/work/briefs/inbox/2026-05-27.md b/work/briefs/inbox/2026-05-27.md index ae8f322c..36f0d9e7 100644 --- a/work/briefs/inbox/2026-05-27.md +++ b/work/briefs/inbox/2026-05-27.md @@ -39,3 +39,11 @@ _No tasks modified since SINCE (Asana MCP: assigned + followed, both empty). No Inbox quiet — nothing new. _No tasks modified since SINCE (Asana MCP: assigned + followed, both empty). No active meetings (MS365 clean). Alex AFK today (holiday). Not posting to #inbox per user directive._ + +--- + +## Inbox Triage — 2026-05-27 17:01 (since 2026-05-27T16:31:06) + +Inbox quiet — nothing new. + +_Snapshot generated at 10:53 UTC (after SINCE 10:31 UTC). No task changes or comments found after SINCE. No active meetings (MS365 clean). Alex AFK today (holiday)._