Ungodly AI Two Point Museum · Install Guide

Conservation & Repair

Troubleshooting & Conservation

When something doesn’t load, the answer is almost always in the log. This page starts with how to read it, then walks every common symptom — split by the phase it happens in — straight to its fix.

🔎Always start here: read the log

Nearly every problem is diagnosable from one file:

The one file to check first
<game>\Two Point Museum\BepInEx\LogOutput.log

Open it in any text editor after launching. Two quick reads tell you almost everything:

  • Search for Chainloader started → BepInEx itself is loading. If this line is absent, the loader never ran (a Phase 1 problem).
  • Search for Ungodly → the mod is loading. Seeing “…is online. Enjoy the chaos!” means it's fully live.

Keep that line of reasoning in mind as you scan the symptoms below.

The game launches normally, but nothing about BepInEx happens — no console, no log, no folders

BepInEx isn't being injected at all. In order of likelihood:

  • Files in the wrong place. winhttp.dll, dotnet\ and BepInEx\ must sit in the same folder as TPM.exe — the game root. If you extracted into a subfolder (e.g. a folder named after the archive), move the contents up one level. Compare against Plate I.
  • You launched the wrong exe. Launch the game so that TPM.exe in the modded folder is what actually runs (via Steam, or the exe directly). A different copy/install won't have BepInEx.
  • Antivirus removed winhttp.dll. A proxy DLL beside a game exe is a common false-positive. Check quarantine; restore it and add an exclusion for the game folder.

After fixing, you should get a BepInEx\ with logs in it on the next launch (and the full set of subfolders — see Plate II).

I installed BepInEx but it's the wrong one — the mod never loads

This mod requires BepInEx 6 (IL2CPP, x64) — the bleeding-edge IL2CPP line, target 6.0.0-be.784. It will not load on:

  • BepInEx 5 — that's the Mono line; the plugin targets the Il2CppInterop runtime and won't bind.
  • BepInEx 6 Mono / NetLauncher — wrong flavour; you need the Unity.IL2CPP x64 build.
  • The wrong architecture — must be x64.

Use the build bundled with this guide — it's already configured for Two Point Museum (BepInEx 6 IL2CPP — configured for Two Point Museum) — and you're guaranteed the right one with nothing to set up. Tell-tale: a correct IL2CPP install produces an interop\ folder inside BepInEx\ after the first run — BepInEx 5 never does.

BepInEx loads, but there's no interop\ folder — and the mod is ignored

The Il2Cpp interop assemblies are generated on the first launch, and the mod is built against them — without interop\ it can't load. Fix:

  • Launch the game once with BepInEx installed but before adding the mod, and let it sit at the main menu for a minute. BepInEx writes interop\ and cache\ during this run.
  • Watch LogOutput.log for interop/“generating” activity; the first run is slower than normal because of this.
  • Quit, confirm BepInEx\interop\ now exists (Plate II), then add the plugin.

If the first run crashes before generating interop, that's usually the wrong BepInEx flavour — see the question above.

The game crashes on launch only when BepInEx is present

