Files
local_machine/docs/games/TROUBLESHOOTING.md
ahauimix 1938b7c743 Expand local_machine docs and automation for connectivity, games, and ops.
Add proxy/VPN/telegram launchd and emergency runbooks; reorganize apps docs;
document JA3 CrossOver runbook and Wine troubleshooting; add GOG/HoMM game
scripts, disk cleanup guides, and gitea push-via-proxy helper. Ignore temp/.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 08:12:19 +03:00

53 KiB
Raw Blame History

HoMM Olden Era — troubleshooting (Whisky / Wine)

Bottle HoMM/Steam: 38412122-AAE1-4831-9F2E-6A0EB364B3F9 · Steam App ID: 3105440
GOG web-stub: bottle GOG-Install (scripts/games/gog/bottle.env) — не HoMM UUID.


Быстрая таблица

Симптом Первый шаг Раздел
Пустой UI Steam (кнопки без текста) fix-steam-uiresetsteam-ui § Кривой UI Steam
Окно Steam не появляется diagnose-steam-ui → kill Mac Steam → resetsteam-ui § Нет окна Steam
Игра есть, сейвы пустые diagnose-saves → login → play § Сейвы
play висит, exe не стартует resetsteam-ui → login → play § Нет прогресса
Игра не стартует / D3D11 crash не Play в Steam → play § Запуск игры
DirectX 11 dxvkplay § Графика
ЛКМ не работает diagnose UNITY_POINTER_MOUSE_FIX.md
Connection Problem в Steam osascript quit Steam → resetsteam-ui → Retry / Offline § Connection Problem
Steam завис / нет места diskreset § Steam зависает
Пустой текст / FontFamily / winFont см. профиль: Steam → dwrite; GOG stub → gdiplus § Шрифты — антипаттерны
GOG stub: пустые кнопки / FontFamily gog/install-gdiplus + gog/install-corefonts в GOG-bottle § GOG web-stub
GOG Galaxy: окна нет, скрипт OK offline installer JA3; Galaxy — best effort § GOG Galaxy — окно · GOG_GALAXY_7H_RCA.md
GOG Galaxy → swap, Mac «встал» gog/emergency-stop.sh → перезагрузка GOG_GALAXY_7H_RCA.md § Swap
GOG stub: «запустил, окна нет» Cmd+TabGOG_Galaxy_*.exe / wine64 § GOG — проверка успеха
JA3: Failed to initialize graphics subsystem CrossOver D3DMetal, не Whisky JA3_RUNBOOK.md §24
JA3: курсор не ниже середины / смещение клика профиль мыши legacy vs retina JA3_RUNBOOK.md §9
JA3 без Galaxy install → Whisky; запуск → CrossOver JA3_RUNBOOK.md
Установить через web-stub только GalaxySetup (ломается в Wine) § GOG web-stub
fork failed, Mac «встал», swap 20+ GB winedbg / Steam assert loop → § Swap § Swap и winedbg
«20 GB съело» после GOG обычно не stub — swap + дампы Steam § Swap · § GOG

Антипаттерны (не делать)

