Ungodly Streets of Rogue AI v1.0.0

Living with it

Troubleshooting

Sorted by what you are actually seeing on screen, not by what is technically wrong underneath.

symptoms12first stopLogOutput.logsecond stopDiagnostics tab

Start here, always

Two files answer nearly every question, and looking at them takes under a minute.

First

BepInEx\LogOutput.log

Rewritten on every launch. Tells you whether BepInEx started, which version it is, and how many plugins it loaded.

Second

The Diagnostics tab

Core › Diagnostics in the panel. Tells you which of the 7 hooks bound and which did not.

Nothing happens at all

The game runs normally and there is no BepInEx\config\ folder

BepInEx never started. The plugin is irrelevant here — fix the loader first. In order of likelihood:

  • Nested folder. Check that winhttp.dll is in the same listing as StreetsOfRogue.exe, not inside a BepInEx_win_x64_... folder. This is the most common cause by a wide margin.
  • Blocked files. Run Get-ChildItem -Recurse | Unblock-File in PowerShell from your game folder, then launch again.
  • Wrong architecture. The x86 build cannot load into this 64-bit game and will fail silently. The file name must contain win_x64.
  • Antivirus. Check your quarantine for winhttp.dll. Add the game folder to your exclusions and extract again.
  • Wrong game folder. If you have several Steam libraries, confirm you extracted into the one Steam actually launches — right-click the game › Manage › Browse local files to be sure.
  • Linux or Steam Deck. Without the WINEDLLOVERRIDES="winhttp=n,b" %command% launch option, Proton uses its own winhttp.dll and BepInEx never runs.

The log says 0 plugins to load

BepInEx is working. It just cannot see the DLL.

  • Confirm the file is at BepInEx\plugins\UngodlyStreetsOfRogueAI.dll — not in core\, not in patchers\, not loose in the game folder.
  • Turn on file extensions in Explorer (View › File name extensions) and check the name has not become UngodlyStreetsOfRogueAI.dll.txt.
  • Check the size is about 291 KB. A few KB means the download was truncated — fetch it again and verify the checksum.
  • Run Unblock-File on it.

The log's first line says BepInEx 6.0.0

Wrong branch. BepInEx 6 does not load BepInEx 5 plugins, so the DLL will be ignored with no error that names it. Delete winhttp.dll, doorstop_config.ini, .doorstop_version and the BepInEx\core\ folder, then install BepInEx 5.4.23.5 over the top. Your plugins\ and config\ folders can stay exactly where they are.

It loaded, but something is off

F5 does not open the panel

  • The key may have moved. The plugin checks its hotkey against the game's own bindings on startup and relocates if it collides. The live key is printed at the far right of the status readout — that is the authoritative answer.
  • You may not be in a run. Load into a level; the panel is not a main-menu feature.
  • Another Ungodly panel may be open. The panel refuses to open while another one from the suite is showing, so windows never stack. Close the other one.
  • Rebind it on Core › Interface once you are in.

The AI feels exactly like vanilla

  • Check the master switch is on — off means every character reverts to stock behaviour while the plugin stays loaded.
  • Check managed on the status readout. If it is 0, nobody is eligible: your scope is probably narrower than you remember, or you are in a location where the plugin stands down.
  • The tutorial, the level editor and the home base all stand down by default. Start a normal run.
  • The Streetwise preset is deliberately close to the stock game. Try Hardened, which is the intended experience.
  • Compare against the footage of a working install — it lists the specific behaviours to look for, which is more reliable than a general impression.

The panel reports failed patches

The header line reads something other than 7 ok / 0 failed. Open Core › Diagnostics, which names each hook and its result.

This is the designed response to a game update moving a method. Each hook is applied in its own try block, so one failure means that single behaviour reverts to stock while everything else keeps working — the game will not crash and your save is not at risk. Report the named hook and your game version, and keep playing in the meantime.

Frame rate drops on busy levels

  • Look at cost on the status readout first. frame is your total frame time and cycle is what the plugin itself used — if cycle is a small fraction of frame, the plugin is not your bottleneck.
  • Lower the budget percentage on the System tab. The rolling window narrows, characters think slightly less often, and nobody freezes — attention scales the time step rather than skipping updates.
  • Lower the per-frame line-of-sight cap. Raycasts dominate the cost of everything here, and a refused check simply falls back to the stock range.
  • Narrow the scope to EnforcersAndGangs. Fewer managed characters, most of the interesting behaviour intact.

The cursor or my controls feel wrong after closing the panel

This should not happen — closing restores the pointer through the game's own code path specifically to avoid it, and a force-release covers the case where the panel is destroyed while open. If you do hit it, note exactly what you were doing when the panel was open (dying, a level transition and cutscenes are the interesting cases) and report that. Pressing the hotkey to reopen and close the panel once more will normally clear it.

Pausing does nothing in multiplayer

Working as intended. Time scale is local, so pausing on one machine would only desynchronise you from the host. The panel refuses it rather than letting you break your own session.

My co-op partner sees different behaviour

Expected, and correct. Decisions are made on the authority — the host — and a client defers rather than making choices the host would overwrite a moment later. That means the host's settings are the ones shaping NPC behaviour in a session. Check the network line on the status readout to see which side you are on.

The game crashes

Establish whether it is this plugin at all: move UngodlyStreetsOfRogueAI.dll out of plugins\ to your desktop and play. If it still crashes, the plugin was not involved. If it stops, keep LogOutput.log from the crashing session — the last lines before it stops are the useful part — and report it with your game version and whether you were host, client or single-player.

After a game update

Steam updates replace game files but leave everything BepInEx added in place, so a normal update changes nothing about your install. Two things are worth checking afterwards:

  • winhttp.dll is still in the game folder. Steam's "verify integrity of game files" can remove it, since it is not a file Steam knows about.
  • The panel still reports 7 ok / 0 failed. If a hook now fails, the Diagnostics tab names it.

Reporting a problem

Five things make a report actionable, and without them it usually is not:

  1. The first three lines of BepInEx\LogOutput.log — they establish your BepInEx version.
  2. The patches figure from the status readout, and the Diagnostics tab if it is not 0 failed.
  3. Your plugin version (1.0.0) and game version.
  4. Host, client, or single-player.
  5. What you did, what you expected, and what happened instead.