Install
Part 1 — Install BepInEx
Put the loader beside the game executable. This is the step people get wrong, so it gets the most detail.
BepInEx does not patch your game. It puts a file called winhttp.dll next to the
executable; Windows loads that file when the game starts because the game asks for a system library
of that name; BepInEx answers first, starts itself, loads your plugins, and then hands the real
request on. Nothing the game shipped with is edited, which is why uninstalling is just deleting
files.
Everything below follows from that one mechanism: the files have to be beside the executable, and Windows has to be willing to load them.
Find your game folder
The folder containing StreetsOfRogue.exe. Every other step is relative to this one.
In Steam: right-click Streets of Rogue in your library, then Manage › Browse local files. Explorer opens exactly where you need to be.
The default path looks like this, though yours will differ if you installed to another drive:
C:\Program Files (x86)\Steam\steamapps\common\Streets of Rogue\The screenshots in this guide come from a second library on another drive, which is just as valid:
F:\SteamLibrary\steamapps\common\Streets of Rogue\
You are in the right place when you can see StreetsOfRogue.exe,
UnityPlayer.dll, UnityCrashHandler64.exe and the
StreetsOfRogue_Data folder together in one listing. Keep this window open.
steamapps\common\ is the folder that contains game folders. If you can see
other games listed beside Streets of Rogue, you are one level too high. Go into the
Streets of Rogue folder itself.
Download the right BepInEx build
Windows, x64, version 5.4.x.
Take BepInEx_win_x64_5.4.23.5.zip from the
BepInEx releases page — the
downloads page has the direct link and explains how to pick the right
asset if a newer 5.4.x has shipped since.
The one thing worth repeating: the file name must contain win_x64 and the version must begin with 5.4. Not x86, not the IL2CPP build, not 6.0.0-pre.
Unblock the zip before you extract it
Sixty seconds here saves an hour of "BepInEx did nothing".
Windows tags files downloaded from the internet with a mark-of-the-web flag. That flag survives
extraction, and a flagged winhttp.dll may refuse to load into the game process — which
produces the most confusing possible symptom, because the game starts perfectly and simply behaves
as though you never installed anything.
Right-click the downloaded BepInEx_win_x64_5.4.23.5.zip › Properties.
If there is an Unblock checkbox at the bottom of the General tab, tick it and click
OK. If there is no checkbox, there is nothing to unblock and you are fine.
Or, in PowerShell, from wherever the zip is:
Unblock-File .\BepInEx_win_x64_5.4.23.5.zipDo the same for the mod archive while you are here — it is one command for the whole folder:
Get-ChildItem -Recurse | Unblock-FileExtract into the game folder
The contents go in — not the folder that contains them.
Open the zip, select everything inside it, and copy that into your game folder
beside StreetsOfRogue.exe. You are moving five things:
| Item | What it does |
|---|---|
winhttp.dll | The proxy. This is the piece that gets loaded by the game and starts everything else. About 26 KB. |
doorstop_config.ini | Tells the proxy what to launch and where to find it. Leave it alone; the defaults are correct. |
.doorstop_version | A one-line marker recording the Doorstop version (4.5.0). Its name starting with a dot is normal. |
changelog.txt | BepInEx's own release notes. Harmless, ignorable. |
BepInEx\ | A folder containing core\. The rest of its subfolders get built on first launch. |
Depending on how you extract, you can easily end up with
Streets of Rogue\BepInEx_win_x64_5.4.23.5\winhttp.dll instead of
Streets of Rogue\winhttp.dll. In that state absolutely nothing happens, because Windows
only looks for winhttp.dll in the executable's own folder.
The test is simple: after extracting, winhttp.dll and
StreetsOfRogue.exe must be visible in the same file listing. If they are
not, move the contents up one level and delete the empty wrapper folder.
Right after this step, your game folder should look like this:
Streets of Rogue\
├── BepInEx\
│ └── core\ (the only subfolder that exists so far)
├── MonoBleedingEdge\
├── StreetsOfRogue_Data\
├── .doorstop_version
├── changelog.txt
├── doorstop_config.ini
├── StreetsOfRogue.exe
├── UnityCrashHandler64.exe
├── UnityPlayer.dll
└── winhttp.dll
Steam extras such as Character Pack\, Soundtrack\ and
Making of Streets of Rogue\ may also be present depending on what you own. They are
unrelated to modding — leave them exactly as they are.
Steam Deck and Linux only — set the launch option
Skip this on Windows.
Proton needs to be told to prefer BepInEx's winhttp.dll over Wine's built-in one.
Right-click the game in Steam › Properties › General › Launch Options
and paste:
WINEDLLOVERRIDES="winhttp=n,b" %command%Use the Windows x64 BepInEx package under Proton — not the Linux package.
BepInEx is installed but has never run. Nothing has been generated yet, and the
BepInEx folder currently holds only core\. That is exactly right.
Part 2 starts the game once and confirms the loader attached.