3.6 KiB
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:
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:
${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 withumu-run "", and install optional Proton winetricks verbs withumu-run winetricks.get_umu_bottle <game-id>: exportWINEPREFIX,GAMEID,STORE, andDISPLAY.run_umu_game <windows-path>: convert the Windows path to a Unix executable path in the UMU prefix and run it throughumu-run.add_umu_launcher <game-id> <windows-path> [flags...]: append aumu|...launcher line.
Shadow Line
Shadow Line uses the generic UMU backend with umuGameId=shadow-line. Its installer will:
- Require
umu-run. - Download
shadowrine_fullvoice3.171.exeandlanguage_en.dat. - Create/select the Shadow Line UMU prefix.
- Apply
bcryptprimitives=native,builtin. - Apply per-app
win8forplay_sr.exe. - Run the installer silently with UMU.
- Stop any leftover Wine/Proton processes for the prefix.
- Copy
language_en.datintoSystemData. - Copy AGM's
nvdaControllerClient32.dlland/ornvdaControllerClient64.dllover any matching game DLLs found in the Shadow Line install. - 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 -non changed shell scripts.shellcheckon changed Bash files.- A focused install-path dry run where possible without launching the interactive game.
- Confirmation that Shadow Line creates a
umu|...|Shadow Linelauncher entry and that the UMU prefix containsplay_sr.exe,language_en.dat, registry settings, and replacement NVDA DLLs when matching DLLs exist.