Add Joplin, old Mac, and Fedora WiFi runbooks; simplify JA3 Whisky scripts and hotspot recovery.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
| **Исполняемый файл** | `C:\GOG Games\Jagged Alliance 3\JA3.exe` |
|
||||
| **Bottle** | **GOG-Install** (`scripts/games/gog/bottle.env`) — не HoMM/Steam |
|
||||
| **Galaxy в Wine** | **не использовать** для JA3 — CEF, swap ([GOG_GALAXY_7H_RCA.md](GOG_GALAXY_7H_RCA.md)) |
|
||||
| **Запуск игры** | **CrossOver** `run-ja3-crossover.sh` — см. [JA3_RUNBOOK.md](JA3_RUNBOOK.md) |
|
||||
| **Запуск игры** | **`run-ja3.sh`** (Whisky GOG-Install) — см. [JA3_RUNBOOK.md](JA3_RUNBOOK.md) |
|
||||
| **Steam.app / Steam.exe** | **не в контуре** — отдельный bottle HoMM; в GOG-bottle клиента Steam быть не должно |
|
||||
|
||||
### Не путать с Steam
|
||||
@@ -126,33 +126,26 @@ JA3 на Windows использует **D3D12**. **DXVK-macOS** (только D3
|
||||
| **Whisky / Gcenx Wine 11.9** | `d3d12.dll` = wined3d → **Vulkan** (`d3d12_get_vk_physical_device Could not find Vulkan physical device`). **Нет D3DMetal hooks** ([Gcenx#97](https://github.com/Gcenx/macOS_Wine_builds/issues/97)). |
|
||||
| **GPTK PE + Gcenx ntdll** | `__wine_unix_call` / `dxgi.dll not found` — PE DLL GPTK несовместимы с чужим Wine. |
|
||||
| **GPTK Wine 7.7 alone** | `comctl32.dll failed to initialize` на этой macOS — не запускается даже notepad. |
|
||||
| **CrossOver 26 + D3DMetal** | **Работает.** Встроенные `apple_gptk` + `WINED3DMETAL=1`. |
|
||||
| **CrossOver 26 + D3DMetal** | Работало; **CrossOver удалён** (2026-06). |
|
||||
| **Whisky + GPTK** | D3DMetal в GOG-Install bottle — см. `install-gptk-whisky.sh` |
|
||||
|
||||
Сообщения GOG API (`MatchmakingServers`, `Music`, `Game name not defined`) — **не причина** краша.
|
||||
|
||||
#### Канон запуска (подтверждено на этой машине)
|
||||
#### Канон запуска (2026-06)
|
||||
|
||||
```bash
|
||||
brew install --cask crossover # один раз
|
||||
bash ~/code/local_machine/scripts/games/gog/setup-ja3-crossover.sh
|
||||
bash ~/code/local_machine/scripts/games/gog/run-ja3-crossover.sh
|
||||
bash ~/code/local_machine/scripts/games/gog/run-ja3.sh
|
||||
```
|
||||
|
||||
CrossOver bottle **JA3-GOG** (win10_64, D3DMetal on). Игра клонируется APFS clonefile в bottle (Wine **не читает** symlink за пределы prefix → `CommonLua/Core/autorun.lua not found`).
|
||||
|
||||
**Whisky `run-ja3.sh` для D3D12 на Mac не работает** — только CrossOver (или Porting Kit GUI).
|
||||
|
||||
Альтернатива GUI: [Porting Kit](https://www.paulthetall.com/jagged-aliance-3-for-mac/) (тот же GPTK/D3DMetal стек).
|
||||
Игра в bottle **GOG-Install** (Whisky). При D3D12-ошибках — GPTK в bottle ([JA3_RUNBOOK.md](JA3_RUNBOOK.md) §2).
|
||||
|
||||
### Запуск игры
|
||||
|
||||
```bash
|
||||
bash ~/code/local_machine/scripts/games/gog/run-ja3-crossover.sh
|
||||
bash ~/code/local_machine/scripts/games/gog/run-ja3.sh
|
||||
```
|
||||
|
||||
Whisky (`run-ja3.sh`) — только установка innoextract в GOG-Install; **графика D3D12 → CrossOver**.
|
||||
|
||||
Обход (тормоза, на свой риск):
|
||||
Обход swap (тормоза, на свой риск):
|
||||
|
||||
```bash
|
||||
JA3_IGNORE_SWAP=1 bash ~/code/local_machine/scripts/games/gog/run-ja3.sh
|
||||
@@ -160,7 +153,7 @@ JA3_IGNORE_SWAP=1 bash ~/code/local_machine/scripts/games/gog/run-ja3.sh
|
||||
|
||||
Cmd+Tab → `wine64` / `JA3`. В графике при артефактах: **отключить heat haze**.
|
||||
|
||||
**Ошибка «Failed to initialize graphics subsystem»:** Whisky/Gcenx Wine **не поддерживает D3DMetal** для d3d12. Используйте **CrossOver**: `setup-ja3-crossover.sh` + `run-ja3-crossover.sh`. Из Whisky Run **не запускать** — только CrossOver bottle JA3-GOG с `start /d` (CWD + CommonLua).
|
||||
**Ошибка «Failed to initialize graphics subsystem»:** установите GPTK и настройте D3DMetal в Whisky — см. [JA3_RUNBOOK.md](JA3_RUNBOOK.md) §2. **Не** запускать `JA3.exe` из Whisky Run без `start /d`.
|
||||
|
||||
### Итог на диске (после успеха на этой машине)
|
||||
|
||||
@@ -200,9 +193,8 @@ bash ~/code/local_machine/scripts/games/gog/install-ja3-offline.sh ~/Downloads/s
|
||||
| `install-ja3-multipart.sh` (Wine `/VERYSILENT`) | `install-ja3-innoextract.sh` |
|
||||
| Распаковка в `scripts/games/cache/ja3-*` | сразу в `drive_c/GOG Games/…` |
|
||||
| Держать `.bin` после установки без нужды | скрипт удалит (~15 GB) |
|
||||
| `launch-galaxy.sh` / Galaxy CEF для JA3 | **`run-ja3-crossover.sh`** ([JA3_RUNBOOK.md](JA3_RUNBOOK.md)) |
|
||||
| Whisky `run-ja3.sh` для D3D12 | CrossOver + D3DMetal |
|
||||
| `RetinaMode=y` + `LogPixels=192` для мыши JA3 | Клип курсора на середине экрана → **legacy** ([JA3_RUNBOOK.md](JA3_RUNBOOK.md) §9) |
|
||||
| `launch-galaxy.sh` / Galaxy CEF для JA3 | **`run-ja3.sh`** ([JA3_RUNBOOK.md](JA3_RUNBOOK.md)) |
|
||||
| Whisky Run `JA3.exe` без CWD | `run-ja3.sh` (`start /d`) |
|
||||
| Жёсткий стоп JA3 при swap 800 MB без Wine | Устарело; warn до 4 GB — [JA3_RUNBOOK.md](JA3_RUNBOOK.md) §4 |
|
||||
|
||||
---
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
# Jagged Alliance 3 (GOG) — runbook Mac / Apple Silicon
|
||||
|
||||
**Машина:** M1 Pro, macOS Sonoma+, bottle Whisky **GOG-Install** (`9ee55e7c-a58e-411e-a93f-30530d4f1073`).
|
||||
**Проверено:** 2026-05-28 (установка) · 2026-05-29 (запуск через CrossOver).
|
||||
**Проверено:** 2026-05-28 (установка) · 2026-06-17 (CrossOver удалён; запуск только Whisky).
|
||||
|
||||
Связанные документы: [JA3_MAC_WITHOUT_GALAXY.md](JA3_MAC_WITHOUT_GALAXY.md) (установка offline), [TROUBLESHOOTING.md](TROUBLESHOOTING.md), [GOG_GALAXY_7H_RCA.md](GOG_GALAXY_7H_RCA.md).
|
||||
Связанные документы: [JA3_MAC_WITHOUT_GALAXY.md](JA3_MAC_WITHOUT_GALAXY.md), [TROUBLESHOOTING.md](TROUBLESHOOTING.md), [GOG_GALAXY_7H_RCA.md](GOG_GALAXY_7H_RCA.md).
|
||||
|
||||
> **Примечание (2026-06):** CrossOver и связанные скрипты (`run-ja3-crossover.sh`, `JA3-GOG`, `JA3-WINE`, `sync-ja3-saves.sh`) **удалены** с машины. Запуск JA3 — только через Whisky GOG-Install.
|
||||
|
||||
---
|
||||
|
||||
@@ -17,281 +19,93 @@ bash ~/code/local_machine/scripts/games/gog/install-ja3-innoextract.sh
|
||||
bash ~/code/local_machine/scripts/games/gog/finish-ja3-layout.sh
|
||||
```
|
||||
|
||||
### Запуск (каждый раз, CrossOver + D3DMetal)
|
||||
### Запуск (каждый раз)
|
||||
|
||||
```bash
|
||||
brew install --cask crossover # один раз
|
||||
bash ~/code/local_machine/scripts/games/gog/setup-ja3-crossover.sh # один раз
|
||||
bash ~/code/local_machine/scripts/games/gog/run-ja3-crossover.sh
|
||||
bash ~/code/local_machine/scripts/games/gog/run-ja3.sh
|
||||
```
|
||||
|
||||
- **Cmd+Tab** → окно `JA3.exe`
|
||||
- В настройках графики: **отключить heat haze**
|
||||
- **Swap:** «залипший» swap после Wine (2–4 GB без процессов) **не блокирует** запуск — только предупреждение. Стоп: swap ≥ **4096 MB** без Wine, или swap ≥ **1200 MB** пока **Wine/JA3 ещё работают** → `reset-ja3-crossover.sh` / reboot. Обход: `JA3_IGNORE_SWAP=1`
|
||||
|
||||
### Два «контура»
|
||||
|
||||
| Контур | Роль | Инструмент |
|
||||
|--------|------|------------|
|
||||
| **GOG-Install** (Whisky) | innoextract, файлы игры, CommonLua, реестр GOG | `install-ja3-innoextract.sh`, `finish-ja3-layout.sh` |
|
||||
| **JA3-GOG** (CrossOver) | **запуск** D3D12 через D3DMetal | `setup-ja3-crossover.sh`, `run-ja3-crossover.sh` |
|
||||
|
||||
Whisky **`run-ja3.sh` не запускает JA3 с рабочей графикой** — только CrossOver (или Porting Kit GUI).
|
||||
- **Cmd+Tab** → окно **`JA3.exe`**
|
||||
- **Swap:** «залипший» swap после Wine **не блокирует** запуск — только предупреждение. Стоп: swap ≥ **4096 MB** без Wine, или swap ≥ **1200 MB** пока **Wine/JA3 ещё работают** → `reset-ja3-whisky.sh` / reboot. Обход: `JA3_IGNORE_SWAP=1`
|
||||
- **Задержка cold start:** 15–60 с до появления окна — норма
|
||||
|
||||
---
|
||||
|
||||
## 2. Почему CrossOver, а не Whisky
|
||||
## 2. Графика: Whisky vs D3D12
|
||||
|
||||
JA3 на Windows использует **DirectX 12**. На Apple Silicon единственный рабочий путь — **Apple D3DMetal** (Game Porting Toolkit), встроенный в **CrossOver 23+** с флагом `WINED3DMETAL=1`.
|
||||
JA3 на Windows использует **DirectX 12**. На Apple Silicon рабочий путь раньше был **CrossOver + D3DMetal** — CrossOver снят.
|
||||
|
||||
**Whisky** использует **Gcenx Wine** — maintainer явно пишет, что сборки **не содержат D3DMetal hooks** ([Gcenx/macOS_Wine_builds#97](https://github.com/Gcenx/macOS_Wine_builds/issues/97)). В этом случае `d3d12.dll` (94 KB) идёт через **wined3d → Vulkan**, а на Mac нет Vulkan physical device:
|
||||
|
||||
```text
|
||||
fixme:d3d12:d3d12_get_vk_physical_device Could not find Vulkan physical device for DXGI adapter.
|
||||
```
|
||||
|
||||
→ UI: **«Failed to initialize graphics subsystem»**
|
||||
→ лог JA3: **`Failed creating render device`**
|
||||
|
||||
Копирование `D3DMetal.framework` + `libd3dshared.dylib` + моста `d3d12.so` **не достаточно**, если PE `d3d12.dll` / `ntdll` от Gcenx — unix-вызовы D3DMetal не подключены.
|
||||
|
||||
---
|
||||
|
||||
## 3. RCA: злоключения 2026-05-28 — 2026-05-29
|
||||
|
||||
Хронология попыток на этой машине (чат + логи `JA3.exe-*.log`, Wine debug).
|
||||
|
||||
### Фаза A — установка и ложные следы (28.05)
|
||||
|
||||
| # | Симптом / действие | Реальная причина | Итог |
|
||||
|---|-------------------|------------------|------|
|
||||
| A1 | GOG web-stub, пустые кнопки | Нет **gdiplus** (winetricks) | ✅ `install-gdiplus.sh` + corefonts |
|
||||
| A2 | Galaxy CEF, окна нет | HWND/CEF в Wine, swap | Galaxy **не нужен** для JA3 offline |
|
||||
| A3 | Лог `Steam initialized … Beta branch GOG` | GOG API-шим (`steam_api64.dll`), **не** Steam.app | ❌ не причина краша |
|
||||
| A4 | `CreateSubsystem failed MatchmakingServers/Music` | GOG wrapper без Galaxy service | ❌ шум, не графика |
|
||||
| A5 | `Game name not defined` | innoextract не выполнил Inno-постскрипты | ⚠️ косметика; фикс: `register-ja3-registry.sh` |
|
||||
| A6 | Swap ~3 GB, скрипт блокирует запуск | «Залипший» swap после Wine; macOS не отдаёт без reboot | ✅ `gog_swap_guard_ja3_launch`: warn до 4 GB без процессов; reboot если Mac тормозит |
|
||||
|
||||
### Фаза B — «графика» в Whisky (28–29.05)
|
||||
|
||||
| # | Попытка | Лог / ошибка | Почему не работает |
|
||||
|---|---------|--------------|-------------------|
|
||||
| B1 | DXVK + `-graphicsapi d3d11` | `Failed creating render device` | DXVK = D3D10/11, **не D3D12** |
|
||||
| B2 | DXMT v0.80 | `dxgi.dll` **c000007b** | Несовместимость с Gcenx Wine 11 + overrides |
|
||||
| B3 | `upgrade-whisky-wine-gcenx.sh` (11.9) + GPTK bridge | `d3d12_get_vk_physical_device` | Gcenx d3d12 = **Vulkan**, не Metal |
|
||||
| B4 | GPTK PE `d3d12.dll`/`dxgi.dll` (114/86 KB) в `system32` | Всё ещё Vulkan path или `dxgi not found` | PE GPTK 7.7 ≠ ntdll Gcenx 11 |
|
||||
| B5 | GPTK PE в `wine/lib/x86_64-windows` | `Library dxgi.dll not found` (c0000135) | `__wine_unix_call` не реализован в Gcenx ntdll |
|
||||
| B6 | Замена `ntdll.so` на GPTK | `virtual_alloc_first_teb` / wine не стартует | Нельзя мешать ntdll разных Wine |
|
||||
| B7 | `ditto` всего GPTK `lib/` в Whisky | Wine **7.7 GPTK** поверх bottle | Перезаписал `wine64` → comctl32 и др. |
|
||||
| B8 | `prepare-ja3-d3dmetal.sh` (убрать d3d12 из system32) | Всё равно render device fail | Builtin Gcenx d3d12 без Metal |
|
||||
| B9 | `forceD3D11: true` в Metadata.plist | Противоречие с D3D12 backend | Исправлено на `false` — без эффекта на Gcenx |
|
||||
| B10 | GPTK Wine 7.7, отдельный prefix | `comctl32.dll failed to initialize` (c0000005) | GPTK Wine 7.7 **сломан** на этой macOS |
|
||||
| B11 | `fixmywhisky.sh` (ditto GPTK lib) | Как B7 | Только D3DMetal.framework + bridge **без** подмены всего Wine |
|
||||
|
||||
### Фаза C — CrossOver (29.05, **успех**)
|
||||
|
||||
| # | Шаг | Результат |
|
||||
|---|-----|-----------|
|
||||
| C1 | `brew install --cask crossover` | CrossOver 26.1, встроенный `apple_gptk` |
|
||||
| C2 | Bottle **JA3-GOG**, template **win10_64** (не win32 Wow64!) | `kernel32` c000007b на 32-bit bottle |
|
||||
| C3 | `WINED3DMETAL=1`, `WINEDXVK=0` в `cxbottle.conf` | D3D12 → Metal |
|
||||
| C4 | Symlink игры из Whisky bottle | `CommonLua/Core/autorun.lua: File Not Found` — Wine **не читает** symlink **вне** prefix |
|
||||
| C5 | `cp -cR` (APFS clonefile) игры в CrossOver bottle | Файлы видны Wine; **~0** доп. места на APFS |
|
||||
| C6 | `start /d "C:\GOG Games\Jagged Alliance 3" JA3.exe -unpacked` | CWD с `CommonLua/`; не `--cx-app` без `/d` |
|
||||
| C7 | Запуск | **JA3.exe** стабильно работает, нет `Failed creating render device` |
|
||||
| C8 | Курсор: смещение клика → `RetinaMode=y` + `LogPixels=192` | Курсор **не опускается ниже середины экрана** (Y делится пополам) | ✅ профиль **`legacy`**: `RetinaMode=n`, без LogPixels — **подтверждено 2026-05-29** |
|
||||
|
||||
### Сигнатуры в логах (диагностика)
|
||||
|
||||
| Строка | Значение |
|
||||
|--------|----------|
|
||||
| `Failed creating render device` | D3D12 не дошёл до GPU — Whisky/Gcenx, не CrossOver |
|
||||
| `d3d12_get_vk_physical_device Could not find Vulkan` | Gcenx wined3d path — нужен CrossOver D3DMetal |
|
||||
| `Failed to initialize graphics subsystem` (UI) | То же, пользовательский текст JA3 |
|
||||
| `Error opening 'CommonLua/Core/autorun.lua'` | Нет CWD (`start /d`) или symlink вместо клона в bottle |
|
||||
| `comctl32.dll failed to initialize` | GPTK Wine 7.7 — не использовать |
|
||||
| `__wine_unix_call` / `aborting` | GPTK PE на чужом Wine |
|
||||
| `dxgi.dll` **c000007b** | DXMT + неправильные overrides |
|
||||
| `Language: English` без `Failed creating` | Графика OK; смотреть CommonLua / crash дальше |
|
||||
| Курсор виден, клик смещён по Y | HiDPI без согласованного масштаба Wine | `fix-ja3-crossover-mouse.sh` → профиль **legacy** |
|
||||
| Курсор **не ниже середины экрана** | `RetinaMode=y` + `LogPixels=192` / двойной DPI | **legacy** (не retina); перезапуск JA3 |
|
||||
|
||||
Логи JA3:
|
||||
`…/AppData/Roaming/Jagged Alliance 3/logs/JA3.exe-*.log`
|
||||
Whisky: `…/Containers/com.franke.Whisky/Bottles/9ee55e7c-…/`
|
||||
CrossOver: `~/Library/Application Support/CrossOver/Bottles/JA3-GOG/`
|
||||
|
||||
---
|
||||
|
||||
## 4. Антипаттерны (полный список)
|
||||
|
||||
### Установка
|
||||
|
||||
| ❌ Не делать | ✅ Вместо |
|
||||
|-------------|----------|
|
||||
| GOG web-stub `GOG_Galaxy_Jagged_Alliance_3.exe` | Offline backup 5 частей в `~/Games/` |
|
||||
| `install-ja3-multipart.sh` (Wine Inno) | `install-ja3-innoextract.sh` |
|
||||
| Распаковка в `scripts/games/cache/` | Сразу в `drive_c/GOG Games/…` |
|
||||
| Bottle **HoMM-OldenEra** (Steam) | Bottle **GOG-Install** |
|
||||
| Удалять `steam_api64.dll` в папке игры | Это GOG-шим, **оставить** |
|
||||
| Steam client в GOG-bottle | `purge-steam-from-bottle.sh` |
|
||||
|
||||
### Графика / Wine
|
||||
|
||||
| ❌ Не делать | ✅ Вместо |
|
||||
|-------------|----------|
|
||||
| Whisky `run-ja3.sh` для игры | **`run-ja3-crossover.sh`** |
|
||||
| `upgrade-whisky-wine-gcenx.sh` «для D3DMetal» | Gcenx **не** поддерживает D3DMetal hooks |
|
||||
| `ditto` всего GPTK `lib/` в Whisky Libraries | Только `D3DMetal.framework` + `libd3dshared` + `.so` bridge (см. `install-gptk-whisky.sh`) |
|
||||
| GPTK PE `d3d12/dxgi` в system32 **Whisky** | CrossOver со встроенным `apple_gptk` |
|
||||
| Замена `ntdll.so` GPTK в Gcenx Wine | Ломает preloader |
|
||||
| DXVK / DXMT для JA3 как «замена D3D12» | Не подтверждено; JA3 = D3D12 |
|
||||
| `dxgi,d3d11=n,b` с DXMT | Ломает цепочку → c000007b |
|
||||
| Whisky Run **`JA3.exe`** без CWD | `start /d` или `run-ja3.cmd` (Whisky) / CrossOver `start /d` |
|
||||
| Symlink игры из Whisky в CrossOver bottle | **`cp -cR`** (APFS clone) |
|
||||
| CrossOver bottle **win32** / Wow64 | **`win10_64`** |
|
||||
| `--cx-app JA3.exe` без `start /d` | `start /d "…Jagged Alliance 3" JA3.exe -unpacked` |
|
||||
| `forceD3D11: true` + backend d3dMetal | `forceD3D11: false` (Metadata Whisky — не решает Gcenx) |
|
||||
|
||||
### Окружение
|
||||
|
||||
| ❌ Не делать | ✅ Вместо |
|
||||
|-------------|----------|
|
||||
| Считать «залипший» swap 2–4 GB блокером JA3 | Запуск разрешён (warn); reboot — если Mac тормозит |
|
||||
| Запуск JA3 при swap ≥ **1200 MB** + **Wine/JA3 ещё работают** | `reset-ja3-crossover.sh` → reboot |
|
||||
| Запуск JA3 при swap ≥ **4096 MB** без Wine | Reboot Mac или `JA3_IGNORE_SWAP=1` |
|
||||
| Жёсткий лимит **800 MB** для `run-ja3-crossover.sh` | Устарело; см. `gog_swap_guard_ja3_launch` в `config.sh` |
|
||||
| Путать лог Galaxy с JA3 | JA3 offline **без** Galaxy UI |
|
||||
| Чинить «graphics» через Galaxy service | `MatchmakingServers`/`Music` — шум GOG API |
|
||||
|
||||
### Мышь (CrossOver / Retina)
|
||||
|
||||
| ❌ Не делать | ✅ Вместо |
|
||||
|-------------|----------|
|
||||
| `RetinaMode=y` + `LogPixels=192` + `Win8DpiScaling=1` «по умолчанию» | **`fix-ja3-crossover-mouse.sh`** — профиль **legacy** (`RetinaMode=n`) |
|
||||
| CrossOver GUI **High Resolution Mode** без проверки | Если клип Y на середине → **legacy** |
|
||||
| Менять реестр мыши без перезапуска JA3 | `reset-ja3-crossover.sh` → `run-ja3-crossover.sh` |
|
||||
| Профиль **retina** при клипе на середине экрана | **legacy**; при смещении клика — **retina-lite** |
|
||||
| Ожидать фикс мыши «на лету» | Workaround: верхний левый угол окна = угол экрана |
|
||||
|
||||
---
|
||||
|
||||
## 5. Скрипты
|
||||
|
||||
| Скрипт | Назначение | Статус |
|
||||
|--------|------------|--------|
|
||||
| `install-ja3-innoextract.sh` | Multipart offline → bottle | ✅ канон установки |
|
||||
| `finish-ja3-layout.sh` | CommonLua, реестр, upscale DLL | ✅ после innoextract |
|
||||
| `setup-ja3-crossover.sh` | Bottle JA3-GOG, clone игры, D3DMetal | ✅ один раз |
|
||||
| **`run-ja3-crossover.sh`** | **Запуск игры** | ✅ **канон** |
|
||||
| `reset-ja3-crossover.sh` | Stop JA3 / Wine перед перезапуском | ✅ |
|
||||
| `fix-ja3-crossover-mouse.sh` | Профили мыши (legacy / retina-lite / retina) | ✅ default **legacy** |
|
||||
| `run-ja3.sh` | Whisky (эксперимент; графика fail) | ⚠️ только с предупреждением |
|
||||
| `prepare-ja3-d3dmetal.sh` | Whisky D3DMetal prep | ⚠️ не решает Gcenx d3d12 |
|
||||
| `upgrade-whisky-wine-gcenx.sh` | Wine 11.9 | ❌ для JA3 не использовать |
|
||||
| `run-ja3-gptk-wine.sh` | GPTK Wine 7.7 prefix | ❌ comctl32 на этой Mac |
|
||||
| `install-ja3-dxmt.sh` | DXMT fallback d3d11 | ❌ c000007b |
|
||||
| `emergency-stop.sh` | Kill Wine/GOG перед запуском | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## 6. CrossOver bottle (детали)
|
||||
|
||||
**Путь:** `~/Library/Application Support/CrossOver/Bottles/JA3-GOG/`
|
||||
|
||||
**cxbottle.conf** (минимум):
|
||||
|
||||
```ini
|
||||
"WINED3DMETAL" = "1"
|
||||
"WINEDXVK" = "0"
|
||||
```
|
||||
|
||||
**Игра:** `drive_c/GOG Games/Jagged Alliance 3/` — APFS-клон из Whisky GOG-Install (не symlink).
|
||||
|
||||
**Проверка:**
|
||||
**Сейчас:** `run-ja3.sh` запускает игру в **Whisky GOG-Install**:
|
||||
- с **GPTK/D3DMetal** в bottle (если установлен Game Porting Toolkit) — D3D12;
|
||||
- иначе **DXVK D3D11 fallback** (`-graphicsapi d3d11`).
|
||||
|
||||
При ошибке `Failed to initialize graphics subsystem` / `dxgi.dll not found`:
|
||||
```bash
|
||||
pgrep -fl 'JA3\.exe'
|
||||
grep -E 'Failed creating|autorun|CRASH' \
|
||||
"$HOME/Library/Application Support/CrossOver/Bottles/JA3-GOG/drive_c/users/"*/AppData/Roaming/Jagged\ Alliance\ 3/logs/*.log | tail
|
||||
brew install --cask gcenx/wine/game-porting-toolkit
|
||||
bash ~/code/local_machine/scripts/games/gog/install-gptk-whisky.sh
|
||||
bash ~/code/local_machine/scripts/games/gog/configure-ja3-d3dmetal.sh
|
||||
bash ~/code/local_machine/scripts/games/gog/run-ja3.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Альтернативы
|
||||
## 3. Пути на диске
|
||||
|
||||
| Вариант | Комментарий |
|
||||
|---------|-------------|
|
||||
| [Porting Kit](https://www.paulthetall.com/jagged-aliance-3-for-mac/) + GOG offline | Тот же GPTK/D3DMetal; GUI, «просто работает» на M-series |
|
||||
| CrossOver GUI | Bottle JA3-GOG → Install → Run exe; D3DMetal в Advanced Settings |
|
||||
| Whisky + GPTK drag DMG | [Whisky#124](https://github.com/Whisky-App/Whisky/issues/124) — для **DX12** на Gcenx всё равно нет hooks |
|
||||
| Что | Путь |
|
||||
|-----|------|
|
||||
| Игра (Whisky) | `…/Containers/com.franke.Whisky/Bottles/9ee55e7c-…/drive_c/GOG Games/Jagged Alliance 3/` |
|
||||
| Сейвы | `…/drive_c/users/eternal/AppData/Roaming/Jagged Alliance 3/<account_id>/` |
|
||||
| Логи JA3 | `…/AppData/Roaming/Jagged Alliance 3/logs/JA3.exe-*.log` |
|
||||
|
||||
---
|
||||
|
||||
## 9. Курсор: HiDPI / Retina (CrossOver)
|
||||
## 4. Скрипты
|
||||
|
||||
**Проверено 2026-05-29** на M1 Pro + CrossOver 26.1, bottle **JA3-GOG**.
|
||||
| Скрипт | Назначение |
|
||||
|--------|------------|
|
||||
| `install-ja3-innoextract.sh` | Установка из offline backup |
|
||||
| `finish-ja3-layout.sh` | CommonLua, реестр GOG |
|
||||
| **`run-ja3.sh`** | **Канон запуска** |
|
||||
| `reset-ja3-whisky.sh` | Остановить JA3/Wine в GOG-Install |
|
||||
| `emergency-stop.sh` | Полный стоп GOG/Wine |
|
||||
| `prepare-ja3-d3dmetal.sh` / `configure-ja3-d3dmetal.sh` | D3DMetal в Whisky |
|
||||
|
||||
### Симптомы
|
||||
|
||||
| Симптом | Типичная причина |
|
||||
|---------|------------------|
|
||||
| Клик «выше/ниже» UI, курсор виден | Wine отдаёт logical pixels, игра рисует в другом масштабе |
|
||||
| **Курсор не опускается ниже середины экрана** | `RetinaMode=y` + `LogPixels=192` — координата Y делится пополам |
|
||||
|
||||
### Профили (`fix-ja3-crossover-mouse.sh`)
|
||||
|
||||
| Профиль | Реестр | Когда |
|
||||
|---------|--------|-------|
|
||||
| **`legacy`** (default) | `RetinaMode=n`, LogPixels/Win8Dpi **удалены** | **Канон** — полный ход курсора по Y; возможен небольшой сдвиг клика |
|
||||
| `retina-lite` | `RetinaMode=y`, без LogPixels | Если legacy смещает клик, но **нет** клипа на середине |
|
||||
| `retina` | `RetinaMode=y`, `LogPixels=192`, `Win8DpiScaling=1` | ❌ часто **клип Y на 50%** — не использовать как default |
|
||||
|
||||
```bash
|
||||
# Канон (после смены профиля — перезапуск JA3)
|
||||
bash ~/code/local_machine/scripts/games/gog/fix-ja3-crossover-mouse.sh
|
||||
bash ~/code/local_machine/scripts/games/gog/reset-ja3-crossover.sh
|
||||
bash ~/code/local_machine/scripts/games/gog/run-ja3-crossover.sh
|
||||
|
||||
# Если legacy смещает клик
|
||||
JA3_MOUSE_PROFILE=retina-lite bash ~/code/local_machine/scripts/games/gog/fix-ja3-crossover-mouse.sh
|
||||
bash ~/code/local_machine/scripts/games/gog/reset-ja3-crossover.sh
|
||||
bash ~/code/local_machine/scripts/games/gog/run-ja3-crossover.sh
|
||||
```
|
||||
|
||||
**Без перезапуска (workaround):** перетащите окно JA3 так, чтобы **верхний левый угол окна** совпал с **верхним левым углом экрана**.
|
||||
|
||||
CrossOver GUI: Bottle **JA3-GOG** → **High Resolution Mode** — при клипе на середине **выключить** (эквивалент **legacy**).
|
||||
**Удалено (CrossOver):** `run-ja3-crossover.sh`, `setup-ja3-crossover.sh`, `run-ja3-wine.sh`, `sync-ja3-saves.sh`, `fix-ja3-crossover-mouse.sh`.
|
||||
|
||||
---
|
||||
|
||||
## 10. Быстрые команды (терминал)
|
||||
## 5. Антипаттерны
|
||||
|
||||
| Не делать | Вместо |
|
||||
|-----------|--------|
|
||||
| `launch-galaxy.sh` / Galaxy CEF для JA3 | `run-ja3.sh` |
|
||||
| Whisky Run **`JA3.exe`** без CWD | `run-ja3.sh` (`start /d`) |
|
||||
| Дважды подряд `run-ja3.sh` без reset при живом JA3 | `reset-ja3-whisky.sh` |
|
||||
| Galaxy web-stub для JA3 | offline innoextract |
|
||||
|
||||
---
|
||||
|
||||
## 6. Быстрые команды
|
||||
|
||||
| Действие | Команда |
|
||||
|----------|---------|
|
||||
| **Запуск** | `bash ~/code/local_machine/scripts/games/gog/run-ja3-crossover.sh` |
|
||||
| **Стоп / reset Wine** | `bash ~/code/local_machine/scripts/games/gog/reset-ja3-crossover.sh` |
|
||||
| **Стоп всё GOG/Wine** | `bash ~/code/local_machine/scripts/games/gog/emergency-stop.sh` |
|
||||
| **Первичная настройка bottle** | `bash ~/code/local_machine/scripts/games/gog/setup-ja3-crossover.sh` |
|
||||
| **Фикс мыши** | `bash ~/code/local_machine/scripts/games/gog/fix-ja3-crossover-mouse.sh` |
|
||||
| Swap «залип» 2–4 GB, Wine нет | просто `run-ja3-crossover.sh` (warn) |
|
||||
| Swap + Wine/JA3 живы ≥ 1200 MB | `reset-ja3-crossover.sh` → reboot |
|
||||
| Swap ≥ 4096 MB без Wine | reboot Mac |
|
||||
| Обход swap | `JA3_IGNORE_SWAP=1 bash …/run-ja3-crossover.sh` |
|
||||
| Профиль мыши | `JA3_MOUSE_PROFILE=legacy\|retina-lite\|retina` + fix + reset + run |
|
||||
| **Запуск** | `bash ~/code/local_machine/scripts/games/gog/run-ja3.sh` |
|
||||
| **Стоп** | `bash ~/code/local_machine/scripts/games/gog/reset-ja3-whisky.sh` |
|
||||
| Стоп всё GOG/Wine | `bash ~/code/local_machine/scripts/games/gog/emergency-stop.sh` |
|
||||
| Проверить процесс | `pgrep -fl 'JA3\.exe'` |
|
||||
| Обход swap | `JA3_IGNORE_SWAP=1 bash …/run-ja3.sh` |
|
||||
|
||||
**Полный цикл перезапуска:**
|
||||
**Полный цикл:**
|
||||
|
||||
```bash
|
||||
bash ~/code/local_machine/scripts/games/gog/reset-ja3-crossover.sh
|
||||
bash ~/code/local_machine/scripts/games/gog/run-ja3-crossover.sh
|
||||
bash ~/code/local_machine/scripts/games/gog/reset-ja3-whisky.sh
|
||||
bash ~/code/local_machine/scripts/games/gog/run-ja3.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. Ссылки
|
||||
## 7. Ссылки
|
||||
|
||||
- [Gcenx — нет D3DMetal в packages](https://github.com/Gcenx/macOS_Wine_builds/issues/97)
|
||||
- [CrossOver — D3DMetal advanced settings](https://support.codeweavers.com/miscellanous/advanced-settings-in-crossover-mac-26)
|
||||
- [Whisky — GPU / GPTK tracking](https://github.com/Whisky-App/Whisky/issues/124)
|
||||
- [Proton JA3 — graphics / LocalStorage](https://github.com/ValveSoftware/Proton/issues/7039) (Linux; отражения Off/Low — аналог для Wine при других GPU)
|
||||
- [Proton JA3 — graphics](https://github.com/ValveSoftware/Proton/issues/7039)
|
||||
|
||||
@@ -30,9 +30,9 @@ GOG web-stub: bottle **`GOG-Install`** (`scripts/games/gog/bottle.env`) — **н
|
||||
| **GOG Galaxy: окна нет**, скрипт OK | offline installer JA3; Galaxy — best effort | [§ GOG Galaxy — окно](#gog-galaxy-окно-не-открывается) · [GOG_GALAXY_7H_RCA.md](GOG_GALAXY_7H_RCA.md) |
|
||||
| GOG Galaxy → **swap**, Mac «встал» | `gog/emergency-stop.sh` → перезагрузка | [GOG_GALAXY_7H_RCA.md](GOG_GALAXY_7H_RCA.md) § Swap |
|
||||
| GOG stub: «запустил, окна нет» | **Cmd+Tab** → `GOG_Galaxy_*.exe` / `wine64` | [§ GOG — проверка успеха](#gog-web-stub-отдельный-bottle) |
|
||||
| **JA3: Failed to initialize graphics subsystem** | CrossOver D3DMetal, не Whisky | [JA3_RUNBOOK.md](JA3_RUNBOOK.md) §2–4 |
|
||||
| **JA3: курсор не ниже середины / смещение клика** | профиль мыши **legacy** vs retina | [JA3_RUNBOOK.md](JA3_RUNBOOK.md) §9 |
|
||||
| **JA3 без Galaxy** | install → Whisky; **запуск → CrossOver** | [JA3_RUNBOOK.md](JA3_RUNBOOK.md) |
|
||||
| **JA3: Failed to initialize graphics subsystem** | GPTK/D3DMetal в Whisky или D3D11 fallback | [JA3_RUNBOOK.md](JA3_RUNBOOK.md) §2 |
|
||||
| **JA3: `run-ja3.sh` — сразу `%`, окна нет** | задержка cold start + `emergency-stop` — **норма** | [§ JA3 — запуск](#ja3--запуск-whisky) |
|
||||
| **JA3: повторный запуск не идёт** | swap-guard + JA3/Wine ещё живы | `reset-ja3-whisky.sh` |
|
||||
| Установить через web-stub | только GalaxySetup (ломается в Wine) | [§ GOG web-stub](#gog-web-stub-отдельный-bottle) |
|
||||
| `fork failed`, Mac «встал», swap 20+ GB | `winedbg` / Steam assert loop → § Swap | [§ Swap и winedbg](#захламление-swap-и-утечка-winedbg) |
|
||||
| «20 GB съело» после GOG | обычно **не** stub — swap + дампы Steam | [§ Swap](#захламление-swap-и-утечка-winedbg) · [§ GOG](#gog-web-stub-отдельный-bottle) |
|
||||
@@ -110,6 +110,9 @@ GOG web-stub: bottle **`GOG-Install`** (`scripts/games/gog/bottle.env`) — **н
|
||||
| Только **`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`** |
|
||||
| **Whisky** Run `JA3.exe` в Whisky без `run-ja3.sh` | `dxgi.dll not found`, CWD/autorun | **`run-ja3.sh`** |
|
||||
| Считать мгновенный `%` после `run-ja3.sh` сбоем | `wine start` не блокирует Terminal | **Cmd+Tab** → `JA3.exe`; ждать до ~60 с |
|
||||
| Два `run-ja3.sh` подряд без reset | swap ≥1200 MB + живой JA3 | `reset-ja3-whisky.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 |
|
||||
@@ -713,7 +716,45 @@ A/B CEF: `GOG_CEF_PROFILE=steam bash …/launch-galaxy-ui.sh` (добавляе
|
||||
| Смотреть только 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](JA3_RUNBOOK.md).
|
||||
**JA3 на Mac:** установка — offline backup + `install-ja3-innoextract.sh` (Whisky GOG-Install). **Запуск:** `run-ja3.sh`. Runbook: [JA3_RUNBOOK.md](JA3_RUNBOOK.md).
|
||||
|
||||
---
|
||||
|
||||
## JA3 — запуск (Whisky)
|
||||
|
||||
**Канон:**
|
||||
|
||||
```bash
|
||||
bash ~/code/local_machine/scripts/games/gog/run-ja3.sh
|
||||
```
|
||||
|
||||
`run-ja3.sh` запускает JA3 в bottle **GOG-Install** (Whisky). CrossOver **удалён** (2026-06).
|
||||
|
||||
### «Не пускает» vs «задержка»
|
||||
|
||||
| Что видите | Это ошибка? | Действие |
|
||||
|------------|-------------|----------|
|
||||
| Строки «Запуск JA3…» и сразу `%` | **Нет** — `wine start` не держит Terminal | Подождать 15–60 с, **Cmd+Tab** → `JA3.exe` |
|
||||
| Пауза 20–40 с **до** строк «Запуск JA3…» | **Нет** — `emergency-stop` + `sleep 2` | Норма при каждом запуске |
|
||||
| `❌ Swap … Wine/JA3 ещё работают` | **Да** — повторный запуск при живой игре | `reset-ja3-whisky.sh`, затем снова `run-ja3.sh` |
|
||||
| Окна нет >60 с, `pgrep JA3` пусто | **Да** | Лог в `…/GOG-Install/…/AppData/Roaming/Jagged Alliance 3/logs/JA3.exe-*.log` |
|
||||
|
||||
### Проверка
|
||||
|
||||
```bash
|
||||
pgrep -fl 'JA3\.exe'
|
||||
ls -t ~/Library/Containers/com.franke.Whisky/Bottles/*/drive_c/users/*/AppData/Roaming/Jagged\ Alliance\ 3/logs/*.log 2>/dev/null | head -1 | xargs tail -20
|
||||
sysctl vm.swapusage
|
||||
```
|
||||
|
||||
### Антипаттерны (JA3 запуск)
|
||||
|
||||
| ❌ | ✅ |
|
||||
|----|-----|
|
||||
| Whisky Run **`JA3.exe`** без CWD | `run-ja3.sh` (`start /d`) |
|
||||
| Ждать блокировку Terminal | Cmd+Tab → `JA3.exe` |
|
||||
| Два запуска без reset при живом JA3 | `reset-ja3-whisky.sh` между сессиями |
|
||||
| CrossOver / `run-ja3-crossover.sh` | удалено — только `run-ja3.sh` |
|
||||
|
||||
### Setup: красный X, пустое окно, gdi32 (RCA 2026-05-28)
|
||||
|
||||
@@ -959,4 +1000,4 @@ pkill -9 winedbg; pkill -9 wineserver
|
||||
|
||||
---
|
||||
|
||||
*Последняя сверка: 2026-05-28 (§ шрифты: сводка антипаттернов Steam dwrite / GOG gdiplus; GOG-Install stub OK; GalaxySetup → gdi32) · Whisky 3 · WhiskyWine 11*
|
||||
*Последняя сверка: 2026-06-17 (CrossOver удалён; JA3 только Whisky) · 2026-05-28 (шрифты Steam dwrite / GOG gdiplus) · Whisky 3*
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
| **GOG Galaxy (лаунчер)** | Galaxy 2.0 | `start.sh gog-install` или `gog/install-galaxy-extract.sh` | `gog` |
|
||||
| **GOG web-stub** | `GOG_Galaxy_*.exe` | Только bottle `gog/` — [gog/README.md](../../scripts/games/gog/README.md) | `gog` |
|
||||
| **Офлайн setup .exe** | backup с gog.com | Скопировать в `drive_c/`, запустить установщик | `plain` или `gog` |
|
||||
| **GOG multipart + innoextract** | JA3 offline backup | `gog/install-ja3-innoextract.sh` — [JA3 runbook](JA3_RUNBOOK.md) | **CrossOver:** `run-ja3-crossover.sh` |
|
||||
| **GOG multipart + innoextract** | JA3 offline backup | `gog/install-ja3-innoextract.sh` — [JA3 runbook](JA3_RUNBOOK.md) | `gog/run-ja3.sh` |
|
||||
| **.NET WinForms installer** | web-stub, мастера GOG | **`gog/install-gdiplus.sh`** + corefonts | `gog` |
|
||||
| **CEF (Steam/GOG UI)** | Steam.exe, GalaxyClient | CEF-флаги в `config.sh` / `gog/config.sh` | `steam` / `gog` |
|
||||
| **DX11 игра (Unity и т.д.)** | Olden Era | `install-dxvk-macos.sh` | `game` |
|
||||
@@ -97,7 +97,7 @@ bash …/run-wine-exe.sh --background --log /tmp/my-app.log --profile plain 'C:\
|
||||
| Место на диске | `bash …/start.sh disk` |
|
||||
| GOG bottle: клиент | `bash …/gog/launch-galaxy.sh` |
|
||||
| GOG bottle: JA3 установка | `bash …/gog/install-ja3-innoextract.sh` |
|
||||
| GOG bottle: JA3 запуск | `bash …/gog/run-ja3-crossover.sh` — [JA3_RUNBOOK.md](JA3_RUNBOOK.md) |
|
||||
| GOG bottle: JA3 запуск | `bash …/gog/run-ja3.sh` — [JA3_RUNBOOK.md](JA3_RUNBOOK.md) |
|
||||
|
||||
Полный список: `bash …/start.sh` без аргументов.
|
||||
|
||||
@@ -147,7 +147,7 @@ export WINEMSYNC=1 WINEESYNC=1
|
||||
| **Steam** | HoMM-OldenEra | `start.sh steam-ui` | Не параллельно с Steam.app |
|
||||
| **HoMM Olden Era** | HoMM-OldenEra | `start.sh play` | Не Play в Steam UI; нужен DXVK — §7 |
|
||||
| **GOG Galaxy 2.0** | HoMM-OldenEra | `start.sh gog` | Логин в Wine — best effort |
|
||||
| **Jagged Alliance 3** | GOG-Install + CrossOver **JA3-GOG** | `gog/run-ja3-crossover.sh` | Установка: Whisky `install-ja3-innoextract.sh` ([runbook](JA3_RUNBOOK.md)) |
|
||||
| **Jagged Alliance 3** | GOG-Install (Whisky) | `gog/run-ja3.sh` | Установка: `install-ja3-innoextract.sh` ([runbook](JA3_RUNBOOK.md)) |
|
||||
| **GOG Galaxy 2.0** | GOG-Install | `gog/launch-galaxy.sh` | Best effort; JA3 — **не** через Galaxy на этом Mac |
|
||||
| **Любой новый .exe** | свой / общий | `run-wine-exe.sh` | §2.1 |
|
||||
|
||||
|
||||
@@ -132,7 +132,7 @@ export_wine_env
|
||||
1. Пять файлов в **`~/Games/`**: `setup_jagged_alliance_3_1.5.2_(80730).exe` + `-1.bin` … `-4.bin`.
|
||||
2. Bottle **GOG-Install** (`gog/bottle.env`).
|
||||
3. `bash …/gog/install-ja3-innoextract.sh` — распаковка в `drive_c/GOG Games/Jagged Alliance 3/`, `.bin` удаляются по мере чтения, после успеха — все архивы в `~/Games` (~15 GB).
|
||||
4. Запуск: `bash …/gog/run-ja3-crossover.sh` (swap guard: см. [JA3_RUNBOOK.md](JA3_RUNBOOK.md) §4, §10).
|
||||
4. Запуск: `bash …/gog/run-ja3.sh` (swap guard: см. [JA3_RUNBOOK.md](JA3_RUNBOOK.md) §1, §6).
|
||||
|
||||
Полный runbook: [JA3_MAC_WITHOUT_GALAXY.md](JA3_MAC_WITHOUT_GALAXY.md).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user