Антипаттерн Почему ломается Вместо этого
Play у Olden Era в окне Steam UI applaunch без export_wine_env_game → D3D11 / «Bad EXE format» в Player.log Steam Logged Onstart.sh play (Terminal)
start.sh game / exe без Steam в bottle SteamApi_Init failed · слоты пустые Whisky → Steam → Logged On → play
start.sh play при Logged Off нет Steam API → пустые сейвы / отказ diagnose-saves → login / Offline → play
-applaunch 3105440 до login триггер CEF message_window.cc · UI мёртв сначала Logged On, потом play
HOMM_STEAM_VDESKTOP=1 CEF хуже · Failed to set primary display settings steam-ui / Whisky Run (не VDESKTOP)
Terminal steam-ui + Whisky Run параллельно двойной Wine · зомби один контур: Whisky или Terminal
reset без .exe-зомби pkill не ловит C:\…\SteamService.exe reset (2026-05-27) или nuclear recovery
Запуск с -silent (старые скрипты / ручной Steam.exe -silent) forcing desktopui via -silent → VGUI + winFont → пустой диалог steam-ui или play без -silent
Только скопировать шрифты в Fonts/ без fix-steam-ui winFont остаётся — DWrite не отключён bash start.sh fix-steam-ui (реестр + шрифты + dwrite override)
Игра «открылась» = сейвы работают FileManager может видеть папку Steam_<ID>/saves, но Store не инициализирован без Steam Проверять Player.log и diagnose-saves
Закрыть пустой диалог Steam крестиком Steam остаётся Logged Off; следующий запуск снова без сейвов Правая кнопка внизу или Tab → Enter
Нативный Mac Steam + bottle Connection Problem · steamid=0 killall steam_osx ipcserver → только Wine-Steam
osascript quit Steam при отмене (-128) Mac Steam жив Cmd+Q / killall steam_osx
Импорт bottle isaacmarovitz, Whisky franke пустой другой контейнер migrate-bottle-to-franke-whisky.sh
Whisky «Launched steam.exe» = UI OK нужен steamwebhelper (CEF) diagnose-steam-ui · cef_log
HOMM_GAME_FORCE=1 каждый день пустые слоты только отладка графики
Смотреть только cache/*.tsv не диагностика bottle Steam/logs/*.txt, Player.log, diagnose-*
GOG web-stub в bottle HoMM-OldenEra общий префикс со Steamwinedbg, дампы Steam/dumps/, шрифты из Steam/resource/fonts, export_wine_env_steam ломает .NET scripts/games/gog/ + новый bottle → gog/use-bottle.sh
setup-wine-bottle.sh для GOG JA3 скрипт для Steam/HoMM, не для GOG stub gog/setup-bottle.sh
start.sh reset после GOG в том же bottle убивает Steam и игру; не лечит GOG-шрифты gog/reset.sh в GOG-bottle; HoMM: отдельная сессия
export_wine_env_steam / dwrite=n,b для GOG .NET installer FontFamilyNotFound / пустой WinForms gog/install-gdiplus.sh + gog/run-web-installer.sh (gdiplus=n,b)
GOG stub без winetricks gdiplus GenericSansSerif / unimplemented GDI+ bash …/gog/install-gdiplus.sh в GOG-bottle
Диагностика GOG через Steam/dumps ложный след; stub не пишет туда /tmp/gog-web-installer-*.log, gog/diagnose-session.sh
Думать, что stub скачал 20 GB stub ~500 KB; при FontFamily падает до загрузки игры df -h; искать swap / setup_galaxy.exe×2 / Steam/dumps
wineboot -k «на всякий случай» при каждом GOG трогает весь префикс (Steam, CEF-кэш) GOG-bottle: gog/setup-bottle.sh --fonts-only; HoMM: reset только когда нужен Steam
Параллельно isaac + franke Whisky / старый wineserver второй wineserver, сотни winedbg, swap под 100% pkill -9 winedbg; pkill wineserver; один контейнер Whisky
pkill -f GOG в HoMM-bottle при живом Steam не связано со stub; мешает отладке разнести bottle; GOG: gog/reset.sh
Только install-corefonts без install-gdiplus шрифты в Fonts/ есть, но .NET падает на GenericSansSerif (Wine GDI+ stub) gog/install-gdiplus.shWINEDLLOVERRIDES=gdiplus=n,b
Debian URL для arial32.exe (404) corefonts неполные зеркало SourceForge в gog/install-corefonts.sh
Whisky → Fonts / winetricks corefonts зеркала Microsoft 404 (Whisky #515) macOS → Fonts/ + наши скрипты; GOG: gog/install-corefonts.sh
WINEDLLOVERRIDES=gdiplus=b для GOG web-stub builtin gdiplus не даёт GenericSansSerif для .NET gdiplus=n,b (export_wine_env_gog)
--profile steam / dwrite=n,b для GOG .NET другой стек, не GDI+ run-wine-exe.sh --profile gog или gog/run-web-installer.sh
Только winetricks liberation без macOS Fonts + реестр частично; Steam/GOG UI всё ещё пустые setup-wine-bottle.sh / gog/setup-bottle.sh + fix-steam-ui (Steam)
Скопировать .ttf без reg add …\Fonts GDI не видит файлы fix-steam-ui, gog/wine-fonts.sh (--fonts-only)
install-corefonts без cabextract .exe MS fonts не распакуются brew install cabextract
install-gdiplus до setup-bottle нет базовых шрифтов/реестра в bottle порядок: setup-bottleinstall-gdiplusinstall-corefonts
«26 файлов в Fonts» = stub OK без native gdiplus .NET всё равно падает маркер .gog_gdiplus_installed + нет FontFamily в логе
Пустой GalaxySetup (красный X, gdi32) не нехватка Arial — Inno/botva2 + gdi32 gog/install-galaxy-extract.sh + launch-galaxy.sh; см. § Setup gdi32

Полная сводка по шрифтам и WINEDLLOVERRIDES: § Шрифты — антипаттерны.


Шрифты: антипаттерны (сводка)

Три разных механизма — не смешивать лечение:

Контур API / лог Профиль DLL Скрипты
Steam VGUI (login, опросы) winFont в console_log.txt dwrite=n,b + DWriteEnable=0 fix-steam-ui, setup-wine-bottle.sh, steam-ui
GOG web-stub (.NET WinForms) FontFamilyNotFound, GenericSansSerif, GdipGetGenericFontFamilySansSerif gdiplus=n,b (native gdiplus) gog/install-gdiplus.sh, gog/install-corefonts.sh, gog/setup-bottle.sh
GOG Galaxy (CEF, login) обычно не FontFamily; сеть/auth gdiplus=n,b при запуске клиента gog/launch-galaxy.sh
Inno + botva2 (GalaxySetup.exe) gdi32.dll AV, пустой MsgBox gdiplus=b не спасает не Wine-Innoinnoextract / клиент Galaxy

Антипаттерны (шрифты и overrides)

Почему
Копировать шрифты в C:\windows\Fonts без реестра …\CurrentVersion\Fonts Wine/GDI не подхватывает файлы fix-steam-ui / gog/setup-bottle.sh / setup-wine-bottle.sh --fonts-only
Только файлы в Fonts/, без DWriteEnable=0 (Steam) DWrite-заглушка, пустой VGUI start.sh fix-steam-ui
Steam без WINEDLLOVERRIDES=dwrite=n,b при запуске подгружается сломанный dwrite.dll export_wine_env_steam в config.shsteam-ui / play
GOG stub без winetricks gdiplus Wine GDI+ stub → GenericSansSerif gog/install-gdiplus.sh (~900 MB)
GOG stub с gdiplus=b (только builtin) нет native GenericSansSerif gdiplus=n,b
GOG stub с dwrite=n,b (профиль Steam) не тот стек для .NET WinForms export_wine_env_gog
Только install-corefonts, без gdiplus .ttf есть, лог всё равно FontFamilyNotFound оба скрипта + порядок ниже
setup-wine-bottle.sh для GOG web-stub DWrite/Steam-реестр, нет gdiplus gog/setup-bottle.sh
setup-gog-bottle.sh (HoMM) для JA3 устаревшая обёртка gog/setup-bottle.sh
winetricks corefonts из Whisky GUI 404 на CDN Microsoft SourceForge в gog/install-corefonts.sh; macOS Fonts
Debian-only URL msttcorefonts 404 primary: downloads.sourceforge.net/corefonts/…
winetricks liberation как единственный шаг мало гарантий для VGUI/.NET macOS + corefonts + профиль DLL
WINE_SETUP_WINETRICKS=1 вместо наших скриптов долго, зеркала падают setup-wine-bottle.sh (macOS Fonts); GOG: gog/*
wineboot -k «обновить шрифты» в HoMM-bottle сбрасывает Steam/CEF GOG: gog/setup-bottle.sh --fonts-only; HoMM: --fonts-only без -k
GOG в HoMM-bottle «шрифты уже есть от Steam» export_wine_env_steam, чужие Steam/resource/fonts отдельный bottle GOG-Install
Считать GalaxySetup пустым окном проблемой шрифтов это gdi32 + botva2, не Arial § Setup gdi32
run-wine-exe.sh --profile plain для .NET installer нет overrides --profile gog или steam по таблице выше
Запуск stub без проверки лога «OK» в shell, процесс уже умер grep -i FontFamily /tmp/gog-web-installer-*.log
launch-galaxy.sh OK, окна нет Second client / lock gog/reset.sh → снова launch; § GOG Galaxy — окно
Повторный launch без reset.sh Second client instance → exit reset убивает процессы и lock-files/*.lock

Порядок (GOG-bottle, web-stub)

bash …/gog/setup-bottle.sh          # macOS Fonts + реестр + сеть
bash …/gog/install-gdiplus.sh       # native gdiplus, gdiplus=n,b
brew install cabextract             # для corefonts
bash …/gog/install-corefonts.sh     # arial32 / times32 / andale32
bash …/gog/run-web-installer.sh …/GOG_Galaxy_*.exe

Маркеры: .gog_gdiplus_installed, .gog_corefonts_installed, .gog_setup_v1.

Порядок (HoMM-bottle, Steam VGUI)

bash …/setup-wine-bottle.sh         # один раз
bash …/start.sh fix-steam-ui        # DWriteEnable=0 + шрифты
bash …/start.sh reset && steam-ui   # перезапуск с dwrite=n,b

Проверка

# Steam
grep winFont …/Steam/logs/console_log.txt | tail -5

# GOG stub
grep -i FontFamily /tmp/gog-web-installer-GOG-Install.log || echo "OK: нет FontFamily"

# Сколько файлов в Fonts (не доказательство gdiplus!)
ls …/drive_c/windows/Fonts | wc -l
test -f …/Bottles/<GOG-UUID>/.gog_gdiplus_installed && echo "gdiplus marker OK"

Детали: § Кривой UI Steam · § GOG web-stub · WINE_MAC_RUNBOOK.md §2.


Канонический контур (GOG web-stub / JA3)

Проверено 2026-05-28: stub GOG_Galaxy_Jagged_Alliance_3.exe в bottle GOG-Install — окно с подписями, скачивание GalaxySetup.exe (~99 MB).

# один раз (создаёт bottle, gdiplus ~900 MB, шрифты, запускает stub):
bash ~/code/local_machine/scripts/games/gog/install-all.sh \
  ~/path/to/GOG_Galaxy_Jagged_Alliance_3.exe

# или по шагам — см. scripts/games/gog/README.md

После stub: Cmd+Tab → установщик → дождаться JA3 (≥20 GB на диске).

Канонический контур (HoMM / Steam)

  1. killall steam_osx ipcserver (если был Mac Steam)
  2. WhiskyHoMM-OldenEraRunLogged On (или Offline)
  3. bash ~/code/local_machine/scripts/games/start.sh play
  4. В игре: Загрузить → skirmish → 1 / 2 / 3

Recovery CEF/UI:

osascript -e 'quit app "Whisky"' 2>/dev/null; sleep 2
pkill -9 -f 'SteamService.exe|steamwebhelper|38412122|Steam.exe' 2>/dev/null
bash ~/code/local_machine/scripts/games/start.sh reset
open -a Whisky
# Run Steam только из Whisky — не steam-ui параллельно

Кривой UI Steam (пустой VGUI)

Кратко: Steam в Wine рисует кнопки/radio, но без текста → login/applaunch зависают. Лечится один раз fix-steam-ui, затем всегда запуск через steam-ui (не -silent).

Симптомы

  • Тёмное окно: 5 radio слева, 2 кнопки внизу, подписей нет.
  • Иногда после частичного фикса: Connection Problem / login с текстом — это уже другой слой (сеть), VGUI-фикс сработал.
  • Это Steam VGUI, не Heroes Olden Era.

Лог …/Steam/logs/console_log.txt:

src\vgui2\src\surface_gdiwin32.cpp (1336) : winFont

(много строк подряд = шрифты/DWrite всё ещё ломают отрисовку)

Причина

Слой Что ломается
DirectWrite Steam на Windows ждёт DWrite; в WhiskyWine заглушка → GDI не рисует глифы
GDI / winFont VGUI-диалоги (опрос, interstitial, часть login) остаются «пустыми»
-silent Форсит desktopui/VGUI — усугубляет проблему

Только копировать шрифты в Fonts/ без DWriteEnable=0 и без dwrite=n,bнедостаточно§ Шрифты — антипаттерны.


Решение (канон, один раз + перезапуск)

osascript -e 'quit app "Steam"' 2>/dev/null || true
bash ~/code/local_machine/scripts/games/start.sh fix-steam-ui
bash ~/code/local_machine/scripts/games/start.sh reset
bash ~/code/local_machine/scripts/games/start.sh steam-ui

Шаг A — fix-steam-ui (скрипт fix-homm-steam-ui.sh)

# Действие Зачем
1 HKCU\Software\Valve\SteamDWriteEnable = 0 Steam не использует сломанный DWrite в Wine
2 Копия Arial, Tahoma, Verdana, Times, Courier, Marlett, GoNotodrive_c/windows/Fonts/ GDI находит базовые шрифты
3 При каждом steam-ui / play: WINEDLLOVERRIDES=dwrite=n,b (config.shexport_wine_env_steam) Wine не подгружает native dwrite.dll

Повторять fix-steam-ui нужно только после нового bottle или если вручную сбросили реестр Wine.

Шаг B — reset

Обязателен после фикса: старый Steam.exe стартовал без новых overrides и с кэшем VGUI.

Шаг C — steam-ui

Правильно Неправильно
bash ~/code/local_machine/scripts/games/start.sh steam-ui Steam.exe -silent
Whisky → Run Steam → start.sh play Play у Olden Era в Steam UI (нет DXVK env)
start.sh play при Logged On play / game при Logged Off
start.sh game (= то же что play при login) HOMM_GAME_FORCE=1 для сейвов

Проверка, что UI починился

  1. Визуально: login / Connection Problem / библиотека — есть читаемый текст (не пустые прямоугольники).
  2. Лог: после нового запуска в console_log.txt нет новой пачки winFont при открытии того же диалога.
  3. Login: в connection_log.txt eventually Logged On или осмысленный Retry / Offline Mode (см. § Connection Problem).
tail -20 ~/Library/Containers/com.franke.Whisky/Bottles/38412122-*/drive_c/Program\ Files\ \(x86\)/Steam/logs/console_log.txt | grep winFont || echo "winFont нет — хорошо"

