UngodlyLiquidation RTS manual

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.

  1. 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.

  2. Are the DLLs actually in it?

    Open BepInEx\plugins and confirm you can see the three files. Extracting an archive to your Downloads folder does not put anything in the game.

  3. Did the config files appear?

    After one launch with the DLLs present, BepInEx\config should hold four files. If a plugin's .cfg is missing, that plugin did not load — see below.

  4. 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:

PluginOpens withAlso opens withConfig file
Ungodly Liquidation AI v1.0.7F6Insertcom.stixsworldhd.ungodlyliquidationai.cfg
Ungodly Liquidation Gore & Graphics v1.2.0F7Insertcom.stixsworldhd.ungodlyliquidationgoregfx.cfg
Ungodly Liquidation Leveling v1.0.0F8Homecom.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:

BepInEx\config\com.stixsworldhd.ungodlyliquidationai.cfg
## 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.

CauseCheckFix
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 RepathIntervalTicks to 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:

SettingWhereEffect
RenderScaleGraphics tabBy far the biggest single win in either direction
CorpseShadowDistance → 0Gore tabThe biggest win inside the gore system
ShadowDistanceGraphics tabLarge
MaxCorpsesGore tabModerate
UnlimitedDrawDistance offVisibility tabLarge 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:

  1. Turn on verbose logging

    VerboseLog in the General tab of whichever plugin is involved.

  2. Reproduce it

    Then quit the game. LogOutput.log is rewritten on every launch, so grab it before starting the game again.

  3. 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.