Install BepInEx
Extract five items into your game folder, beside StreetsOfRogue.exe. This is the step that goes wrong most often, so it gets a whole page.
A BepInEx 5 plugin for Streets of Rogue
Stock Streets of Rogue gives you a genuinely clever goal-arbitration brain sitting on top of senses, targeting and combat that are much thinner than it deserves. This replaces what sits underneath — sight that reacts to what you are doing, hearing that tells a gunshot from a footstep, cover, morale, friendly-fire checks, and gangs that arrive as gangs. Then it hands you 354 switches for it.
Ungodly Streets of Rogue AI v1.0.0 is a single plugin DLL that replaces how every character in Streets of Rogue senses, thinks, decides and fights. It runs on BepInEx 5 — the standard mod loader for Unity games that use Mono — and it does not modify a single file the game shipped with.
The install is three short parts. Most people are done in five minutes; the guide is long because it explains what each part is doing, so that when something looks wrong you can tell which part went wrong instead of starting over.
Before any of that, here is what you are actually installing — a live run with the plugin in place. The see it in action page breaks down what to watch for while it plays.
WatchStreets of Rogue with my Ungodly Streets of Rogue AI v1.0.0Extract five items into your game folder, beside StreetsOfRogue.exe. This is the step that goes wrong most often, so it gets a whole page.
Start the game and quit. BepInEx builds its folders on that first run, and its log tells you whether it attached.
One DLL into BepInEx\plugins\. Launch, press F5, and the panel opens.
Click to enlarge · 1920 × 1080
Streets of Rogue's stock AI is a goal-arbitration system: BrainUpdate.GoalArbitrate()
scores 38 goal types by desirability every cycle, and the winner becomes that character's plan.
That architecture is genuinely good, and this plugin leaves it alone. What sits underneath
it is much thinner, and that is what gets replaced.
| Stock behaviour | What this does instead |
|---|---|
| Everyone sees through a flat 96° cone at a fixed 13.44 unit range, no matter what you are doing | Sight weighted by distance, by whether you are moving, sprinting or crouched, by whether you just fired, and by how dark it is — with a hard cap so bonuses cannot stack into level-wide vision |
| Hearing is one flat number | Gunshots, explosions and footsteps carry different distances, with configurable falloff through walls |
| Characters flip instantly between oblivious and hostile | A real middle state — suspicion builds and decays, so you can back out of being noticed |
| Targets picked by proximity | Seven policies (closest, first seen, random, highest threat, weakest, most exposed, biggest grudge) with focus-fire caps and switch hysteresis |
Fight-or-flight is teamSize × hate × health ÷ distance, with no notion of morale or of how dangerous you look |
The same formula, then adjusted by temperament, morale, threat assessment and group strength |
| Guns roll a flat percentage per cycle and fire the instant it passes — the characteristic metronome | Bursts, pauses between bursts, an aim-up delay before the first round, and a check that a friend is not standing in the line |
| No friendly-fire check at all — a police squad will shoot each other in the back | Angular line check against every ally closer than the target |
| No cover logic whatsoever — people stand in open doorways trading shots | Cover search, hide and peek cycles, and relocation when cover stops facing the threat |
| No morale, no blocking, no dodging, no anti-stuck for characters on foot | All four, as Emerald-style combat actions |
| A gang of six trickles into a fight one at a time | GetTeamSize widened to count allies who would respond, so groups arrive as groups |
A fixed slice of the character list is refreshed each cycle, sized by the frame budget — so a level with 300 characters costs the same per frame as one with 30, and individual characters simply think slightly less often. Nobody is ever frozen: attention scales the effective time step rather than skipping the update, because skipping outright is what leaves NPCs stuck mid-stride when you round a corner. Live cost figures are on the status readout at the top of the panel.
StreetsOfRogue.exe..rar files: 7-Zip, WinRAR or NanaZip.Full detail is on the requirements page. If you already have BepInEx 5 installed for another mod, skip straight to Part 3.