(Если bottle ещё в com.isaacmarovitz.Whisky — замените префикс контейнера.)


Если текст всё ещё пустой (обход до перезапуска)

Диалог вслепую (опрос GPU / interstitial до login):

  1. Верхний radio — оставить (дефолт).
  2. Правая кнопка внизу → OK / Continue / Launch.
  3. Или: Tab несколько раз → Enter.

Затем снова reset + fix-steam-ui + steam-ui — часто VGUI остаётся пустым, пока висит процесс от старой сессии.


После починки UI → сейвы

Пустой UI и Connection Problem — разные проблемы. Когда текст появился, но сейвы пустые → § Сейвы.

bash ~/code/local_machine/scripts/games/start.sh diagnose-saves

Не путать окна

Окно Признак
Steam VGUI (кривой) Серый flat UI, 5 radio, 2 кнопки без текста
Steam CEF (норм) Login, Connection Problem, библиотека — с текстом
Heroes Olden Era 3D, Unfrozen, меню игры

Нет окна Steam UI

Whisky пустой / UI не появляется из Terminal

Bottle мог быть в старом контейнере isaacmarovitzWhisky 3 (franke) его не видит → окна нет.

Один раз:

bash ~/code/local_machine/scripts/games/migrate-bottle-to-franke-whisky.sh

