Document UMU Proton backend design
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# UMU Proton Backend Design
|
||||
|
||||
## Goal
|
||||
|
||||
Add a general UMU/Proton backend to audiogame-manager so selected games can install and launch through `umu-run` with AGM-managed Proton prefixes. Shadow Line is the first supported game and should be installable, launchable, translated to English, and speech-capable without changing the existing Wine backend for other games.
|
||||
|
||||
## Scope
|
||||
|
||||
This change introduces generic UMU helpers and wires Shadow Line to use them. It does not migrate existing Wine games, add proton-voices, or reimplement `umu-launcher`. AGM depends on `umu-run` for Proton/runtime management because UMU handles Proton selection, Steam Runtime setup, prefix creation, protonfixes, and Proton winetricks routing.
|
||||
|
||||
## Architecture
|
||||
|
||||
Launcher entries gain a new backend value in the first `games.conf` field:
|
||||
|
||||
```text
|
||||
umu|c:\Program Files (x86)\GalaxyLaboratory\ShadowRine_FullVoice\play_sr.exe|Shadow Line|...
|
||||
```
|
||||
|
||||
The existing Wine values (`win64`, `win32`) continue to behave as they do now. When the backend is `umu`, launch setup uses a dedicated Proton prefix under:
|
||||
|
||||
```text
|
||||
${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/protonBottles/<game-id>
|
||||
```
|
||||
|
||||
The game id is supplied by the installer and stored in launcher flags, for example `export umuGameId=shadow-line`. Helpers will centralize backend behavior:
|
||||
|
||||
- `install_proton_bottle <game-id> [winetricks verbs...]`: create and select a UMU prefix, initialize it with `umu-run ""`, and install optional Proton winetricks verbs with `umu-run winetricks`.
|
||||
- `get_umu_bottle <game-id>`: export `WINEPREFIX`, `GAMEID`, `STORE`, and `DISPLAY`.
|
||||
- `run_umu_game <windows-path>`: convert the Windows path to a Unix executable path in the UMU prefix and run it through `umu-run`.
|
||||
- `add_umu_launcher <game-id> <windows-path> [flags...]`: append a `umu|...` launcher line.
|
||||
|
||||
## Shadow Line
|
||||
|
||||
Shadow Line uses the generic UMU backend with `umuGameId=shadow-line`. Its installer will:
|
||||
|
||||
1. Require `umu-run`.
|
||||
2. Download `shadowrine_fullvoice3.171.exe` and `language_en.dat`.
|
||||
3. Create/select the Shadow Line UMU prefix.
|
||||
4. Apply `bcryptprimitives=native,builtin`.
|
||||
5. Apply per-app `win8` for `play_sr.exe`.
|
||||
6. Run the installer silently with UMU.
|
||||
7. Stop any leftover Wine/Proton processes for the prefix.
|
||||
8. Copy `language_en.dat` into `SystemData`.
|
||||
9. Copy AGM's `nvdaControllerClient32.dll` and/or `nvdaControllerClient64.dll` over any matching game DLLs found in the Shadow Line install.
|
||||
10. Register the UMU launcher and show the first-run instructions for switching the game language to English.
|
||||
|
||||
Clipboard translation will not be used for Shadow Line in this implementation.
|
||||
|
||||
## Dependency Checks
|
||||
|
||||
`check_requirements` remains focused on core AGM dependencies, but UMU installers call a targeted `require_umu` helper so the error is clear at install time. The `-c` checkup report will also list `umu-run`: missing UMU is reported as required for Proton-backed games, not as a blocker for every Wine game.
|
||||
|
||||
## Error Handling
|
||||
|
||||
UMU helper functions fail fast with clear messages when `umu-run` is missing, prefix initialization fails, the installer does not produce the expected executable, or the translation file cannot be copied. Shadow Line should not be added to `games.conf` unless the expected executable exists.
|
||||
|
||||
## Verification
|
||||
|
||||
Verification will include:
|
||||
|
||||
- `bash -n` on changed shell scripts.
|
||||
- `shellcheck` on changed Bash files.
|
||||
- A focused install-path dry run where possible without launching the interactive game.
|
||||
- Confirmation that Shadow Line creates a `umu|...|Shadow Line` launcher entry and that the UMU prefix contains `play_sr.exe`, `language_en.dat`, registry settings, and replacement NVDA DLLs when matching DLLs exist.
|
||||
Reference in New Issue
Block a user