Developer: Mursisru
Important
Close Nuclear Option before installing or updating NOLoader. PatchTool edits NuclearOption_Data\Managed\*.dll - a running game causes Win32 IO errors.
Warning
Remove conflicting loaders - uninstall BepInEx winhttp.dll / Doorstop bootstrap before deploying NOLoader. Only one winhttp.dll proxy may be active.
Caution
Do not mix DEV.SDK and RDYTU runtime in one game session - pick player (RDYTU) or mod-author (DEV.SDK) channel consistently.
Note
Two release zips: NOLoader-0.1.0-RDYTU.zip (players) and NOLoader-0.1.0-DEV.SDK.zip (mod authors with F10/F11 overlay).
Standalone mod loader for Nuclear Option (Unity Mono). Replaces BepInEx for new mods: lightweight native bootstrap, declarative mod.json, Mono.Cecil IL patches, and layered validation gates — without Harmony at runtime.
| Channel | Audience | Version (current) |
|---|---|---|
| RDYTU | Players, optimized runtime | 0.1.0 Build RDY1R6 |
| DEV.SDK | Mod authors, full tooling | 0.1.0 Build DEV1PM19 |
GitHub release: v0.1.0 — two zip assets: NOLoader-0.1.0-RDYTU.zip (player) and NOLoader-0.1.0-DEV.SDK.zip (mod authors).
- Features
- Architecture overview
- RDYTU vs DEV.SDK
- Requirements
- Installation
- Game folder layout
- Configuration
- Using mods
- Building from source
- Scripts
- Documentation index
- Troubleshooting
- Migration from BepInEx
- Native
winhttp.dllproxy — hooks Mono init before game assemblies load (no Doorstop dependency). - Declarative mods — each mod is a folder with
mod.json+ DLL; optional Cecil patches with signature hashes (Gate L2). - Load stages —
PreMenu,MainMenu,Missionwith dependency ordering. - Mono.Cecil patching — Prefix / Postfix / PrefixSkip; offline PatchTool + runtime mod patches.
- Four validation gates — manifest (L1), IL signatures (L2), registry SO (L3), mission block (L4).
- NOModRegistry — inject custom encyclopedia entries without new ScriptableObject files on disk.
- Two build channels — RDYTU (minimal overhead) and DEV.SDK (overlay, hot-reload, telemetry, diagnostics).
- Hash-only RDYTU packs — ship mods without plain text ids in player manifests.
Nuclear Option.exe
└── winhttp.dll (NOLoader.Proxy)
└── mono_jit_init_version hook
└── NOLoader.Core.Bootstrap.Initialize
├── RuntimeConfig (INI)
├── Gate L1 — read mod.json
├── PatchTool markers / Cecil pre-patch
├── MainMenu::Init → StartLoaderMainThread
├── Load mods by stage
└── Gate L4 — mission protection
Deep dive: docs/ARCHITECTURE.md
Game API for patches: derive types and method signatures from your game install (NuclearOption_Data/Managed/Assembly-CSharp.dll) or a decompiler — do not invent signatures.
| RDYTU | DEV.SDK | |
|---|---|---|
| Solution | RDYTU/NOLoader.RDYTU.sln |
DEV.SDK/NOLoader.DEV_SDK.sln |
| Build config | RDYTU |
DEV_SDK |
| Telemetry | Not included | UDP NO2 ~30 Hz |
| F10/F11 overlay | No | Yes |
| Hot-reload | No | Yes |
| Bundled player mods | No (core only) | Sample mods on deploy |
| Physics Rigidbody hooks | Off by default | On by default |
| Typical FPS overhead | Low (core only) | Higher (diagnostics) |
| Guide | docs/RDYTU.md | docs/DEV_SDK.md |
For player:
- Nuclear Option (Steam), Windows x64 For mod authors:
- .NET Framework 4.8 SDK (to build)
- Visual Studio 2022 with C++ workload (native proxy) Note for users:
- Remove another mod loader bootstrap from game root before install (if you has it)
Typical Steam install:
<SteamLibrary>\steamapps\common\Nuclear Option\
Important
Close Nuclear Option before installing or updating NOLoader. PatchTool edits NuclearOption_Data\Managed\*.dll — a running game causes Win32 IO errors.
Warning
Remove conflicting loaders — uninstall BepInEx winhttp.dll / Doorstop bootstrap from the game root before deploying NOLoader. Only one winhttp.dll proxy may be active.
- Download NOLoader-0.1.0-RDYTU.zip from Release v0.1.0.
- Close the game.
- Extract into the game root (folder containing
Nuclear Option.exe). - Apply Cecil patches if not already present (see docs/INSTALL.md).
- Launch — check
NOLoader/logs/proxy.log.
From the repository root (game closed):
.\scripts\build-proxy.ps1
.\scripts\deploy-noloader.ps1 -Configuration RDYTU
# or
.\scripts\deploy-noloader.ps1 -Configuration DEV_SDKOptional -GameRoot if the game is not in the default Steam location.
Full guide: docs/INSTALL.md
Nuclear Option/
winhttp.dll
noloader_config.ini
NOLoader/
core/ # Managed loader DLLs
mods/ # One subfolder per mod
logs/
NuclearOption_Data/Managed/ # Patched game assemblies (+ .noloader.bak)
noloader_config.ini in game root — template: deploy/noloader_config.ini
RDYTU section controls performance (ring log, physics hooks). DEV.SDK ignores [RDYTU].
See docs/MOD_AUTHOR.md. Drop folders under NOLoader/mods/.
For RDYTU hash-only packs: .\scripts\pack-mod-rdytu.ps1
dotnet build RDYTU\NOLoader.RDYTU.sln -c RDYTU
dotnet build DEV.SDK\NOLoader.DEV_SDK.sln -c DEV_SDK
dotnet test tests\NOLoader.Core.Tests\NOLoader.Core.Tests.csproj -c DEV_SDKPowerShell helpers in scripts/ — deploy, build proxy, verify, hash baking, release zips. See scripts/README.md.
| Document | Contents |
|---|---|
| docs/ARCHITECTURE.md | Core, bootstrap, Cecil, lifecycle |
| docs/RDYTU.md | Player channel |
| docs/DEV_SDK.md | Developer channel |
| docs/MOD_AUTHOR.md | mod.json, patches |
| docs/GATES.md | L1–L4 |
| docs/INSTALL.md | Install steps |
| docs/MIGRATION.md | BepInEx migration |
| CHANGELOG.md | History |
| Symptom | Action |
|---|---|
| No loader | Remove BepInEx winhttp; deploy proxy |
| Patch fail | Close game; restore .noloader.bak; redeploy |
| Gate L4 block | Fix mod error; check logs |
| Compare FPS vs vanilla | Restore managed DLLs from .noloader.bak, remove loader files |
Greenfield loader — rewrite mods as mod.json + Cecil. See docs/MIGRATION.md.
native/NOLoader.Proxy/
src/NOLoader.{API,Core,Patcher,PatchTool,Registry,Telemetry}/
DEV.SDK/ RDYTU/ deploy/ docs/ scripts/ tests/
Version: src/NOLoader.Core/AppVersion.cs
nuclear-option, noloader, mod-loader, csharp, unity, cecil