Затем:

  1. Открыть Whisky.app — в списке должен быть HoMM-OldenEra.
  2. В bottle: RunC:\Program Files (x86)\Steam\Steam.exe (или закреплённый Steam).
  3. Либо Terminal (если окно появилось):
killall steam_osx ipcserver 2>/dev/null
bash ~/code/local_machine/scripts/games/start.sh reset
bash ~/code/local_machine/scripts/games/start.sh steam-ui

Диагностика:

bash ~/code/local_machine/scripts/games/start.sh diagnose-steam-ui

Симптом

bash …/start.sh steam-ui — в Terminal пара строк и нет окна; или окно не найти.

Диагностика

bash ~/code/local_machine/scripts/games/start.sh diagnose-steam-ui
Строка Плохо Что делать
Mac Steam steam_osx killall steam_osx ipcserver (см. § Connection Problem)
Steam.exe resetsteam-ui снова
steamwebhelper CEF не поднялся — см. ниже
winFont ⚠️ fix-steam-ui

Запуск (копипаст по порядку)

killall steam_osx ipcserver 2>/dev/null
bash ~/code/local_machine/scripts/games/start.sh fix-steam-ui
bash ~/code/local_machine/scripts/games/start.sh reset
bash ~/code/local_machine/scripts/games/start.sh steam-ui
  • Terminal зависнет на steam-ui — так и должно быть, Steam работает.
  • Окно искать: Cmd+Tab (wine64), Mission Control — не в Whisky.
  • Если diagnose-steam-ui показывает steamwebhelper — CEF не поднялся (см. § CEF / steamwebhelper):
osascript -e 'quit app "Whisky"' 2>/dev/null; sleep 2
pkill -9 -f 'SteamService.exe|steamwebhelper|38412122|Steam.exe' 2>/dev/null
bash ~/code/local_machine/scripts/games/start.sh reset
open -a Whisky
# HoMM-OldenEra → Run Steam (не Terminal steam-ui параллельно)

Не использовать HOMM_STEAM_VDESKTOP=1 — ухудшает CEF (Failed to set primary display settings).

  • Тёмное окно без текста§ Кривой UI Steam: Tab → Enter или правая кнопка.

CEF / steamwebhelper (пустой UI после update)

Симптомы

  • Whisky пишет «Launched: steam.exe», но нет библиотеки / login (чёрное окно или только VGUI).
  • diagnose-steam-ui: steamwebhelper.
  • cef_log.txt:
message_window.cc: Failed to create a message-only window: Class does not exist

crash loop steamwebhelper → нет CEF UI.

Типичные триггеры (антипаттерны)

  1. Steam.exe -applaunch 3105440 при Logged Off (первый applaunch без UI).
  2. Параллельный запуск Terminal + Whisky.
  3. Зомби SteamService.exe / steamwebhelper после reset со старыми pkill-паттернами.
  4. Авто-update Steam client (утренний build ~242 MB) + грязная сессия.

Recovery (единственный надёжный порядок)

killall steam_osx ipcserver 2>/dev/null
osascript -e 'quit app "Whisky"' 2>/dev/null; sleep 2
pkill -9 -f 'SteamService.exe|steamwebhelper|38412122|Steam.exe' 2>/dev/null
bash ~/code/local_machine/scripts/games/start.sh reset
pgrep -lf Steam || echo "OK: процессов Steam нет"
open -a Whisky

