Move static service docs into services/<name>.md companion files
Applies the new write_readme companion-doc convention to ai-stack, paintplus, and kyber-launcher: install-time-invariant content (usage walkthroughs, service tables, troubleshooting) moves out of the .sh heredocs into sibling services/<name>.md files, leaving only genuinely install-specific content inline. - services/paintplus.md: config/cloud/GPU/ai-stack-backend/update/Caddy sections, picked up automatically via write_readme's companion-doc support. - services/ai-stack.md: roles, GPU switcher, service URLs, cloud LLM provider setup, update, Caddy. ai-stack.sh can't use write_readme directly (its POST-INSTALL-NOTES.md filename deliberately avoids colliding with the vendored app's own README.md in the same directory), so it appends the companion file manually. - services/kyber-launcher.md: the full SWBF2 (2017) + Kyber walkthrough, moved out of the root README's "Gaming scripts" section (which now just points here). kyber-launcher.sh now calls write_readme to deploy it to ~/.local/share/kyber/README.md, fixing a stale in-script pointer to a README section that no longer exists.
This commit is contained in:
@@ -259,115 +259,14 @@ The wizard shows the detected OS in the header and warns on unknown versions.
|
||||
|
||||
## Gaming scripts
|
||||
|
||||
Standalone scripts in `scripts/` for gaming setup — not part of the main
|
||||
wizard, run separately.
|
||||
Gaming setup walkthroughs live next to their service files, not here — see
|
||||
`services/<name>.md` (e.g. [`services/kyber-launcher.md`](services/kyber-launcher.md)
|
||||
for SWBF2 (2017) + Kyber: playing, hosting, and troubleshooting). It's
|
||||
appended automatically to `~/.local/share/kyber/README.md` when you run
|
||||
`sudo ./setup.sh kyber-launcher`.
|
||||
|
||||
### Star Wars Battlefront II (2017) + Kyber
|
||||
|
||||
**`scripts/setup-swbf2-linux.sh`** — Configure SWBF2 on native Linux Steam
|
||||
(Proton, controller, performance tweaks).
|
||||
|
||||
**`scripts/setup-kyber-linux.sh`** — Install the native Linux Kyber launcher.
|
||||
|
||||
Kyber is the community multiplayer replacement for SWBF2 after EA shut down
|
||||
official servers in 2022. It went open-source (GPL) in January 2026.
|
||||
|
||||
**The correct approach is a native Linux AppImage** — not Wine or Proton for
|
||||
the launcher itself. The AppImage is maintained at:
|
||||
https://github.com/simonlinuxcraft/kyber-linuxport-unofficial
|
||||
|
||||
```bash
|
||||
chmod +x scripts/setup-kyber-linux.sh
|
||||
./scripts/setup-kyber-linux.sh
|
||||
```
|
||||
|
||||
The script downloads the latest AppImage, installs a desktop entry, and
|
||||
creates a `kyber` command in `~/.local/bin`.
|
||||
|
||||
**Every time you want to play:**
|
||||
1. Open **Steam** (must be running for library validation) — do NOT click Play on SWBF2
|
||||
2. Launch **Kyber** (`kyber` or from the app menu)
|
||||
3. In Kyber: join a server (HOME) or create one (HOST)
|
||||
4. Kyber/Maxima launches SWBF2 via its own bundled GE-Proton — wait 1-3 minutes
|
||||
5. If the SWBF2 window appears but won't focus: press **Alt+Tab** or click its
|
||||
taskbar entry — this is normal when the game is launched by a wrapper process
|
||||
|
||||
Do NOT launch SWBF2 from Steam directly. If Steam's SWBF2 is already running
|
||||
when Kyber starts, kill it first — Kyber cannot inject into a Steam-launched instance.
|
||||
|
||||
**If Kyber says "Game Not Found":**
|
||||
Click **SET GAME FOLDER** and point it to the SWBF2 install directory.
|
||||
Find it with:
|
||||
```bash
|
||||
find ~/.steam/steam/steamapps -name "starwarsbattlefrontii.exe" 2>/dev/null | head -1 | xargs dirname
|
||||
```
|
||||
Paste that path into the SET GAME FOLDER dialog.
|
||||
|
||||
**If Origin Error: "title installed in language not entitled to play":**
|
||||
Maxima's Wine prefix is missing locale registry keys — its setup commands fail silently on some systems. Fix:
|
||||
```bash
|
||||
cat > /tmp/swbf2_fix.reg << 'EOF'
|
||||
Windows Registry Editor Version 5.00
|
||||
[HKEY_LOCAL_MACHINE\Software\Origin Games\1035052]
|
||||
"locale"="en_US"
|
||||
"displayname"="STAR WARS Battlefront II"
|
||||
[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Origin Games\1035052]
|
||||
"locale"="en_US"
|
||||
"displayname"="STAR WARS Battlefront II"
|
||||
[HKEY_LOCAL_MACHINE\Software\Electronic Arts\EA Desktop]
|
||||
"InstallSuccessful"="true"
|
||||
[HKEY_LOCAL_MACHINE\Software\Origin]
|
||||
"InstallSuccessful"="true"
|
||||
"ClientPath"="C:\\Windows\\System32\\conhost.exe"
|
||||
[HKEY_CURRENT_USER\Control Panel\International]
|
||||
"Locale"="00000409"
|
||||
"LocaleName"="en-US"
|
||||
"sLanguage"="ENU"
|
||||
EOF
|
||||
WINEPREFIX=~/.local/share/maxima/wine/prefix wine64 regedit /tmp/swbf2_fix.reg
|
||||
```
|
||||
Then restart Kyber and try again.
|
||||
|
||||
**First run (one-time setup):**
|
||||
1. Click **EA Account** → log in with your EA credentials in the browser
|
||||
2. Click **Skip** on Nexus Mods (optional, only needed for mods)
|
||||
3. EA login is cached — you stay logged in across sessions
|
||||
|
||||
**Hosting a private server with bots:**
|
||||
- HOST → pick maps/modes → set a **name** and **PASSWORD** → Start Server
|
||||
- Share the server name + password with friends; they search by name in HOME
|
||||
- Bot count: in the HOST panel right side → **AUTOPLAYERS** section →
|
||||
set **BOTS TEAM 1** and **BOTS TEAM 2** (e.g. 4 each) → click **UPDATE SERVER**
|
||||
- Bot difficulty: the **BOT DIFFICULTY** slider (RECRUIT → OFFICER → KNIGHT → MASTER)
|
||||
- After the game loads you can also update settings live and hit UPDATE SERVER again
|
||||
|
||||
**Requirements:**
|
||||
- SWBF2 (Steam AppID 1237950) installed via Steam
|
||||
(Kyber manages its own GE-Proton for launching the game)
|
||||
- glibc 2.38+ — Ubuntu 24.04+, Fedora 38+, SteamOS 3.7+
|
||||
- EA account (free) at ea.com
|
||||
- Unprivileged user namespaces enabled (Ubuntu 24.04 restricts these by default):
|
||||
```bash
|
||||
sudo sysctl -w kernel.unprivileged_userns_clone=1
|
||||
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
|
||||
```
|
||||
The setup script applies this automatically when run with sudo and saves it
|
||||
to `/etc/sysctl.d/99-userns.conf` to persist across reboots.
|
||||
Without this fix Kyber fails with: `bwrap: setting up uid map: Permission denied`
|
||||
|
||||
**If SWBF2 crashes immediately when a level starts loading:**
|
||||
Likely a DXVK rendering issue, especially on integrated GPUs (Intel Iris Xe, etc.).
|
||||
Disable fullscreen and HDR in the game settings file — the game writes this on first run:
|
||||
```bash
|
||||
PROFILE=$(find ~/.local/share/maxima -name "ProfileOptions_profile" 2>/dev/null | head -1)
|
||||
sed -i 's/GstRender.FullscreenEnabled 1/GstRender.FullscreenEnabled 0/' "$PROFILE"
|
||||
sed -i 's/GstRender.EnableHDR 1/GstRender.EnableHDR 0/' "$PROFILE"
|
||||
```
|
||||
Then restart Kyber and try hosting/joining again.
|
||||
|
||||
**What does NOT work:**
|
||||
- Running the Windows `kyber_launcher.exe` under Wine/Proton: EA's auth
|
||||
callback uses the `eadesktop://` URI scheme which has no Linux handler,
|
||||
and Wine's cmd.exe crashes on long OAuth URLs anyway
|
||||
- Running Kyber inside Wolf/Games-on-Whales: the Docker double-sandbox
|
||||
blocks the user namespace clone that Proton requires
|
||||
Also in `scripts/` (standalone, not part of the main wizard):
|
||||
`setup-swbf2-linux.sh` (native Steam/Proton fixes for the base game),
|
||||
`setup-kyber-linux.sh` (standalone equivalent of the `kyber-launcher`
|
||||
service), and Wolf/Games-on-Whales container variants
|
||||
(`setup-swbf2-wolf.sh`, `setup-kyber-wolf.sh`).
|
||||
|
||||
Reference in New Issue
Block a user