When something is wrong
Troubleshooting
Ordered roughly by how often each one turns out to be the real cause. Start at the top and work down — the first three sections account for most reports.
#Nothing happens at all
No windows open, nothing looks different, the game plays exactly as it always did. Work through these in order; each one rules out the layer beneath it.
-
Does BepInEx\plugins exist?
If not, BepInEx has never completed a run and no plugin can possibly load. Fix that first — nothing else on this page applies until it is sorted.
-
Are the DLLs actually in it?
Open
BepInEx\pluginsand confirm you can see the three files. Extracting an archive to your Downloads folder does not put anything in the game. -
Did the config files appear?
After one launch with the DLLs present,
BepInEx\configshould hold four files. If a plugin's.cfgis missing, that plugin did not load — see below. -
Is it just the hotkey?
If the config files are all there, the plugins are loaded and working, and the only problem is that the window will not open. Go to hotkeys.
#The menu key does nothing
This is the single most common report, and it is almost never the plugin.
Try the second key first
Every plugin has two. Press the alternate before doing anything else:
| Plugin | Opens with | Also opens with | Config file |
|---|---|---|---|
| Ungodly Liquidation AI v1.0.7 | F6 | Insert | com.stixsworldhd.ungodlyliquidationai.cfg |
| Ungodly Liquidation Gore & Graphics v1.2.0 | F7 | Insert | com.stixsworldhd.ungodlyliquidationgoregfx.cfg |
| Ungodly Liquidation Leveling v1.0.0 | F8 | Home | com.stixsworldhd.ungodlyliquidationleveling.cfg |
Something else has claimed your F-key
Screen recorders and overlays take F-keys as global hotkeys constantly, and they win because they register at the operating system level before the game ever sees the key. Bandicam, OBS, GeForce Experience, Discord and Steam's own overlay are all common culprits.
Either change that program's hotkey, or change the plugin's. In the config file:
## Key that opens and closes the configuration window.
## Write it as a plain key name, for example: F6, F7, Insert, Home, Backslash.
## Modifiers use a plus sign, for example: LeftControl + F6.
MenuKey = Backslash
## A second key that also opens the window.
MenuKeyAlternate = Insert
Keys away from the function row are much less likely to be taken — Insert,
Home, End, Pause and Backslash are all good
choices.
Confirm the plugin is reading your keyboard
Each plugin prints a heartbeat to the log at 1, 5 and 15 seconds saying which of its menu drivers are running and how many key presses it has seen. That is what distinguishes "the plugin is not loaded" from "something else has claimed your hotkey", and it is much faster than guessing.
Open BepInEx\LogOutput.log after launching and look for a line about
menu polling being live. If it is there, the plugin is running and reading input, and the key is
being intercepted before it arrives.
#One plugin will not load
Its config file never appears, and the others are fine.
| Cause | Check | Fix |
|---|---|---|
| The DLL was blocked by Windows | Right-click it, Properties, look for an Unblock checkbox | Tick it, click OK, relaunch |
| Antivirus quarantined it | Your antivirus protection history | Restore it and exclude the Liquidation folder |
| The same DLL is in two places | Both plugins\ and a subfolder under it |
Delete one copy — BepInEx refuses a duplicate plugin id |
| BepInEx is too old | BepInEx\core\BepInEx.dll version |
Needs 5.4.22 or newer |
| BepInEx 6 is installed | Version starts with 6 | Replace it with the newest BepInEx 5 release |
| Incomplete download | The DLL's size against the checksums page | Download it again |
If none of those apply, the log will name the reason. Search
BepInEx\LogOutput.log for the plugin's name and read the lines around
it.
#The window opens but nothing in it is clickable
Open the plugin's Diagnostics tab and find IMGUI passes per frame. It must be above 1.
Unity's immediate-mode GUI calls OnGUI once per event, not once per frame — layout,
repaint, mouse down, mouse up are all separate passes. A draw path limited to a single pass per
frame renders the window perfectly but drops the event passes, so clicks have nothing to land on.
If that figure reads exactly 1.00, the passes are being dropped and it is worth reporting with your
log attached.
#The mouse behaves oddly after closing a window
Closing should hand everything straight back: unit selection, hotkeys and screen-edge camera scrolling all resume immediately, and the cursor returns to exactly the state the game had it in.
The plugins do this by using the game's own ownership switch,
InputManager.BlockInput / UnblockInput, rather than fighting the game for
the cursor. Input is handed back first, so there is never a frame where neither side owns the
mouse, and then the recorded cursor state is restored rather than being forced to a default.
If edge scrolling has genuinely stopped, open and close the window once more — some game screens re-assert their own cursor state on transitions, and reopening re-establishes ownership cleanly. If it persists, that is a bug worth reporting with the log.
#Units run back and forth around obstacles
Four separate causes of this were found and fixed in AI v1.0.7, so the first thing to check is that you are on 1.0.7 and not an earlier build.
If it still happens on 1.0.7:
- Raise
RepathIntervalTicksto 30 or higher. It is now a cooldown on genuine repath events rather than a metronome, so raising it makes units commit harder to the route they already have. - Watch Searches run on the Diagnostics tab. It should climb far more slowly than it used to. If it keeps climbing steadily while units walk in a straight line, routes are being recalculated when they should not be, and that is worth reporting.
If units now feel too committed and are slow to react to a new threat, that is the same
dial in the other direction: lower RepathIntervalTicks to about 6 and raise
DangerAvoidance to 90.
#Blood renders as solid magenta, or not at all
Magenta in Unity means a shader could not be resolved. Gore & Graphics searches the game itself at startup for a shader that can draw transparent textured geometry, rather than assuming a particular one shipped in this build.
Open the Blood tab. It names the shader it picked and how it found it. If the automatic
choice is wrong, put an exact shader name in ShaderOverride in the config file.
If no suitable shader exists at all, ground blood switches itself off and says so rather than painting the map magenta — corpses, limbs and spray still work.
#A visual effect stopped happening
Drop AdoptionScope in the Coroutines tab by one level and see whether it
returns.
The plugin already falls back automatically per class: if an adopted coroutine throws, that class is handed back to Unity for the rest of the session and the reason is written to the log. So the log will usually name what happened before you have to go looking.
#Unlimited draw distance did nothing
Two different things cause this, and they look identical.
Distant terrain is still hidden behind atmospheric haze. Raising the view distance draws
more of the world, and then fog hides it again. Turn on DisableDistanceFog in the same
tab.
It never took effect. The Visibility tab shows the map measurement it used and the far clip actually applied, so you can see whether it applied at all.
If distant surfaces flicker or fight with each other instead, that is depth-buffer precision
running out, which is the inherent cost of a very large view distance rather than a bug. Turn off
UnlimitedDrawDistance and use the DrawDistance slider with a smaller
value.
#Fog of war will not turn off
It needs a live match. There is no VisibilityManager in the menus, so the option has
nothing to act on until you are actually in a game. The Visibility tab's status line says
exactly what it found.
The reveal also applies on the next simulation tick rather than instantly, so give it a moment.
#Performance dropped
In order of how much each one gives back:
| Setting | Where | Effect |
|---|---|---|
RenderScale | Graphics tab | By far the biggest single win in either direction |
CorpseShadowDistance → 0 | Gore tab | The biggest win inside the gore system |
ShadowDistance | Graphics tab | Large |
MaxCorpses | Gore tab | Moderate |
UnlimitedDrawDistance off | Visibility tab | Large when zoomed out |
The plugin also scales itself automatically: if your frame rate drops below the threshold it stops corpse shadows first, then stops accepting new corpses, then trims the oldest — and recovers as soon as the frame rate does. Everything postponable runs against a per-frame time limit of 1.2 ms by default, so a hundred simultaneous deaths produce bodies over the following second and a half rather than in one hitch.
#Working out which plugin is responsible
Every plugin has a MasterEnabled switch in section 01 of its config and in the
General tab of its window. Setting it to false makes the game render and behave exactly
as it does with that plugin uninstalled, without you having to move any files.
Turn them off one at a time until the symptom disappears. That tells you which plugin to mention when you report it, which is most of the work of diagnosing anything.
#Reporting something
Three things make a report actionable, and without them almost nothing can be diagnosed remotely:
-
Turn on verbose logging
VerboseLogin the General tab of whichever plugin is involved. -
Reproduce it
Then quit the game.
LogOutput.logis rewritten on every launch, so grab it before starting the game again. -
Send the log and a Diagnostics screenshot
BepInEx\LogOutput.log, plus a screenshot of the Diagnostics tab. Figures on that tab that contradict each other — blood areas above zero while blood marks stays at zero, for instance — point straight at the cause.
For movement problems specifically, a short clip is worth more than any amount of description, because it is the only way to distinguish routing behaviour from the game's own crowd steering.