В Whisky: HoMM-OldenEraRun на Steam.exeне steam-ui из Terminal одновременно.

Если после чистой сессии CEF всё ещё мёртв:

  • Заблокировать авто-update: steam.cfg с BootStrapperInhibitAll=1 в папке Steam.
  • Откат Steam client на предыдущий build (операторский скрипт downgrade-steam-client.sh — по запросу).

Проверка login:

tail -3 ~/Library/Containers/com.franke.Whisky/Bottles/38412122-*/drive_c/Program\ Files\ \(x86\)/Steam/logs/connection_log.txt

Нужна строка Logged On, не Logged Off.


Игра запустилась — сейвы не подтянулись

  • Окно Heroes открывается, меню Загрузить пустое.
  • На Mac файлы есть: 1.saveskirmish, 2.saveskirmish, 3.saveskirmish.
  • В Player.log:
SteamApi_Init failed with FailedGeneric - error: ConnectToGlobalUser failed.
Store state changed to Failed

Причина (корень)

Сейвы лежат в users/Steam_<ID>/saves/singleplayer/, но слоты в UI требуют живый Steam-клиент в том же bottle (Logged On). Прямой exe обходит Steam → Store не инициализируется.

Диагностика одной командой

bash ~/code/local_machine/scripts/games/start.sh diagnose-saves
Проверка OK Плохо
Файлы *.saveskirmish 3 файла в singleplayer папка пустая
connection_log.txt [Logged On, …] [Logged Off, 0, 0]
Player.log нет SteamApi_Init failed ConnectToGlobalUser failed

Рабочий цикл (сейвы 1 / 2 / 3)

  1. Steam в bottle: Logged On (Whisky → Run или steam-ui).
  2. Не жмите Play в Steam UI.
bash ~/code/local_machine/scripts/games/start.sh play
bash ~/code/local_machine/scripts/games/start.sh diagnose-saves

В игре: Загрузитьskirmish / одиночная (не кампания) → слоты 1, 2, 3.

Путь к файлам:

bash ~/code/local_machine/scripts/games/start.sh saves

Запуск игры (канон)

Шаг Действие
1 Mac Steam выключен (pgrep -x Steam → пусто)
2 Wine-Steam Logged On (Whisky → Run или steam-ui → Retry / Offline)
3 bash ~/code/local_machine/scripts/games/start.sh playне кнопка Play в Steam

play при Logged On вызывает game (DXVK-macOS + Unity windowed). Это тот же контур, что работал «утром».

Если игра падает на D3D11

Player.log: GfxDevice: creating device client / d3d11.dll — вы запустили через Steam UI Play, не через play.

bash ~/code/local_machine/scripts/games/start.sh diagnose
bash ~/code/local_machine/scripts/games/start.sh play

Альтернатива (явный exe, Steam не закрывать):

bash ~/code/local_machine/scripts/games/start.sh game

Нет прогресса: play не доходит до игры

Чеклист по логам

Проверка Где Плохо Хорошо
Steam login connection_log.txt Logged Off, steamid=0 Logged On
applaunch console_log.txt нет GameAction / Game process added AppID 3105440 … HeroesOldenEra.exe
Steam API Player.log SteamApi_Init failed нет ошибки Store

Рабочий цикл

bash ~/code/local_machine/scripts/games/start.sh reset
bash ~/code/local_machine/scripts/games/start.sh fix-steam-ui
bash ~/code/local_machine/scripts/games/start.sh steam-ui
# login / Offline Mode → затем play (не Play в Steam UI)
bash ~/code/local_machine/scripts/games/start.sh play

Захламление swap и утечка winedbg

Симптомы

Признак Что это
Terminal: fork failed: resource temporarily unavailable ядро не создаёт процессы — часто swap исчерпан
sysctl vm.swapusageused ≈ total (например 22/23 GB) macOS вынесла память в swap; система «тяжёлая»
pgrep winedbg | wc -l → сотни / тысячи отладчики Wine после assert/crash Steam (не от GOG stub)
wineserver из com.isaacmarovitz.Whisky при bottle во franke legacy-процесс, лишний CPU
Диск 98%, «пропало 20 GB» чаще не одна операция, а swap + дубликаты файлов (см. ниже)

GOG web-stub сам по себе почти не ест RAM: при FontFamilyNotFound процесс сразу выходит; загрузка JA3 не начинается.

Типичная цепочка (антипаттерн)

  1. Bottle HoMM-OldenEra (Steam + HoMM + эксперименты с GOG в том же префиксе).
  2. Steam CEF / VGUI в цикле → Steam/dumps/assert_steam.exe_*.dmp (сотни MB).
  3. На каждый assert Wine поднимает winedbg --auto → сотни процессов → swap.
  4. Параллельно Cursor, Zoom, GOG Galaxy CEF → усиление.
  5. Любой bash / brewfork failed.

Это не «JA3 скачал 20 GB», а давление памяти + мусор на диске.

Что реально занимает диск (проверка)

# swap
sysctl vm.swapusage

# утечка процессов
pgrep winedbg | wc -l
pgrep -lf wineserver

