Final tuned values baked in as defaults: HudScale=0.8, WorldLabelScale=0.8.
- install.sh gains METHOD=bepinex: installs BepInEx from vendor + the prebuilt
plugin, with a matching uninstall that leaves BepInEx/ alone (other mods may
depend on it). Success banner is now method-aware.
- Ship the prebuilt plugin DLL so users don't need a .NET SDK.
- Per-game README documenting why the camera is deliberately untouched
(orthographic, constant orthographicSize = already Hor+), the two-canvas UI
problem, tuning, and where the plugin log actually lives.
- Root README lists both games and both fix methods.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The in-game log showed 'World Canvas localScale (0,0,0) -> (0,0,0)'. Games hide
world-space UI by zeroing its scale; if that zero got cached as the baseline,
multiplying it would pin the canvas to zero permanently and the UI could never
reappear. Now skips canvases that are currently zeroed - both when capturing the
baseline and when applying - so hidden UI is left alone and picked up once the
game shows it again.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
BepInEx does not pick up external edits to a plugin's .cfg, so tuning values
while the game ran silently did nothing - the plugin kept the values loaded at
startup. Now watches the config file's mtime and calls Config.Reload() when it
changes, so edits apply within ~2s with no restart. Reload is wrapped in
try/catch so a malformed .cfg warns instead of spamming exceptions.
HUD adjustments now always log (not just under Verbose) with the resulting
scale, so it is obvious whether a value took effect.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Config-driven so values are tunable without recompiling or pasting console
scripts. Camera is deliberately untouched - it is orthographic with constant
orthographicSize, which is already correct Hor+ at 32:9.
Fixes the two UI families separately, each via the lever that actually works:
- HUD (ScreenSpaceOverlay/ScaleWithScreenSize): match=1 + referenceResolution.y
raised by HudScale, shrinking the HUD while giving the layout more room.
- World labels (WorldSpace): canvas transform localScale, because
CanvasScaler.scaleFactor is overwritten by HandleWorldCanvas every frame.
Baselines are cached per canvas so periodic re-apply never compounds.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Recon: Unity 6000.0.62f1, Mono backend (readable C# assemblies), URP +
Cinemachine, no DRM. No FOV logic in game code, so the horizontal-FOV lock is
a serialized camera setting - needs runtime inspection via BepInEx/UnityExplorer.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>