Important
BepInEx 5 (x64) required - install BepInEx before this mod.
Note
Fullscreen never touches the cockpit camera - seeker video is a dedicated RenderTexture on a UI RawImage. See Fullscreen/CAMERA_SAFETY.md in the source tree.
Warning
- Third-party aircraft and MFD mods may break layout - custom
TargetScreenUI/ tactical overlays can conflict; setDisplayMode=skipin Configuration Manager or disable conflicting MFD mods.
Tip
Configuration Manager recommended - in-game UI for com.at747.missilecamera.bepinex.cfg. After game updates, delete BepInEx\cache\harmony_interop_cache.dat if patches behave oddly.
BepInEx 5 plugin for the flight sim Nuclear Option that adds a live seeker-eye view (Missile Nose Cam) and a tactical HUD overlay directly onto your cockpit MFD Target display.
Plugin GUID: com.at747.missilecamera.bepinex
- Features
- Requirements
- Player installation
- Controls & keybinds
- Configuration (BepInEx Configuration Manager)
- NOXMFD integration
- Changelog
- Credits
- Licence
- MFD split-screen UI: Splits the wide tactical MFD (Target view) into zones and embeds the missile feed in the weapons panel area.
- Seeker cam (missile nose cam): Renders a live
RawImagefeed from your latest player-owned in-flight missile. No selected target required — dumb-fire / no-lock launches still open the MFD feed. On destruction, a brief TV-static burst plays before the panel closes. - Fullscreen feed:
RightAlt+F— dedicated seeker RenderTexture on a fullscreenRawImage(same as MFD). Never hijacks vanillaCameraStateManager/ cockpit camera. First enter per mission plays a ~3.5s boot (tile assemble → symbol cal → hex/value drums + diagnostics). FLIR chrome overlay; CombatHUD unit markers only. - Fullscreen zoom / filters: mouse wheel optical zoom up to 50× (MMB reset); J cycles vision modes (Color / NVG / WhiteHot / BlackHot / Contour±). MFD keeps keyboard zoom + auto IR when dark.
- Fullscreen FLIR HUD: green sensor chrome with live
— MSL —/— TGT —telemetry, scrolling compass, dials; vanilla CombatHUD target markers — fullscreen only. MFD keeps the classic S/A/R corner HUD. - Classic MFD HUD: S/A/R corners + salvo (1.30.1 style).
- Post-FX: optional scanlines / motion blur / chromatic / bloom (
MissileCameraEffects) — inactive with a startup warning if shaders are missing from the embedded bundle. - Aircraft mini-cam: optional second feed (
MissileCameraAircraftCam, default off). No-op whenDisplayMode=skip. - Auto B/W IR (WhiteHot): When dark at the missile — low
GetDaylightFactor(night / under thick clouds) or very lowGetAmbientLight— the feed switches to black-and-white IR. Not a fixed clock window. Disable withInfraredAutoEnabled=false. - Manual feed controls: Cycle in-flight owned missiles and adjust camera zoom while the MFD overlay is active (see Controls below).
- Per-aircraft layout (
DisplayMode=auto):- Dedicated split (e.g. KR-67): wide target cam on the left, missile panel on the right.
- VT-7 Vagrant: MissileCamera replaces the right-column NOZZLE + ENGINE block (weapons silhouette kept).
- Small tac overlay (e.g. Cricket): mod skipped — vanilla tactical MFD unchanged.
- Mission-only bootstrap: Harmony patches and the feed driver attach on the first mission scene, not in the main menu.
- Nuclear Option (Steam).
- BepInEx 5 (x64) in the game root (
BepInEx\core\must exist for build reference paths). - Configuration Manager (recommended) — in-game UI for plugin settings.
-
Install BepInEx 5 for Nuclear Option.
-
Install Configuration Manager (recommended).
-
Copy into:
Nuclear Option\BepInEx\plugins\MissileCamera\MissileCamera.dll
-
Settings are stored in
BepInEx\config\com.at747.missilecamera.bepinex.cfg(auto-created on first run). Edit in-game via Configuration Manager, or edit the.cfgfile while the game is closed. -
Do not rename the plugin folder or install duplicate copies under different names.
-
See
release/v0.27.1/INSTALL.txtor GitHub Releases for a checklist.
Active only while the missile feed overlay is on and you have player-owned in-flight missiles. US English keyboard layout (Right Alt may act as AltGr on some EU keyboards). Every keybind is a Configuration Manager KeyboardShortcut under MissileCameraControls / MissileCameraFullscreen / MissileCameraAircraftCam.
| Keybind | Default | Action |
|---|---|---|
| NextMissile | Right Alt + / |
Next missile (newer; wraps) |
| PreviousMissile | Right Alt + , |
Previous missile (older; wraps) |
| ZoomIn | Right Alt + ; |
MFD zoom in (narrower FOV) |
| ZoomOut | Right Alt + . |
MFD zoom out (wider FOV) |
| ResetZoom | Right Shift + . |
MFD reset zoom offset to 0.0 |
| Mouse wheel | — | Fullscreen only: optical zoom 1×…50× |
| ZoomResetKey | Middle mouse | Fullscreen only: reset magnification to 1× |
| Toggle | K |
Fullscreen missile camera toggle |
| VisionCycle | J |
Fullscreen vision cycle |
| CycleMode | Right Alt + V |
Aircraft mini-cam mode cycle (when enabled) |
Vision cycle (fullscreen): Color → NightVision → WhiteHot → BlackHot → WhiteContour → BlackContour. NightVision uses a local feed Volume only — never toggles stock cockpit NVG.
Sticky selection: after Next/Prev the camera stays on your chosen missile when new ones launch. If it is destroyed, the feed falls back to the newest remaining missile.
Zoom HUD (MFD): each zoom change shows the current offset for 0.5 s above feed center. Fullscreen FLIR shows MAG xN from optical magnification.
Player-facing settings only (Config/MissileCameraBepInConfig.cs). Advanced tuning (layout geometry, IR picture math, HUD colors, zoom feel, FX intensities) is hardcoded in the *Config classes. Use Configuration Manager in-game, or edit:
BepInEx\config\com.at747.missilecamera.bepinex.cfg
Tip
After this config slim, delete the old .cfg once (game closed) if orphaned keys clutter Configuration Manager — defaults recreate cleanly. Fullscreen toggle is now Toggle = K (no Right Alt).
| Key | Default | Description |
|---|---|---|
Enabled |
true |
Turns MFD layout splitting on/off |
DisplayMode |
split |
Which aircraft get the missile panel: auto | skip | split |
| Key | Default | Description |
|---|---|---|
Enabled |
true |
Turns live missile nose camera on MFD on/off |
Fov |
60 |
Seeker base FOV before MFD zoom (degrees) |
FeedWidth |
512 |
MFD feed render texture width |
FeedHeight |
512 |
MFD feed render texture height |
PostLossInterferenceSeconds |
0.5 |
NO SIGNAL flash length on switch/destroy/FS exit (0 = off) |
RenderFps |
30 |
MFD feed render rate (Hz) |
InfraredAutoEnabled |
true |
Auto B/W IR from lighting at missile |
InfraredDaylightThreshold |
0.12 |
IR ON threshold for daylight factor |
InfraredAmbientThreshold |
0.06 |
IR ON threshold for ambient light |
InfraredLightHysteresis |
0.03 |
Anti-flicker margin before IR turns off |
| Key | Default | Description |
|---|---|---|
Enabled |
true |
Turns MFD HUD overlay on/off |
ShowCenterCluster |
true |
Center reticle and intercept ring |
ShowTargetMarker |
true |
Target diamond marker |
CockpitPipEnabled |
true |
Bottom-left cockpit PiP |
| Key | Default | Description |
|---|---|---|
Enabled |
true |
Turns keyboard missile cycling and MFD zoom on/off |
NextMissile |
RightAlt + / |
Keybind: next missile |
PreviousMissile |
RightAlt + , |
Keybind: previous missile |
ZoomIn |
RightAlt + ; |
Keybind: MFD zoom in |
ZoomOut |
RightAlt + . |
Keybind: MFD zoom out |
ResetZoom |
RightShift + . |
Keybind: MFD zoom reset |
| Key | Default | Description |
|---|---|---|
Enabled |
true |
Turns fullscreen missile feed on/off |
Toggle |
K |
Keybind: enter/exit fullscreen |
VisionCycle |
J |
Keybind: cycle Color / NVG / IR / Contour |
ZoomResetKey |
Middle mouse | Keybind: reset optical zoom to 1× |
FeedWidth |
1920 |
Fullscreen render texture width |
FeedHeight |
1080 |
Fullscreen render texture height |
ZoomMax |
50 |
Max optical magnification (mouse wheel) |
ZoomResetOnExit |
true |
Reset to 1× when leaving fullscreen |
PitchLadderEnabled |
true |
Stock pitch ladder on fullscreen FLIR |
| Key | Default | Description |
|---|---|---|
ScanlinesEnabled |
false |
Scanlines post-FX (shader bundle) |
MotionBlurEnabled |
false |
Motion blur post-FX |
ChromaticEnabled |
false |
Chromatic aberration post-FX |
BloomEnabled |
false |
Bloom post-FX |
| Key | Default | Description |
|---|---|---|
Enabled |
false |
Aircraft mini-cam overlay |
Mode |
Rear |
Mini-cam view: Rear / TopDown / Chase |
HideInFullscreen |
false |
Hide mini-cam in fullscreen |
CycleMode |
RightAlt + V |
Keybind: cycle mini-cam mode |
Player-facing tuning for NOXMFD and other external consumers via Bridge/McBridge.cs (RequestCapture, headless seeker feed). See NOXMFD integration.
| Key | Default | Description |
|---|---|---|
Enabled |
true |
Allow external consumers to hold the seeker feed via RequestCapture |
RenderFps |
12 |
Seeker render rate (Hz) while only a bridge consumer is active |
SuppressCockpitMfd |
true |
Hide cockpit MFD missile feed while NOXMFD bridge capture is active |
TouchCockpitLayout |
false |
When true, bridge may rearrange cockpit MFD like a normal feed |
MarkerLabels |
SelectedOnly |
Browser HUD marker names: All | SelectedOnly | None |
FeedWidth |
960 |
Internal bridge render width (16:9 recommended) |
FeedHeight |
540 |
Internal bridge render height |
StreamHz |
10 |
MJPEG rate hint for browser MFD extensions |
StreamMaxDim |
480 |
Longest JPEG edge for browser stream |
StreamJpegQuality |
42 |
JPEG quality (0–100) for browser stream |
TelemetryInterval |
0.15 |
Seconds between bridge telemetry JSON rebuilds |
MarkersInterval |
0.2 |
Seconds between bridge marker JSON rebuilds |
PoolInterval |
0.5 |
Seconds between RC pool rescans for browser picker |
MissileCamera ships a public Bridge/McBridge.cs surface for external MFD apps. The mod does not reference NOXMFD at compile time or runtime — only the optional extension does.
Note
Recommended stack: BepInEx 5 → MissileCamera → MissileCamera: Remote Control → NOXMFD → NOXMFD: RC Missile Camera.
The extension adds a MISSILE CAMERA page inside NOXMFD's browser MFD: live seeker MJPEG, CombatHUD markers, telemetry, and RC commands (aim, throttle, afterburner, formation, vision cycle, manual detonate) without entering cockpit fullscreen (K).
While the extension page is open it calls RequestCapture(true), which keeps the seeker rig rendering headlessly. With SuppressCockpitMfd=true (default), the in-cockpit MFD missile panel stays hidden so you do not get duplicate feeds. Bridge tuning is under [MissileCameraBridge] in Configuration Manager (table above).
Tip
If the browser feed looks square or low-res after upgrading, set FeedWidth=960 and FeedHeight=540 in [MissileCameraBridge] (or delete stale keys and relaunch once).
See CHANGELOG.md.
- Mursisru — MissileCamera author, maintenance, and releases
- roke77 — NOXMFD (browser MFD shell and extension API this mod integrates with)
- lupfine — original remote-camera / Bridge integration concept
MIT License — see LICENSE.