# HoMM-bottle (если GOG гоняли там — будет мусор)
BOTTLE=~/Library/Containers/com.franke.Whisky/Bottles/38412122-AAE1-4831-9F2E-6A0EB364B3F9
du -sh "$BOTTLE/drive_c/Program Files (x86)/Steam/dumps" 2>/dev/null
du -sh "$BOTTLE/drive_c/setup_galaxy.exe" 2>/dev/null   # дубликат ~277M — можно rm
du -sh ~/code/local_machine/scripts/games/cache/setup_galaxy.exe 2>/dev/null
Путь Ориентир Действие
Steam/dumps/*.dmp до ~400 MB удалить старые .dmp (Steam пересоздаст при новом crash)
drive_c/setup_galaxy.exe ~277 MB rm если есть копия в scripts/games/cache/
cache/setup_galaxy.exe ~277 MB оставить один экземпляр
Swap used десятки GB см. экстренный сброс ниже

Экстренный сброс (копипаст)

# 1) Убить зомби-отладчики (безопасно для данных bottle)
pkill -9 winedbg 2>/dev/null
pkill -9 wineserver 2>/dev/null

# 2) HoMM/Steam bottle — только если не нужен сейчас живой Steam
bash ~/code/local_machine/scripts/games/start.sh reset

# 3) Дампы Steam (опционально, освобождает сотни MB)
rm -f ~/Library/Containers/com.franke.Whisky/Bottles/38412122-*/drive_c/Program\ Files\ \(x86\)/Steam/dumps/*.dmp

# 4) Дубликат установщика GOG в drive_c (если копировали в HoMM-bottle)
rm -f ~/Library/Containers/com.franke.Whisky/Bottles/38412122-*/drive_c/setup_galaxy.exe

После этого: перезагрузка Mac — самый надёжный способ освободить swap (macOS не отдаёт swap мгновенно только kill процессов).

Профилактика:

  • Не гонять GOG web-stub в HoMM-bottle → § GOG web-stub.
  • После серии падений Steam: reset + очистка Steam/dumps.
  • Держать ≥1520 GB свободно на Data перед установкой игр (не путать с «занятым swap»).

GOG web-stub (отдельный bottle)

Файл GOG_Galaxy_*.exe (~500 KB) — загрузчик полного установщика с gog.com, не игра. Скачивает GalaxySetup.exe и ставит игру через GOG installer в Wine.

Не путать с: GOG Galaxy 2.0 (лаунчер в HoMM-bottle, start.sh gog, логин через CEF) — к web-stub не относится.

Что сработало (RCA 2026-05-28, JA3)

Попытка Результат
HoMM-bottle + setup-wine-bottle.sh + stub FontFamilyNotFound / пустые кнопки; в логе FATAL GenericSansSerif
Тот же bottle + 26 шрифтов (macOS + corefonts) без gdiplus снова FontFamilyNotFound — файлы есть, Wine не отдаёт generic font family
Bottle GOG-Install + install-gdiplus.sh + install-corefonts.sh + stub OK: процесс жив, подписи в UI, в Temp/GalaxyInstaller_*/GalaxySetup.exe ~99 MB

Корневая причина: .NET WinForms вызывает GdipGetGenericFontFamilySansSerif → без native gdiplus.dll (winetricks) Wine отвечает FontFamilyNotFound, даже при полном windows/Fonts.

Обязательный порядок в GOG-bottle:

  1. gog/create-bottle.sh или gog/use-bottle.sh <UUID>bottle.env
  2. gog/setup-bottle.sh — шрифты macOS + реестр + сеть Wine
  3. gog/install-gdiplus.sh — winetricks, ~900 MB скачивание, gdiplus=n,b
  4. gog/install-corefonts.sh — SourceForge arial32 / times32 / andale32
  5. gog/run-web-installer.sh путь к GOG_Galaxy_*.exe

Одной командой: bash …/gog/install-all.sh /path/GOG_Galaxy_*.exe

Проверка успеха (после запуска stub)

# процесс
pgrep -fl 'GOG_Galaxy_Jagged'

# лог без FontFamily (имя bottle в пути)
grep -i FontFamily /tmp/gog-web-installer-GOG-Install.log || echo "OK: нет FontFamily"

# скачан полный setup (путь меняется: GalaxyInstaller_<random>)
find ~/Library/Containers/com.franke.Whisky/Bottles -path '*/GalaxyInstaller_*/GalaxySetup.exe' -ls 2>/dev/null
Признак Значение
Лог /tmp/gog-web-installer-GOG-Install.log — нет FontFamily could not be found
Temp …/users/eternal/AppData/Local/Temp/GalaxyInstaller_*/GalaxySetup.exe растёт (~100 MB+)
Окно Cmd+TabGOG_Galaxy_Jagged_Alliance_3.exe (не в окне Whisky)
Bottle только gog/bottle.envне смотреть Steam/dumps в HoMM-bottle

Антипаттерны (кратко)

Полный список по шрифтам: § Шрифты — антипаттерны.

HoMM-bottle + setup-wine-bottle.sh + stub gog/install-all.sh или gog/README.md
Только corefonts, без gdiplus setup-bottleinstall-gdiplusinstall-corefonts
dwrite=n,b или gdiplus=b для stub gdiplus=n,b (export_wine_env_gog)
GalaxySetup пустой X = «добавить шрифты» gdi32/Innoinstall-galaxy-extract + launch-galaxy
Смотреть Steam/dumps /tmp/gog-web-installer-*.log, gog/diagnose-session.sh
start.sh reset для GOG bash …/gog/reset.sh
20 GB «съел stub» при FontFamily в логе падение до загрузки игры — § Swap

Симптомы и фикс

Симптом Причина Действие
Пустые radio/кнопки, окно есть нет corefonts или нет gdiplus install-gdiplus.sh и install-corefonts.sh
FontFamilyNotFound / GenericSansSerif нет native gdiplus (типично) bash …/gog/install-gdiplus.sh → снова stub
Скрипт пишет OK, окна нет см. § GOG Galaxy — окно reset.shlaunch-galaxy.sh
«Installer Already Running» второй stub gog/reset.sh
Нет bottle.env GOG-bottle не создан gog/create-bottle.sh или gog/use-bottle.sh <UUID>
Stub завис на загрузке мало места на Data df -h≥20 GB свободно

GOG Galaxy: окно не открывается

RCA за 7 часов (2026-05-28): GOG_GALAXY_7H_RCA.md — хронология запусков, что подтверждено в логах (процесс + login form), и что не подтверждено (видимое окно на macOS).

