```
sudo pacman -S umu-launcher qt6-tools bubblewrap libarchive curl binutils
```
+- **Recommended:** an entropy daemon so the second instance doesn't stall on
+ startup waiting for randomness (see Troubleshooting):
+ ```
+ sudo pacman -S haveged && sudo systemctl enable --now haveged
+ ```
- Two Xbox controllers (any two distinguishable pads).
## Setup
| `./bl2-splitscreen.sh setup` | fetch Goldberg + build `p1/`, `p2/` |
| `./bl2-splitscreen.sh run` | launch both instances + place windows |
| `./bl2-splitscreen.sh tile` | re-place the two windows |
-| `./bl2-splitscreen.sh clean` | remove `p1/`, `p2/` (copies + saves + prefixes) |
+| `./bl2-splitscreen.sh kill` | terminate all running Borderlands 2 instances |
+| `./bl2-splitscreen.sh clean` | kill instances, then remove `p1/`, `p2/` (copies + saves + prefixes) |
Useful env overrides: `MODE=native|proton`, `DISPLAY_MODE=dual|split`,
`ISOLATION=bwrap|sdl`, `SPLASH_WAIT=<secs>`, `STAGGER=<secs>`.
`rm p{1,2}/game/Binaries/Win32/steam_settings/configs.main.ini`
- **They don't see each other on LAN:** Player 1 hosts first (the script staggers
launches). Discovery uses `custom_broadcasts.txt` (localhost).
+- **The 2nd instance takes ages to reach the menu — and speeds up when you jiggle
+ the mouse:** classic **entropy starvation** — something in the Wine/Goldberg/crypto
+ path blocks on `/dev/random` waiting for randomness, and mouse movement feeds the
+ pool. Fix it with an entropy daemon (also in Requirements):
+ `sudo pacman -S haveged && sudo systemctl enable --now haveged`.
+ The two instances also share a DXVK shader cache (`dxvk-cache/`) so the 2nd reuses
+ the 1st's shaders; if still slow, raise the launch gap: `STAGGER=45 ./bl2-splitscreen.sh run`.
+- **In-game "Quit Borderlands 2 → Yes" does nothing / hangs:** the game's shutdown
+ path stalls under Goldberg (Steam-networking cleanup, worse with offline mode).
+ Don't use in-game Quit — close with **`./bl2-splitscreen.sh kill`** or **Ctrl-C**
+ in the run terminal (safe: you're at the menu, nothing is saving).
+- **Ctrl-C / kill left something running:** `./bl2-splitscreen.sh kill` tears down
+ the whole game + Proton/Wine tree.
- **A window won't sit on its monitor:** re-run `./bl2-splitscreen.sh tile`; raise
`SPLASH_WAIT` if it fires before the game settles.
- **Reset everything:** `./bl2-splitscreen.sh clean` (removes copies + saves; the