Work through these:

  • Incomplete extraction. The bundled dotnet\ runtime must be present and complete. Re-extract the loader archive and confirm dotnet\ sits in the game root next to winhttp.dll.
  • Wrong flavour. A Mono BepInEx forced onto an IL2CPP game can crash on startup — use the IL2CPP build.
  • Overlays / other injectors. Temporarily disable other tools that also inject (some overlays, recording hooks) to isolate the conflict.
  • Verify game files. In Steam, verify integrity once to rule out a damaged base install, then re-add BepInEx (verifying won't remove your BepInEx files, but will replace any modified game files).

Read the tail of LogOutput.log and ErrorLog.log — the last lines usually name the failing component.

BepInEx works (I see its console/log) but the mod isn't picked up — “0 plugins loaded”

BepInEx is fine; it just isn't finding the plugin. Check:

  • Wrong folder. StixsworldHD.UngodlyAI.TPM.dll must be inside BepInEx\plugins\ (or a subfolder of it) — not loose in the game root, BepInEx\, core\ or config\. Compare against Plate III.
  • Renamed or shortcut. It must be the real .dll, not a shortcut and not renamed to .dll.txt by a browser. Confirm the type reads “Application extension”.
  • Blocked file. Windows can mark downloads as blocked — right-click the DLL → Properties → tick Unblock if shown → Apply.
  • Interop missing. If BepInEx\interop\ doesn't exist, the plugin can't bind — do the first-run step in Desk A above.

When it's right, the log shows Loading [StixsworldHD Ungodly AI… 1.0.3] followed by the “Enjoy the chaos!” line, and the chainloader reports 1 plugin loaded.

The log shows the plugin loaded, but no .cfg appears in config\

The config is written on the first run with the plugin present, so:

  • Make sure you actually launched the game after copying the DLL in — not before.
  • Look in the right place: BepInEx\config\, not plugins\. The file is com.stixsworldhd.tpm.ungodlyai.cfg (see Plate IV).
  • If config\ isn't writable (game installed somewhere locked-down), run once so the folder can be created, or move the game to a normal library location.

You can also drop the bundled .cfg into config\ yourself to start from the documented defaults — the plugin will use it as-is.

Everything loads, the log says it's online, but I see no difference in-game

It's loaded — it's a tuning question:

  • Master switch. Confirm ModEnabled = true (or MOD ON in the F6 window). With it off, the overhaul is intentionally dormant.
  • Everything at 1.0. Defaults are deliberately close to vanilla so nothing breaks on day one. Open the window and change a few multipliers — the effect is immediate.
  • Directors are off by default. The Difficulty Director ships on Off, and the helpers act only when there's pressure/crime/underpaid staff. Enable them in their sections to see them work. See Configuration.
F6 does nothing — the control panel won't open

Check the log for [GUI] OnGUI is live:

  • If that line is present, the GUI is ticking and your key is just bound to something the game also uses. Rebind it — set ConfigMenuHotkey = F7 (or any free key) in the .cfg, or use the panel's Rebind button. Full steps on Configuration.
  • If that line is absent, the plugin didn't actually load — this is a loading problem, not a hotkey one. Go back to Desk B above.
The panel text looks overlapped or cramped

That was fixed in the 1.0.2/1.0.3 readability passes (descriptions are now measured with the font's real metrics, and the title bar is taller with title and subtitle on separate lines). Make sure you're on v1.0.3 — the bundled download is current. Replace an older DLL and relaunch.

Will this corrupt or break my save?

No. The mod is save-safe: it never serialises anything into your save and only changes live, in-memory values. Removing the DLL (and optionally the .cfg) returns the game to stock behaviour on the next launch, with your save intact. Because every lever is resolved by name at runtime and guarded, a future game patch that renames or removes one system simply disables that lever while the rest keep working.

Does it work with DLC and other mods?

It targets Two Point Museum base game and all DLC — the hooked systems are core managers present across content. It runs alongside other BepInEx 6 plugins unless one fights for the same exact values (e.g. another mod that also rewrites guest need decay or staff salaries). If two mods clearly contest one number, expect the last writer each frame to win — disable one of them for that value.

How do I cleanly uninstall it?

Delete StixsworldHD.UngodlyAI.TPM.dll from BepInEx\plugins\ (and optionally com.stixsworldhd.tpm.ungodlyai.cfg from config\). To remove BepInEx entirely as well, delete winhttp.dll, doorstop_config.ini, .doorstop_version, changelog.txt, the dotnet\ folder and the BepInEx\ folder from the game root. Your save is unaffected either way.

🧰Still stuck? Gather these before asking

If none of the above fixes it, collect this and it'll be diagnosable at a glance: your full BepInEx\LogOutput.log; a screenshot of your game root (like Plate I) and your BepInEx\plugins\ folder; the exact BepInEx build you used; and the mod version. Almost every report comes down to one of: files in the wrong folder, the wrong BepInEx flavour, or a skipped first-run interop generation.

🗺️

Re-check against the screenshots

The Directory Map shows exactly what a correct install looks like at each checkpoint.

Open the Directory Map →

↩️

Start the install over

Sometimes the cleanest fix is a fresh pass through Phase 1.

Back to Phase 1