# Burglin' Gnomes — UltraWide Fix ✅ **Confirmed working at 5120×1440 (32:9) on Proton.** - **Engine:** Unity 6 (6000.0.62f1), Mono backend, URP + Cinemachine - **Steam AppID:** 3844970 - **Executable:** `Gnomium.exe` - **Method:** BepInEx plugin (no DRM, no memory patching needed) ## What it fixes — and what it deliberately doesn't **The camera is already correct.** It's *orthographic* with a constant `orthographicSize` of 5.0, so a wider display genuinely shows more world (visible width 17.8 → 35.6 going 16:9 → 32:9). That's textbook Hor+, and this fix does not touch it. `fieldOfView` reads 60 at every resolution simply because orthographic cameras don't use it — a red herring if you go looking. **The problem is entirely UI**, in two separate places needing two different levers: | Canvas | Problem | Lever | |---|---|---| | HUD (`ScreenSpaceOverlay` + `ScaleWithScreenSize`) | Ships `matchWidthOrHeight = 0.453` (width-biased). At 5120px that yields scaleFactor **1.948** — a ballooned HUD with overlapping bottom/centre text. | `match = 1` (scale by height) + raise `referenceResolution.y`, shrinking the HUD *and* giving the layout more logical room | | In-world labels (`WorldSpace`, e.g. `NamePlate`) | At 32:9 you see twice as much world, so far more labels are on screen and can collide | Canvas `transform.localScale` | > **Gotcha:** `CanvasScaler.scaleFactor` does nothing on a WorldSpace canvas — `CanvasScaler.HandleWorldCanvas()` overwrites it with `dynamicPixelsPerUnit` every frame. Scaling the transform is the only thing that works. ## Install (Linux / Proton) ```bash ./install.sh BurglinGnomes ``` Then **required** — Steam → Properties → Launch Options: ``` WINEDLLOVERRIDES="winhttp=n,b" %command% ``` Without it Proton ignores BepInEx's `winhttp.dll` loader and the plugin never runs. ## Install (Windows) Extract the release zip into the game folder (next to `Gnomium.exe`). No launch option needed. ## Tuning Config is generated on first launch: ``` /BepInEx/config/com.programmingpug.burglingnomes.ultrawidefix.cfg ``` **Edits apply live (~2s) — no restart.** BepInEx doesn't reload config on its own, so the plugin watches the file's mtime and calls `Config.Reload()` itself. | Setting | Default | Notes | |---|---|---| | `HudScale` | `0.8` | HUD size. Lower = smaller HUD *and* more layout room (cures overlapping text) | | `WorldLabelScale` | `0.8` | In-world nameplate size | | `MatchWidthOrHeight` | `1.0` | **Leave at 1.** Lower re-introduces width scaling and cramps the layout vertically | | `DesignHeight` | `1080` | The game's design height; don't change | | `Verbose` | `false` | Log every canvas adjustment | `HudScale` → resulting HUD scale at 5120×1440 (stock is 1.333): | HudScale | 1.0 | 0.85 | **0.8** | 0.6 | |---|---|---|---|---| | scale | 1.333 | 1.133 | **1.067** | 0.800 | ## Verifying it works ``` /BepInEx/LogOutput.log ``` That's the plugin's log — **not** UnityExplorer's in-game Log window, which only shows Unity `Debug.Log`. You should see: ``` Burglin' Gnomes UltraWide Fix 1.0.0 loaded. HUD 'Canvas' ref (1920.00, 1080.00) -> (1920.00, 1350.00) match=1 => scale=1.067 World 'NamePlate' localScale (1.00, 1.00, 1.00) -> (0.80, 0.80, 0.80) ``` If a line is absent, that adjustment didn't happen. ## Uninstall ```bash ./install.sh BurglinGnomes uninstall ``` Removes the loader and plugin. `BepInEx/` is left in place in case other mods use it. ## Building the plugin from source Prebuilt `BurglinGnomes.UltraWideFix.dll` ships here, so this is only needed if you change it: ```bash cd plugin dotnet build -c Release -p:GameDir="/path/to/Burglin' Gnomes" ``` Requires the .NET SDK; it references the game's own assemblies and redistributes none of them.