Developer: Mursisru
Caution
Never install NOLoader and BepInEx builds together - double URP post-process hook will break or duplicate the wireframe effect.
Important
- Pick one loader - NOLoader path or BepInEx 5 + Configuration Manager; do not mix payloads in one game folder.
- Close the game before NOLoader deploy - PatchTool needs unlocked
Managed\*.dll. - Ship Core DLL and shader data - both
NOLidarWireframeContour.Core.dllandNOLidarWireframeContour_Data/lidar_shadersare required; plugin-only install fails (gpu=False).
Warning
lidar_shadersbundle must be valid (>= 15 KB) - stale or missing bundle causesgpu=Falseand no wireframe.- Mission stage only - mod
loadStageisMission; no probe chain in main menu. - BepInEx builds <= 0.3.4 may load but never tick - use 0.3.5V+ with
LidarWireframeHoston aDontDestroyOnLoadGameObject.
Note
Do not run alongside TerrainSilhouetteHud for the same role - pick one terrain-warning approach.
Tip
Force-night override: press Y (still requires TTI <= 7 s toward terrain).
GPU lidar terrain wireframe for Nuclear Option — velocity-aligned collision cone, TTI-driven activation, URP post-process compositing.
Pick one loader — NOLoader or BepInEx. Do not install both (double URP hook).
| Loader | Install path | Configuration |
|---|---|---|
| NOLoader | NOLoader\mods\LidarWireframeContour\ |
mod_config.ini (hot-reload) |
| BepInEx 5 + Configuration Manager | BepInEx\plugins\ |
F1 in-game |
Versions: logs show
0.3.6V· assemblies /mod.json/[BepInPlugin]use semver0.3.6
- Critical warnings
- Features
- Requirements
- Quick install
- Documentation
- Quick start (pilots)
- Build (developers)
- Repository layout
- Architecture overview
- Configuration summary
- Versioning
- Changelog
- Related projects
- License
| Area | Behavior |
|---|---|
| Probe | Dual-radius Physics.SphereCast along velocity (wind-drift aware) |
| Rates | 5 Hz cruise · 20 Hz near TTI (ProbeIntervalNearSec=0.05) |
| Auto | Night + gear up + TTI ≤ 7 s |
| Static off | Daytime or gear deployed → no auto |
| Force night | Y toggles override (ignores day/gear); TTI ≤ 7 s still required |
| Escape hold | 1 s continued display after pulling away (HoldAfterEscapeSec) |
| GPU | Full-res R32 depth + Laplacian edge @ 60 Hz · backbuffer composite |
| Fade | Shader-time fade via _CombatStartTime / _CombatEndTime + _Time.y |
| Cone | Smoothed at render rate (VisualUpdate) |
| HUD | Tactical green wireframe, static CRT scanlines |
| CPU | Probe on 5/20 Hz timer; fade/hold via loader tick (NOLoader INOModTickNormal or BepInEx host Update) |
- Nuclear Option (Steam)
- NOLoader: NOLoader + PatchTool applied once
- BepInEx: BepInEx 5 + Configuration Manager
- .NET Framework 4.8 SDK (build only)
- Unity 2022.3 LTS (shader bundle build only)
Download from GitHub Releases:
| Artifact | Extract to |
|---|---|
NOLidarWireframeContour-NOLoader-v0.3.6.zip |
Nuclear Option\ (creates NOLoader\mods\LidarWireframeContour\) |
NOLidarWireframeContour-BepInEx-v0.3.6.zip |
Nuclear Option\ (creates BepInEx\plugins\ payload) |
Both packages include NOLidarWireframeContour.Core.dll and NOLidarWireframeContour_Data/lidar_shaders.
Detailed steps: docs/INSTALL.md
| Document | Contents |
|---|---|
| docs/INSTALL.md | NOLoader vs BepInEx install, folder layout, verify |
| docs/ARCHITECTURE.md | Solution structure, tick map, BepInEx host lifecycle |
| docs/CONFIGURATION.md | All 43 settings + CM sections + debug ladder |
| docs/TROUBLESHOOTING.md | gpu=False, missing bundle, dual-loader, Vulkan notes |
| BUILD_SHADER_BUNDLE.md | Unity AssetBundle build |
- Cockpit view · speed > 30 m/s · AGL < 500 m
- Night mission (or press Y for force-night)
- Dive toward terrain — at TTI ≤ 7 s the wireframe cone appears
- Pull up — effect holds ~1 s then fades out
.\scripts\build-shader-bundle.ps1 # optional if bundle exists
dotnet build NOLidarWireframeContour.sln -c ReleaseDeploy scripts (local dev only — not required for release zip install):
.\scripts\deploy-mod.ps1 # NOLoader → game mods folder
.\scripts\deploy-bepinex.ps1 # BepInEx → plugins folderClose Nuclear Option before NOLoader deploy (PatchTool needs unlocked Managed\*.dll).
NOLidarWireframeContour/
├── NOLidarWireframeContour.Core/ # Shared runtime
├── NOLoader.LidarWireframeContour/ # NOLoader wrapper
├── BepInEx.LidarWireframeContour/ # BepInEx plugin
├── NOLidarWireframeContour_Data/ # Shader sources + bundle output
├── UnityBundleBuilder/ # Unity 2022.3 bundle project
├── scripts/ # build-shader-bundle, deploy-*
└── docs/ # Install, architecture, config, troubleshooting
flowchart LR
Core[NOLidarWireframeContour.Core]
NOLoader[NOLoader.LidarWireframeContour]
BepInEx[BepInEx.LidarWireframeContour]
NOLoader --> Core
BepInEx --> Core
Shared probe + URP passes live in Core. Loaders differ only in config source, patch application, and CPU tick entry.
BepInEx (0.3.5V+): LidarWireframeHost on a DontDestroyOnLoad GameObject — the plugin GameObject does not receive Update. Harmony and GPU init run on mission scene load.
Full diagrams and tick table: docs/ARCHITECTURE.md
| Component | Role |
|---|---|
ACT_LidarCollisionController |
Probe, TTI gate, hold, uniforms |
LidarPostProcess |
URP hook · GPU gate |
LidarDepthCapturePass / LidarWireframeRenderPass |
Depth + composite |
LidarWireframeMod |
NOLoader INOMod entry |
LidarWireframeBepInPlugin / LidarWireframeHost |
BepInEx entry + tick |
| NOLoader | BepInEx |
|---|---|
mod_config.ini [Lidar] |
F1 → General / Probe / Activation / Fade / Visual / Debug |
Core keys: TtiActivateSec=7, ProbeIntervalSec=0.2, ProbeIntervalNearSec=0.05, ForceHotkeyBinding=Y.
Full reference (43 keys): docs/CONFIGURATION.md
| Context | Format | Example |
|---|---|---|
mod.json, assembly, release tag, [BepInPlugin] |
numeric semver | 0.3.6 |
Logs, DisplayVersion, CHANGELOG |
semver + suffix | 0.3.6V |
Suffix letters: V visual · M mechanic · P program · A audio · Q QoL · O other.
Q and M must not appear in the same version string.
See CHANGELOG.md — 0.1.0 legacy DEV builds → 0.3.6V.
| Project | Relation |
|---|---|
| NOLoader | NOLoader install path |
| BepInEx | Alternative loader |
| NOAviationCareerTracker | ACT naming only — no hard dependency |
| TerrainSilhouetteHud | Alternative HUD — do not run both for same role |
MIT — Copyright (c) 2026 Mursisru
Mursisru — Nuclear Option modding
nuclear-option, noloader, mod, nolidarwireframecontour, csharp, unity