Собрать логи: bash …/gog/collect-gog-logs-7h.shtemp/gog-logs-7h-*.

launch-galaxy.sh пишет OK, а окна нет — чаще всего не «нет приложения», а CEF/HWND в Wine или второй экземпляр убил новое окно.

Лог (GalaxyInitialization.log) Что значит
Second client instance detectedThe client will exit висел старый GalaxyClient / lock; новое окно не создаётся
will continue + в ps есть GalaxyClient.exe клиент живCmd+TabGalaxyClient / wine64
Failed to locate Galaxy Client window restore не нашёл окно (часто после «Second client»)
DeelevateStrategy / Privilege de-elevation / exit -31 нет /deelevated или сервис 1053

Канон (2026-05-28):

# 1) Whisky GUI (лучше для окна на Mac):
bash ~/code/local_machine/scripts/games/gog/launch-galaxy-whisky.sh
# → pin «gog-galaxy» → Run

# 2) Терминал (процесс; окно может не появиться):
bash ~/code/local_machine/scripts/games/gog/reset.sh
bash ~/code/local_machine/scripts/games/gog/launch-galaxy.sh

# 3) Если окна нет — foreground + vdesktop:
bash ~/code/local_machine/scripts/games/gog/launch-galaxy-ui.sh

В GalaxyClient.log бывает Successfully brought window to the foreground, а на Mac пусто — CEF в cef.log: Received message from source not matching parent window (HWND родителя в Wine). Виртуальный desktop (explorer /desktop=GOGGalaxy,1280x800) даёт отдельное окно Wine; foreground (launch-galaxy-ui.sh) привязывает его к Terminal.

RCA: bash …/gog/diagnose-galaxy-window.sh

Один раз: bash …/gog/pin-galaxy-whisky.sh → Whisky → bottle GOG-Install → pin gog-galaxy → Run.

A/B CEF: GOG_CEF_PROFILE=steam bash …/launch-galaxy-ui.sh (добавляет -cef-in-process-gpu, как Steam).

Антипаттерн
reset.sh старый (не убивал GalaxyClient.exe) обновлённый gog/reset.sh + gog-process.sh
Повторный launch-galaxy без reset всегда resetlaunch
Смотреть только Whisky, не Cmd+Tab окно Wine вне главного окна Whisky
Запуск из ~/code/local_machine без cd drive_c launch-galaxy.sh сам ставит cwd в drive_c

JA3 на Mac: установка — offline backup + install-ja3-innoextract.sh (Whisky GOG-Install). Запуск — CrossOver D3DMetal: setup-ja3-crossover.sh + run-ja3-crossover.sh. Whisky run-ja3.sh не даёт рабочую D3D12. Runbook: JA3_RUNBOOK.md.

Setup: красный X, пустое окно, gdi32 (RCA 2026-05-28)

После успешного web-stub (скачан GalaxySetup.exe ~290 MB) второй этап — Inno Setup + botva2.dll. В Wine типично:

