Files
local_machine/docs/games/JA3_MAC_WITHOUT_GALAXY.md

209 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Jagged Alliance 3 на Mac без GOG Galaxy
**Полный runbook (установка + графика + RCA + антипаттерны):** [JA3_RUNBOOK.md](JA3_RUNBOOK.md)
Источники: [GOG — offline installers](https://support.gog.com/hc/en-us/articles/213148105-How-do-I-download-my-purchased-items), [Porting Kit / JA3](https://www.paulthetall.com/jagged-aliance-3-for-mac/), практика на этой машине (**установка 2026-05-28**, **запуск CrossOver 2026-05-29**).
## Главное
| | |
|--|--|
| **GOG Galaxy** | **не нужен** для одиночной игры (DRM-free) |
| **Galaxy** | только для мультиплеера (по карточке GOG) |
| **Что нужно** | **Offline backup** (Windows): `setup_*.exe` + `setup_*-1.bin``-4.bin` |
| **Установка** | **`innoextract`** в bottle — **не** Wine-Inno (падает на botva2/gdi32) |
| **Исполняемый файл** | `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)) |
| **Запуск игры** | **`run-ja3.sh`** (Whisky GOG-Install) — см. [JA3_RUNBOOK.md](JA3_RUNBOOK.md) |
| **Steam.app / Steam.exe** | **не в контуре** — отдельный bottle HoMM; в GOG-bottle клиента Steam быть не должно |
### Не путать с Steam
В логе JA3 бывает `Steam initialized (AppId …, Beta branch GOG)` — это **GOG Galaxy wrapper** (`steam_api64.dll` + `Galaxy.dll` в папке игры), **не** установленный Steam client и **не** `Steam.app` на Mac.
| Файл | Это |
|------|-----|
| `steam_api64.dll` в папке JA3 | GOG API-шим, **не удалять** |
| `Program Files (x86)/Steam/steam.exe` | Steam client — **удалить** из GOG-bottle |
```bash
# только GOG-bottle:
bash ~/code/local_machine/scripts/games/gog/purge-steam-from-bottle.sh
# все bottle + остатки macOS:
bash ~/code/local_machine/scripts/games/purge-steam-wine.sh
```
---
## Runbook: установка multipart с экономией диска
Сценарий: все части offline backup лежат в **`~/Games/`** (или `JA3_GAMES_DIR`). На диске мало места (~1012 GB свободно) — **нельзя** копировать 15 GB архивов в bottle и **нельзя** распаковывать во вторую папку `cache/`.
### Файлы (5 частей, одна папка)
| Файл | Размер | Роль |
|------|--------|------|
| `setup_jagged_alliance_3_1.5.2_(80730).exe` | ~1.6 MB | Лаунчер Inno (обязателен) |
| `setup_jagged_alliance_3_1.5.2_(80730)-1.bin``-4.bin` | ~15 GB суммарно | Данные установщика |
Имя `.exe` должно **совпадать с префиксом `.bin`** (без ` (1)` от браузера). Если скачали как `…(80730) (1).exe` — переименовать в `…(80730).exe`.
### Почему не Wine
```bash
# ❌ install-ja3-multipart.sh / install-ja3-offline.sh через wine64
# Падает за ~10 с — Inno Setup + botva2 в Wine (как GalaxySetup).
```
Канон при **наличии архивов**: **`install-ja3-innoextract.sh`** + **`run-ja3.sh`** (флаг `-unpacked`).
**Важно:** одного innoextract **мало** — Inno не выполняет пост-скрипты (Lua/VFS). Скрипты копируют `CommonLua` и запускают с **`-unpacked`**. Если графика падает (`Failed creating render device`) — доведите установку Wine-инсталлятором: **`install-ja3-wine-finish.sh`** (нужны все 5 файлов в `~/Games/`) или [Porting Kit](https://www.paulthetall.com/jagged-aliance-3-for-mac/).
### Алгоритм экономии места (что делает скрипт)
1. **Перед стартом** — безопасная очистка cache (не трогает архивы в `~/Games`):
- `scripts/games/cache/gog-galaxy-extract-gog-bottle`
- `scripts/games/cache/ja3-extract-test`
- `setup_galaxy.exe` в cache, если Galaxy уже установлен в bottle
2. **Распаковка сразу в bottle**`…/drive_c/GOG Games/Jagged Alliance 3/` (без дубликата в `cache/`).
3. **По ходу `innoextract`** — при сообщении `Opening "…-2.bin"` удаляется `-1.bin`, при `-3.bin``-2.bin`, при `-4.bin``-3.bin` (освобождает ~4 GB за шаг).
4. **Флаг `-m`** — не извлекать временные файлы Inno (`tmp/`).
5. **После успеха** — удаляются оставшиеся `.bin` и `.exe` в `~/Games` (~15 GB). Отключить: `JA3_KEEP_BINS=1`.
Пиковая нагрузка на диск: **~16 GB** под игру в bottle + оставшиеся `.bin` (уменьшаются по шагам 3), а не **~31 GB** (архивы + полная копия в cache).
Минимум свободного места на Data: **~800 MB** во время работы (`JA3_MIN_FREE_MB`, по умолчанию 800), при условии что срабатывает удаление `.bin` по ходу. Если диск забит на 100% — сначала освободить 12 GB вручную (Корзина, cache), иначе `innoextract` упадёт на больших `Packs/*.hpk`.
### Команды (один раз)
```bash
# 1) Bottle GOG-Install (если ещё нет)
bash ~/code/local_machine/scripts/games/gog/list-bottles.sh
bash ~/code/local_machine/scripts/games/gog/use-bottle.sh <UUID> GOG-Install
bash ~/code/local_machine/scripts/games/gog/setup-ja3-bottle.sh # DXVK в GOG-bottle
# 2) Все 5 файлов в ~/Games/
ls ~/Games/setup_jagged_alliance_3_1.5.2_\(80730\)*
# 3) Установка (innoextract + экономия диска)
bash ~/code/local_machine/scripts/games/gog/install-ja3-innoextract.sh
# Лог: /tmp/ja3-innoextract-GOG-Install.log
```
Обёртка с автодетектом multipart в `~/Games`:
```bash
bash ~/code/local_machine/scripts/games/gog/install-ja3.sh
```
Недостающий только `.exe` (~1 MB):
```bash
# account.gog.com → JA3 → offline backup, первая часть
# или:
lgogdownloader --login
bash ~/code/local_machine/scripts/games/gog/fetch-ja3-setup-exe.sh
```
### Переменные окружения
| Переменная | По умолчанию | Назначение |
|------------|--------------|------------|
| `JA3_GAMES_DIR` | `~/Games` | Папка с `setup_*.exe` и `.bin` |
| `JA3_MIN_FREE_MB` | `800` | Стоп, если свободно меньше (MB) |
| `JA3_KEEP_BINS` | `0` | `1` — не удалять архивы после установки |
| `JA3_CLEANUP_PARTIAL` | `1` | Удалить незавершённую распаковку в bottle при ошибке |
### Графика: DirectX 12 (обязательно на Mac)
JA3 на Windows использует **D3D12**. **DXVK-macOS** (только D3D10/11) **не заменяет** D3D12.
#### Корневая причина «Failed to initialize graphics subsystem» (RCA 2026-05-29, M1 Pro)
| Слой | Что происходит |
|------|----------------|
| **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** | Работало; **CrossOver удалён** (2026-06). |
| **Whisky + GPTK** | D3DMetal в GOG-Install bottle — см. `install-gptk-whisky.sh` |
Сообщения GOG API (`MatchmakingServers`, `Music`, `Game name not defined`) — **не причина** краша.
#### Канон запуска (2026-06)
```bash
bash ~/code/local_machine/scripts/games/gog/run-ja3.sh
```
Игра в bottle **GOG-Install** (Whisky). При D3D12-ошибках — GPTK в bottle ([JA3_RUNBOOK.md](JA3_RUNBOOK.md) §2).
### Запуск игры
```bash
bash ~/code/local_machine/scripts/games/gog/run-ja3.sh
```
Обход swap (тормоза, на свой риск):
```bash
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»:** установите GPTK и настройте D3DMetal в Whisky — см. [JA3_RUNBOOK.md](JA3_RUNBOOK.md) §2. **Не** запускать `JA3.exe` из Whisky Run без `start /d`.
### Итог на диске (после успеха на этой машине)
| До | После |
|----|--------|
| ~15 GB архивы в `~/Games` | архивы удалены |
| bottle ~1.4 GB | bottle **+~16 GB** (`GOG Games/Jagged Alliance 3`) |
| свободно ~10 GB | свободно **~12 GB** (архивы сняты, игра в bottle) |
---
## Скачивание (браузер на Mac)
1. https://www.gog.com/account → **Jagged Alliance 3**
2. **Windows**, язык → **Download offline backup game installers**
3. Скачать **все 5 частей** (`.exe` ~1 MB + четыре `.bin`) в одну папку, например `~/Games/`
---
## Альтернатива: один .exe без .bin
Если GOG отдал один большой `setup_jagged_alliance_3_*.exe` (без multipart):
```bash
bash ~/code/local_machine/scripts/games/gog/install-ja3-offline.sh ~/Downloads/setup_jagged_alliance_3_*.exe
```
В Wine тоже может упасть — тогда тот же **`install-ja3-innoextract.sh`**, положив единственный `.exe` в `JA3_GAMES_DIR` (без `.bin` innoextract возьмёт данные из exe).
---
## Чего не делать
| ❌ | ✅ |
|----|-----|
| `GOG_Galaxy_Jagged_Alliance_3.exe` web-stub | offline backup в `~/Games` |
| `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.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 |
---
## Связанные документы
- **[JA3_RUNBOOK.md](JA3_RUNBOOK.md)** — канон запуска, RCA 2829.05, антипаттерны
- [WINE_APPS_LAUNCH_RUNBOOK.md](WINE_APPS_LAUNCH_RUNBOOK.md) — §5 JA3
- [WINE_MAC_RUNBOOK.md](WINE_MAC_RUNBOOK.md) — §3.5
- [TROUBLESHOOTING.md](TROUBLESHOOTING.md) — GOG Inno / swap
- [GOG_GALAXY_7H_RCA.md](GOG_GALAXY_7H_RCA.md)