Ungodly Streets of Rogue AI v1.0.0

Start here

Requirements and compatibility

What you need before you start, and why this guide picks the BepInEx build it does.

gameUnity · Mono · 64-bitloaderBepInEx 5.4.x x64diskunder 2 MBadminnot required

What you need

The game Streets of Rogue for PC (Steam app 512900). GOG, Epic and Humble copies of the Windows build work the same way — only the folder path differs. The Switch, PlayStation and Xbox versions cannot be modded at all.
Mod loader BepInEx 5.4.x, Windows, x64. The build this guide uses is 5.4.23.5. Any later 5.4.x release works too.
Operating system 64-bit Windows 10 or 11. Linux and Steam Deck work through Proton with one launch option — see below.
Archive tool Anything that opens .rar: 7-Zip, WinRAR or NanaZip. Windows Explorer cannot open RAR files on its own.
Disk space Under 2 MB for everything — BepInEx is about 624 KB zipped and the plugin is 291 KB.
Administrator rights Not needed, unless your Steam library sits somewhere protected such as C:\Program Files.
.NET runtime Nothing to install. BepInEx 5 runs inside the game's own Mono runtime, which ships with the game.

Why BepInEx 5, and why x64

BepInEx ships several builds and picking the wrong one is the single most common reason a mod silently does nothing. Two questions decide it, and your game folder answers both.

Mono or IL2CPP? — Mono, so BepInEx 5

Unity games are built either with Mono or with IL2CPP, and they need different BepInEx branches. You can tell which you have by looking for a MonoBleedingEdge folder next to the executable. Streets of Rogue has one, which means it is a Mono build, which means BepInEx 5 is the correct branch.

Do not use BepInEx 6

BepInEx 6 is a pre-release aimed mainly at IL2CPP games, and it does not load BepInEx 5 plugins. If you install it, UngodlyStreetsOfRogueAI.dll will sit in the plugins folder being ignored and the log will not mention it at all. The BepInEx team's own advice for new Mono games is to stay on 5.

32-bit or 64-bit? — 64-bit

The Windows build of Streets of Rogue is 64-bit only, and the presence of UnityCrashHandler64.exe in the game folder is the giveaway. Download the file whose name contains win_x64. The x86 build will load nothing and log nothing, because the proxy DLL cannot even be mapped into a 64-bit process.

Runtime facts for this game, confirmed against a stock install.
EngineUnity · Mono · 64-bit
ExecutableStreetsOfRogue.exe
Data folderStreetsOfRogue_Data\, containing Managed\Assembly-CSharp.dll
Correct BepInEx assetBepInEx_win_x64_5.4.23.5.zip
Doorstop version in that build4.5.0 (this is why you see a .doorstop_version file)

Compatibility

Other BepInEx plugins
Fine. Plugins live side by side in BepInEx\plugins\ and this one only patches AI decision points. The panel refuses to open while another Ungodly-suite panel is showing, so windows never stack on top of each other.
Existing saves and characters
Safe to add to or remove from a save at any time. The plugin writes nothing into your save files — all of its state lives in memory for the duration of a level, and all of its settings live in one config file under BepInEx\config\.
Co-op and online multiplayer
Supported, and deliberately conservative. Streets of Rogue is host-authoritative — every NPC decision gates on the server player — so this plugin makes decisions on the authority only and a client defers rather than making choices the host would overwrite a moment later. The panel's status readout shows live whether you are host or client.
The Character Pack, Soundtrack and Making Of extras
Untouched. Those Steam extras install as their own folders in the game directory and have nothing to do with modding — you will see them in the folder screenshots and can ignore them.
The tutorial, the level editor and the home base
The AI stands down automatically in all three, because the tutorial is scripted around characters behaving in specific ways at specific moments and level-editor testing needs to be repeatable. All three stand-downs are configurable on the Core › General tab.
Game updates
Streets of Rogue is stable, but if an update ever moves one of the methods this plugin binds to, that single hook fails, that one behaviour reverts to stock, and everything else keeps running. The Diagnostics tab names the failed hook. See Troubleshooting.

Linux, Steam Deck and Proton

Run the Windows build under Proton and use the Windows x64 BepInEx package — not the Linux one. Proton needs to be told to prefer the native winhttp.dll that BepInEx drops in, which is one launch option in Steam. Right-click Streets of Rogue › Properties › General › Launch Options, and paste:

Steam launch option — Proton / Steam Deck
WINEDLLOVERRIDES="winhttp=n,b" %command%

Everything else in this guide is identical, including the folder layout. The Steam Deck's own file manager can extract RAR archives; in Desktop Mode, Ark or the KDE archive tool will do it.

A word on antivirus

BepInEx works by placing a proxy winhttp.dll beside the game executable so that the game loads it at startup. That is a legitimate and very widely used technique, but it is also structurally similar to things malware does, so some antivirus tools flag it. If your scanner quarantines winhttp.dll, the game will simply start unmodded. Add the game folder to your exclusions and extract again.