Лог Inno (Setup Log … #00N.txt) Значение
Found GalaxyClientExePath + Showing Galaxy already running dialog рядом висит GalaxyInstaller.exe или в реестре уже есть путь к Galaxy
GalaxyClient registry found, but executable returned an empty version Wine не отдаёт FileVersion для GalaxyClient.exe
Access violation … gdi32.dll Read of address 00000068 отрисовка MsgBox (текст пустой — тот же класс багов, что и пустой UI)

Рабочий обход (проверено):

  1. GOG Galaxyinnoextract + VC++ redist из setup_galaxy.exe, не GalaxySetup.exe в Wine:
    bash ~/code/local_machine/scripts/games/gog/install-galaxy-extract.sh
    
  2. Jagged Alliance 3 — из клиента Galaxy после входа (CEF, не botva2):
    bash ~/code/local_machine/scripts/games/gog/launch-galaxy.sh
    # → Cmd+Tab → GalaxyClient → Install JA3
    
    Или одной цепочкой: bash …/gog/finish-ja3-install.sh

Web-stub + GalaxySetup /VERYSILENT на этом Wine не доводят установку до конца (gdi32 на любом bottle).

Снять логи: bash …/gog/collect-setup-rca.shtemp/gog-setup-rca-*

Повторный запуск stub

bash ~/code/local_machine/scripts/games/gog/reset.sh
# Предпочтительно без stub:
bash ~/code/local_machine/scripts/games/gog/finish-ja3-install.sh
# Или принудительно stub (часто упирается в gdi32 на GalaxySetup):
GOG_USE_WEB_STUB=1 bash ~/code/local_machine/scripts/games/gog/install-all.sh \
  ~/code/hunabapp-dev/temp/GOG_Galaxy_Jagged_Alliance_3.exe

Диагностика:

bash ~/code/local_machine/scripts/games/gog/diagnose-session.sh
bash ~/code/local_machine/scripts/games/gog/collect-setup-rca.sh

См. также: scripts/games/gog/README.md, WINE_MAC_RUNBOOK.md §3.3.


Steam зависает / мало места

Симптомы

Failed creating file mapping, CSteamEngine::BMainLoop stalled, wineserver crashed, winedbg размножается → см. § Swap.

Действия

bash ~/code/local_machine/scripts/games/start.sh disk   # ≥10 GB
pkill -9 winedbg 2>/dev/null
bash ~/code/local_machine/scripts/games/start.sh reset
bash ~/code/local_machine/scripts/games/start.sh steam-ui

Очистка: Steam/dumps/*.dmp, scripts/games/cache/*.dmg, Libraries.tar.gz (после установки Wine), Корзина.


Графика DirectX 11 / Failed to initialize

bash ~/code/local_machine/scripts/games/start.sh dxvk
bash ~/code/local_machine/scripts/games/start.sh play

Только Gcenx DXVK-macOS, не vanilla DXVK 2.5. Запуск — play (DXVK env), не Play в Steam UI.


Мышь: курсор двигается, ЛКМ нет

bash ~/code/local_machine/scripts/games/start.sh diagnose

UNITY_POINTER_MOUSE_FIX.md


Whisky «Zero KB»

bash ~/code/local_machine/scripts/games/install-whiskywine-manual.sh


Connection Problem: Steam не подключается к серверам

Симптомы

Диалог Connection ProblemThere was a problem communicating with Steam. Кнопки Retry и Enter Offline Mode.

Интернет на Mac есть, но Wine-Steam не логинится → сейвы в игре пустые.

Что видно в логах

Steam/logs/connection_log.txt:

Этап OK Плохо
HTTP probe Connectivity test … OK! timeout
CM / WebSocket ConnectionCompletedLogged On ConnectionDisconnected('Disconnected By Remote Host')
console_log LogonFailure No Connection

Утром (04:0804:10) было 2 обрыва WebSocket, на 3-й попытке (CM cmp2-lhr1.steamserver.net:443) — Logged On. Днём сессии часто не доходят до CM, если параллельно открыт Mac Steam.

Причины (по частоте)

  1. Запущен нативный Steam.app на Mac (сейчас типичный случай) — конфликт с bottle.
  2. WebSocket к Steam CM нестабилен в Wine — нужны повторные Retry (как в 04:0804:10).
  3. VPN / смена сети — CM отваливается (Disconnected By Remote Host).
  4. IPv6 в Wine падает (не критично, если WebSocket:443 жив).

Что делать (по порядку)

Команды ниже — копировать в Terminal целиком по шагам (путь абсолютный, переменная G не нужна).

1. Полностью закрыть Mac Steam

Удаление Steam.app из /Applications не убирает клиент: он часто остаётся в
~/Library/Application Support/Steam/Steam.AppBundle/ и процессах steam_osx / ipcserver.

killall steam_osx 2>/dev/null
killall ipcserver 2>/dev/null
pkill -f 'Steam.AppBundle/Steam/Contents/MacOS' 2>/dev/null
pgrep -f 'Steam.AppBundle/Steam/Contents/MacOS/steam_osx' >/dev/null && echo "⚠️ Mac Steam ещё жив" || echo "OK: Mac Steam остановлен"

(Если был установлен: osascript -e 'quit app "Steam"' — при ошибке -128 используйте killall выше.)

2. Перезапуск bottle

bash ~/code/local_machine/scripts/games/start.sh reset
bash ~/code/local_machine/scripts/games/start.sh steam-ui

3. В диалоге Connection Problem (окно Wine-Steam)

  • Retry — 23 раза, пауза 1530 с между попытками.
  • Если не коннектится — Enter Offline Mode.

Offline Mode для Heroes нормален: сейвы локальные (1/2/3.saveskirmish уже на диске), облако Steam не обязательно.

После Logged On или Offline Mode:

bash ~/code/local_machine/scripts/games/start.sh play

Не нажимать Play у Olden Era в библиотеке Steam — applaunch без game-env → D3D11 crash.

4. Проверка

bash ~/code/local_machine/scripts/games/start.sh diagnose-saves

Нужно не Logged Off, а Logged On или Steam в offline с поднятым Steam.exe.

Всё одним блоком (шаг 3 — вручную в окне Steam):

osascript -e 'quit app "Steam"'
bash ~/code/local_machine/scripts/games/start.sh reset
bash ~/code/local_machine/scripts/games/start.sh steam-ui
# → Retry 23× или Enter Offline Mode → затем:
bash ~/code/local_machine/scripts/games/start.sh play
bash ~/code/local_machine/scripts/games/start.sh diagnose-saves

Антипаттерн

Жать Retry при открытом Mac Steam — почти всегда снова Connection Problem.


Steam offline (ручной режим)

  1. Whisky → Kill All Bottles
  2. Закрыть Steam.app на Mac
  3. bash ~/code/local_machine/scripts/games/start.sh steam-ui

Полезные команды

HoMM / Steam (bottle HoMM-OldenEra):

bash ~/code/local_machine/scripts/games/start.sh fix-steam-ui
bash ~/code/local_machine/scripts/games/start.sh diagnose-saves
bash ~/code/local_machine/scripts/games/start.sh reset
bash ~/code/local_machine/scripts/games/start.sh steam-ui
bash ~/code/local_machine/scripts/games/start.sh play
bash ~/code/local_machine/scripts/games/start.sh saves

GOG web-stub (отдельный bottle):

bash ~/code/local_machine/scripts/games/gog/install-all.sh /path/GOG_Galaxy_*.exe
bash ~/code/local_machine/scripts/games/gog/install-gdiplus.sh
bash ~/code/local_machine/scripts/games/gog/install-corefonts.sh
bash ~/code/local_machine/scripts/games/gog/run-web-installer.sh /path/GOG_Galaxy_*.exe
bash ~/code/local_machine/scripts/games/gog/diagnose-session.sh
bash ~/code/local_machine/scripts/games/gog/reset.sh

Память / swap:

sysctl vm.swapusage
pgrep winedbg | wc -l
pkill -9 winedbg; pkill -9 wineserver

Логи:

# Steam / HoMM
~/Library/Containers/…/Bottles/38412122-…/drive_c/Program Files (x86)/Steam/logs/
~/Library/Containers/…/…/AppData/LocalLow/Unfrozen/HeroesOldenEra/Player.log

# GOG web-stub (имя bottle в имени файла)
/tmp/gog-web-installer-GOG-Install.log

Последняя сверка: 2026-05-28 (§ шрифты: сводка антипаттернов Steam dwrite / GOG gdiplus; GOG-Install stub OK; GalaxySetup → gdi32) · Whisky 3 · WhiskyWine 11