Configuring the client
About 29 minutes to read
Applies to the current Moonlight desktop interface and configuration schema v4. Last verified: September 2026.
Moonlight works best when it is configured in layers. Establish a clean capture feed, reliable detection, and a working output device before adjusting aim behavior. This guide explains that order, the current interface, and the settings that matter most without prescribing one set of values for every game or setup.
Use Moonlight only where it is permitted. Follow the rules and terms of the game, platform, and service you use.
#Start Here: The Five-Minute Configuration Path
The complete path through Moonlight is:
Capture → Detection → Target selection and prediction → Aim/Flick/Trigger/RCS → Output device
Configure and verify it in that order:
- Select the edition that matches your license and hardware.
- Complete all seven pages of the setup wizard.
- Start Moonlight and confirm the center preview shows a current, correctly cropped frame.
- Confirm target boxes appear and the Monitor reports stable Capture, Detection, Inference, and Latency values.
- Confirm the selected output device is connected and receiving commands.
- Enable Aim for the active weapon class and test the configured Aim Key or activation mode.
- Duplicate the working config before importing profiles or changing advanced settings.
A successful baseline has all of the following:
- The preview is live, correctly framed, and not stretched or frozen.
- The intended targets are detected consistently.
- The correct model, weapon class, and lock state appear in the Monitor.
- The output device reports activity when Aim, Flick, Trigger, or RCS is activated.
- No unresolved pre-start warning or orange Restart required status is present.
Do not begin fine tuning until this baseline works. Movement settings cannot repair a bad capture source, unstable target boxes, an incorrect output device, or wrong sensitivity data.
#Choose the Correct Setup
#Editions
The interface is edition-aware. Controls that do not apply to the authenticated edition are hidden.
| Edition | Detection | Capture choices | Output choices |
|---|---|---|---|
| Moonlight AI | AI detection models | Capture Card, Magewell SDK, NDI-V2, Screenshot, UDP, Moonlight Stream, PS5 Remote Play | Supported mouse-output and controller devices |
| Moonlight Color | Color-based detection | Capture Card, Magewell SDK, NDI-V2, Screenshot, UDP, Moonlight Stream | Supported mouse-output and controller devices |
| Moonlight Console | AI detection models | Capture Card, Magewell SDK, PS5 Remote Play, Moonlight Stream | Titan Two, Makcu Controller, Ferrum Controller, PS5 Remote Play |
Moonlight Color uses its top-level Color page instead of the Detection page available in AI and Console, and it does not require an AI target model for color detection. ML Mouse is exclusive to Moonlight AI. Plugins and the Marketplace are available in AI and Console, but not Color.
#Capture Modes
Choose the mode that matches where the video originates. Do not select a mode only because it appears faster on another user's system.
| Capture mode | Best fit | Important setup point |
|---|---|---|
| Capture Card | Console or two-PC setups using a standard USB/PCIe capture device | Select the exact source and supported format. Source, format, resolution, FPS, crop, and capture-size changes require Stop/Start. |
| Magewell SDK | Supported Magewell Pro Capture hardware | Uses the native SDK and supports card-side crop controls. Console supports this mode. |
| NDI-V2 | Video sent across a reliable local network | Select the intended advertised source; Moonlight preserves the exact source name rather than silently switching. |
| UDP | A manually configured MJPEG or H.264 network stream | The URL, codec path, decoder, and frame-dropping policy must match the sender. |
| Screenshot | Single-PC capture in an edition where it is available | Requires no external video device. Verify that the intended display and region are being captured. |
| Moonlight Stream | A gaming PC running Sunshine on the same network | Enter the host and the exact app name, then pair once with the PIN Sunshine asks for. See Moonlight Stream. |
| PS5 Remote Play | A PS5 on the same home network (AI and Console) | Pair the console once with the 8-digit PIN from the PS5. It can carry the controller too. See PS5 Remote Play. |
The Debug View and Display FPS controls (Capture → Debug Display) change what Moonlight shows for diagnosis. They do not increase the source's true capture rate. Keep the debug display modest while tuning performance; its refresh rate is separate from Capture FPS and Detection DPS.
#Output Devices
The Output Device determines how movement and button commands reach the target system.
| Output | Initial requirement |
|---|---|
| Moonlink Direct | Complete the current Moonlink Direct hardware and companion setup. The retired Moonlink entry is no longer selectable. |
| MAKCU | Connect the supported device. Moonlight normally finds the port by USB identity. |
| Medius | The recommended firmware for a MAKCU. Connect a supported MAKCU-class device running compatible Medius firmware. Moonlight normally finds the port automatically. |
| Ferrum | Connect the device and select the correct COM port. |
| KMBox | For devices that use the KMBox B+ Pro API; select the correct COM port. KMBox Net is not supported, and we do not recommend the KMBox B+ Pro device itself. |
| Titan Two | Connect the controller adapter, select the controller layout and console output, and verify Windows can see its interfaces. |
| Makcu Controller | Connect the controller adapter and choose the correct controller layout. Moonlight normally locates its port automatically. |
Output device, COM-port, and controller-layout changes are startup-sensitive. Save the change, stop Moonlight, and start it again. Close serial monitors, flashing tools, or other applications that may already own the device.
#Detection Backends
Start with the backend that best matches the hardware, then compare performance with the same model and capture settings.
| Backend | Recommended use | Notes |
|---|---|---|
| ONNX | Broad GPU compatibility and a dependable first baseline | The current ONNX path uses GPU/DirectML. The old CPU and CUDA provider choices are not normal user options. |
| TensorRT | Supported NVIDIA GPUs when the lowest inference time is required | The first start for a model may take longer while its engine is built. Begin with optimization level 3; higher levels build longer and are not guaranteed to run faster. |
| OpenVINO | CPU or Intel-oriented inference, and systems where OpenVINO is the better fit | Start with device AUTO and precision auto, then compare CPU/GPU and f32/f16 only if needed. |
The customer release includes the compatible runtime components. Do not install Python, PyTorch, Visual Studio, or the full CUDA Toolkit solely to make Moonlight run.
Backend selection also coordinates internal capture and GPU-transfer paths. The former manual GPU Direct and low-level provider controls are intentionally not part of the normal workflow. When a backend change is made while the native runtime is active, follow the Restart required indicator and Stop/Start Moonlight.
#The First-Run Wizard
The wizard contains seven pages:
- Welcome — introduces the setup flow.
- Capture Setup — selects the capture mode and, when applicable, the device, method, and format.
- Output Device — selects the mouse-output device or controller adapter and any required COM port.
- Game & FOV — selects a known game or records a custom game field of view.
- Detection Model — selects an AI model in AI or Console and shows the initial backend. Moonlight ships without models: if none is installed yet, this page says so and saves no model, and finishing the wizard opens Marketplace > Targeting Models so you can get one for your game.
- DPI & Sensitivity or Controller Look Setup — records physical mouse DPI plus the sensitivity or look values used for setup calibration and output scaling.
- Aim Style — applies a starting behavior profile that can be refined later.
The wizard creates a baseline; it does not prove that the capture source, model, or hardware is working. Complete the verification checklist after the wizard finishes.
To rerun it, open Game Profiles → Calibration and expand the Setup Wizard card. Recheck the selected model, capture source, output device, DPI or controller look sensitivity, and game FOV afterward.
#Understand the Current Interface
#Header
The header provides the controls that define the context you are editing:
- Config selector — chooses the active configuration file for the current edition.
- Weapon Class selector — chooses which Aim, Flick, Trigger, and RCS settings are being edited.
- Edition indicator — shows the authenticated AI, Color, or Console product.
Always check the config and weapon class before changing a value. A correct change made in the wrong class is one of the most common causes of settings that appear to revert.
#Sidebar
The sidebar does not display group tabs named Aim Engine, Vision, or System. Its pages are top-level buttons separated visually by dividers:
| Top-level sidebar item(s) | Expandable children |
|---|---|
| Aim, Flick, Trigger, Recoil Control | — |
| Capture, Detection in AI/Console or Color in Color, Prediction, Filtering | — |
| Game Profiles | Calibration, OCR, Template Match, AI Weapon |
| Configs, Input Device, Logs | — |
| Plugins in AI/Console | Library, Code Editor, Designer |
| Active Plugins in AI/Console, when plugins are enabled | One entry per enabled plugin |
| Marketplace in AI/Console | Game Packs, Targeting Models, Plugins |
#Center Preview and Monitor
The center preview is the shared visual reference for capture, detection, calibration, OCR regions, and related tools. The right-side Monitor reports:
- Pipeline state: Capture, Detection, Inference, and total Latency.
- Target state: selected model or color mode, active weapon class, and lock status.
- Mouse or controller telemetry appropriate to the selected output device.
- Aim, Flick, Trigger, and RCS activation state where supported.
The collapsible Output Log records startup, device, detector, plugin, and runtime messages. Use the visual preview and the Monitor together: the preview shows what Moonlight sees; the Monitor shows which stage is active and what reaches the output path.
#Which Controls Are Shown
Every setting is always shown. On the Aim and Flick pages, rarely changed settings sit under a More settings bar at the bottom of their card; click it to show them.
Controls can still appear or disappear based on:
- Edition.
- Mouse-output versus controller output.
- Capture mode.
- Detection backend or model type.
- Moonlight Aim versus Script.
- RCS activation mode.
- Whether a parent feature is enabled.
A missing control is therefore not automatically a loading error. First verify the current edition, device, and mode.
#Configs, Game Profiles, and Weapon Classes
These names refer to different layers:
| Term | What it contains | Where to manage it |
|---|---|---|
| Config profile | The complete setup: capture, detector, output device, prediction, filters, automation, and every weapon class | Header config selector and Configs |
| Game Profiles page | Calibration and automatic weapon-class recognition tools; it is not the config-file selector | Game Profiles |
| Weapon class | A per-weapon set of Aim, Flick, Trigger, RCS, and related plugin behavior inside one config | Header class selector and Game Profiles → Calibration |
#Global Versus Per-Class Settings
| Scope | Typical settings |
|---|---|
| Global within the active config | Capture, detector or color detector, model/backend, Prediction, Filtering, output device, DPI/sensitivity/FOV calibration, and weapon-recognition rules |
| Per weapon class | Aim, Flick, Trigger, RCS, their targeting/timing/humanizer values, and per-class plugin activation/configuration |
| Application state | Edition, remembered active config for each edition, and UI language |
Changing from Rifles to Snipers, for example, changes the four combat subsystems together. It does not change the capture card, model backend, or output device.
Moonlight includes Default, Rifles, Shotguns, Pistols, and Snipers as starting classes. Classes can be created, renamed, duplicated, copied to another class, or deleted; Default remains the fallback class.
#Saving and Applying Changes
Moonlight saves normal UI changes automatically after a short debounce. Config writes are validated and atomically replaced, with rolling and timestamped recovery copies maintained under the active edition's config folder.
Saving a value and applying it to a running backend are separate events:
| Change type | Typical behavior |
|---|---|
| Aim, Flick, Trigger, RCS, FOV, timing, most Prediction/Filtering controls, Confidence, and NMS | Republished to the running engine, usually live |
| Model file | Hot-swapped where supported; the current detector is retained if the replacement cannot be prepared |
| Capture mode/source/format/resolution/FPS/crop/capture size | Saved immediately; requires Stop/Start |
| Output device, COM port, and controller layout | Saved immediately; requires Stop/Start |
| Backend/provider and some diagnostics | Requires Stop/Start when the native runtime reports a pending restart |
When a startup-sensitive value differs from the active session, the Monitor changes to Restart required and the Stop button changes to Stop to Apply Changes. Treat that indicator as authoritative.
#Configure in Dependency Order
#1. Capture
Open Capture.
Configure:
- Capture Mode and its mode-specific source.
- Capture-card format, resolution, and FPS where applicable.
- Enable Crop and Detection Area.
- Debug View and Display FPS for diagnosis.
- Crosshair Calibration if the captured center differs from the actual crosshair.
With Match model ticked (the default), Detection Area follows the model's input size. Aim FOV is measured inside this capture coordinate system; an incorrect crop or size changes how every pixel-based targeting value feels.
After changing a startup-sensitive capture value, Stop/Start Moonlight and verify the preview again. Do not compensate for a shifted crop by adding large aim offsets unless the crosshair itself is intentionally off-center.
#2. Detection
Open Detection in AI or Console.
The primary controls are:
- Backend and Model File.
- Confidence Floor — higher values reject more low-confidence boxes; values that are too high can cause missed or flickering detections.
- NMS Threshold — controls how strongly overlapping boxes are consolidated. Tune it only when duplicate or competing boxes are visible.
- Input Size — shown for dynamic models; smaller inputs are generally faster, while larger inputs preserve more small-target detail.
- TRT Optimization and Rebuild TRT Cache — TensorRT only. Stop Moonlight before rebuilding a damaged or incompatible local cache.
- Target Continuity — target switch delay, detection coasting and idle reset for brief or competing detections.
- Classes — per class of the selected model: Target on/off, Priority, Confidence, Box is (Body or Icon) and Ignore when inside another class. Where to aim stays on the Aim and Flick pages.
Choose a model appropriate to the game and model type. A universal model is useful for initial verification; a game-specific model may provide better results only for the game and classes it was trained to recognize.
Do not tune movement while the target box itself jumps, disappears, duplicates, or locks onto the wrong class. Correct the model, Confidence, NMS, the Classes settings, capture geometry, or ignore filters first.
Color Edition
Moonlight Color uses the top-level Color page instead of an AI target model. It provides contour or pixel detection, aim-point selection, built-in or custom color ranges, cluster/blob controls, target-lock behavior, and mask morphology. Begin with a preset close to the game's target color, verify the mask in the preview, and then narrow the range to reject background elements.
#3. Input Device and Calibration
Open Input Device.
Select the output device and complete only the cards that apply to it:
- COM port for Ferrum, Ferrum Controller or KMBox.
- Controller type, console output, and response controls for Titan Two.
- Keyboard device, when a second device should press or block keys.
- Input masking for supported serial devices, including Masked Click-Through (M2).
- MAKCU hardware Bezier controls when MAKCU API is set to Legacy API.
- Aim Axis (in the Output Device card) only when the setup needs aim on one axis.
- DPI, in-game sensitivity and game FOV for mouse-output setups.
Enter accurate DPI, in-game sensitivity, capture geometry, and game FOV values. DPI does not scale injected output: Physical Control Assist uses it to measure your hand speed, and the humanizer keeps a profile per device and DPI. Mouse output is scaled by game sensitivity, game FOV, capture width, and Aim Multiplier (on the Aim page) or Flick Multiplier (on the Flick page). The retired Reference Sensitivity control is no longer part of the user workflow.
Controller output uses controller look calibration and Stick Sensitivity instead of desktop mouse DPI. Confirm normal physical input works before enabling Moonlight output.
#4. Moonlight Aim
Open Aim and verify the intended weapon class in the header.
Activation & Access
- Aim arms Aim for the active class.
- Aim Engine selects Moonlight Aim or Script. Moonlight Aim is the built-in controller. Script delegates movement to an enabled Lua aim-provider plugin.
- Aim Mode can be Hold, Toggle, or Always On.
- Aim Key supports the valid mouse or controller buttons for the selected device. A secondary foot-pedal binding can be enabled where applicable.
- ADS Key and Hip Aim Speed let ADS use the normal configured speed while hip aim uses a percentage of it.
- Activation Delay delays the start after acquisition.
- Max Aim Time, when ticked, limits one continuous activation.
If Aim appears inactive, check all four gates: Aim Enabled, active weapon class, activation mode/key, and output device.
Targeting & Position
- Aim FOV is the circular target-eligibility radius in capture pixels. It is not the game's camera FOV and is separate from the square detector crop.
- Dynamic FOV adjusts the eligible radius using the target's on-screen box size.
- Shrink FOV While Aiming uses the normal radius for acquisition, then contracts it around the current lock.
- Min FOV, Max FOV, and FOV Scale/Reference Size shape Dynamic FOV.
- X/Y Offset changes the desired point relative to the selected target position.
- Target Deadzone stops corrections inside a small capture-space radius.
- Aim Bones selects weighted target regions for compatible models.
Use the smallest Aim FOV that still acquires the intended target reliably. Increasing Aim FOV changes which targets are eligible; it does not make movement faster.
Moonlight Aim Response
| Control | What it changes | Typical symptom to address |
|---|---|---|
| Aim Speed | Acquisition speed while outside the target box | Raise for slow approach; lower if acquisition is too abrupt or crosses the target |
| Track Strength | Positional authority after acquisition | Raise if tracking cannot hold a moving target; lower if settled tracking oscillates |
| Split Aim Speed X/Y | Gives vertical acquisition its own speed | Use only when the vertical axis consistently needs a different response |
| Restricted Tracking | Reduces physical mouse/stick influence while Aim is active | Raise for more Moonlight authority; lower to preserve more manual adjustment |
| Manual Override Delay | Returns full mouse control after sustained physical movement on supported mouse paths | Adjust if supported mouse control is either too difficult to override or releases too easily; it does not apply to controller input |
| Stick Sensitivity | Normalizes controller correction speed for the current game/setup | Calibrate before changing multiple response controls |
| X/Y Dampener | Softens the final correction on the selected axis | Use for axis-specific near-target oscillation or an overly hard finish |
| Box Size Aware | Softens small/distant targets; large/close targets remain at neutral gain | Use when distant targets need gentler response than close targets |
Tune Aim Speed first, then Track Strength, then the deadzone or one axis dampener. Change one setting at a time and test the same target motion after each change.
Physical Control and Humanizer
Physical Control Assist is shown only for devices that can report usable physical movement. It gates assistance based on measured user motion and includes assistance/stationary behavior and activation sensitivity controls.
Humanizer is no longer a separate page, and it is always on. Aim, Flick and RCS each have their own Strength, and each page shows its profile status. On a mouse output, Aim and Flick also have Tracking Pauses. The engine uses its built-in movement profile; personal mouse training (ML Mouse) is retired. Configure stable targeting first; humanization should be the final layer, not a substitute for correct response or prediction settings.
#5. Prediction
Open Prediction.
Predictor V2 is the current and recommended prediction path. It estimates target motion and compensates measured processing latency. Disabling it removes target lead and supported physical-input compensation, so the old blanket advice to turn prediction off is no longer a normal baseline.
The most useful controls are:
- Detection Noise History — learns the detector's spatial noise without lengthening the predictor's short response window.
- Extra Smoothing — stabilizes estimated motion when detections are noisy.
- Lock Delay — waits before target lead is applied to a new target; prediction continues warming during the delay.
- Extra Lead — adds time on top of the measured lead (detection time plus the Monitor's Output delay, which Moonlight learns from your own aim movement).
- Maximum Prediction Distance — caps the final prediction displacement in pixels.
- Lead Engage Distance — controls when lead begins relative to target error.
- Motion Sensitivity — controls how readily slow movement is recognized as intentional target motion.
- Velocity Lead — scales the predicted target lead.
- Box Size Lead — optionally varies lead using target size.
- Physical Input Prediction / Overshoot Brake — appears for supported mouse/controller paths.
Tune by symptom:
| Symptom | Check first | Then adjust gradually |
|---|---|---|
| Aim trails a consistently moving target | Verify DPS/LAT are stable and the target box is accurate | Raise Velocity Lead or Extra Lead |
| Aim sits ahead of a moving target | Verify capture and game FOV | Lower Velocity Lead or Extra Lead |
| A stationary target develops unwanted lead | Watch for box jitter | Lower Motion Sensitivity; add Extra Smoothing or more Noise History |
| Prediction makes a large displacement | Check target switching and false detections | Lower Maximum Prediction Distance |
| Lead starts too late on slow movement | Confirm the same target remains locked | Raise Motion Sensitivity or reduce Lock Delay |
| Controller correction passes the target | Verify Stick Sensitivity and target geometry | Use the supported Overshoot Brake/Protection control if shown |
Temporarily disabling Predictor V2 can be a useful isolation test in a duplicated config, but it should not be treated as the universal cure for shake. If the detector box is unstable, fix detection first.
#6. Flick
Open Flick.
Flick has its own activation, targeting, response, and humanizer values. It does not inherit Aim's FOV or response settings merely because both use Moonlight's movement engine.
Configure:
- Enable, activation mode/key, optional foot pedal, activation delay, and maximum Flick time.
- Moonlight Flick Flick Multiplier, Aim Speed, Track Strength, Restricted Tracking, override delay, device calibration, and dampeners.
- Flick FOV, Dynamic FOV, shrink radius, offsets, deadzone, and compatible bone selection.
- Post-Shot Flick Pause for a single-shot or semi-automatic workflow that should not immediately pull again after a shot.
- Inline Flick Humanizer, Post-Click Y Suppression, Tracking Reaction Delay and Direction Change Delay where applicable.
Tune Flick independently from Aim and test it with Aim temporarily disabled if their interaction is unclear.
#7. Trigger
Open Trigger.
Trigger fires only when its activation conditions and target zone are satisfied.
- Trigger, key, and optional foot pedal control access.
- Trigger Scale defines a box-relative firing zone.
- Head/Body Split replaces the single scale with separate head and body widths plus the boundary between them.
- First-Shot Delay Min/Max chooses a delay within the configured range before the first shot.
- Multishot Delay chooses the interval between follow-up shots; zero represents full-auto behavior.
- Trigger Activates RCS starts recoil control when Trigger fires.
If boxes are visible but Trigger does not fire, verify the active class, Trigger key, target zone, the detector class's Target switch (Detection → Classes), and first-shot delay before widening the zone.
#8. Recoil Control
Open Recoil Control.
RCS is per weapon class and has its own enable state, strength, activation delay, and maximum time. Controller outputs also expose Fine Strength where applicable.
Activation modes are:
| Mode | Behavior |
|---|---|
| Always Active | Applies while the firing condition is present |
| Enemy Detected | Requires a detection that meets the RCS threshold |
| Within FOV | Requires an eligible target within the configured targeting context |
| Pattern Based | Replays a selected CSV recoil pattern |
| Script (Plugin) | Delegates RCS output to an enabled Lua plugin |
| Recoil Boost | Follows firing like Always Active, but adds no recoil of its own |
In Recoil Boost mode, the Recoil Boost slider (0–200%) sets how much harder aim pulls down on the locked target while RCS is active.
Pattern Based mode adds the Pattern card (Pattern File, Open Pattern Editor, Game with Calibrate 360°, Scope Sensitivity, Pattern Strength, Pattern Randomness, Recoil-Assisted Acquisition) and Require Enemy Visible in the Timing card. A portable (degree) pattern pulls the same on any setup once Game is set; a legacy pattern depends on this PC's settings until you convert it with Make Portable in the pattern editor. Its output is driven by the CSV pattern rather than the traditional RCS strength path.
The profile Humanizer is shown for applicable non-controller traditional modes. It is not applied to Pattern Based or Script output. When Trigger should own the firing event, enable Trigger Activates RCS on the Trigger page.
#Game Profiles and Automatic Weapon-Class Switching
Open Game Profiles.
#Calibration
This page manages weapon classes, optional Magewell card-side crop, setup-wizard access, and display/debug preferences. Crosshair Calibration now lives on Capture.
#OCR
OCR reads a configured HUD text region and maps recognized weapon text to a weapon class. Each rule can own its keyword, destination class, region of interest, and preprocessing. Current customer builds use the native Windows OCR path.
Use OCR when the weapon name is rendered consistently as text. Validate the region and a sample mapping before enabling automatic switching.
#Template Match
Template Match recognizes weapon icons or slots from configured HUD regions. It supports per-rule and slotted layouts, confirmation/cooldown behavior, no-match fallback, rule testing, and rule import/export.
Use templates when the game provides stable weapon icons but no reliable weapon-name text. Capture templates at the same resolution, HUD scale, and visual state used during play.
#AI Weapon
AI Weapon Detection is a beta HUD classifier. It uses a small per-game model, a configured HUD region, confirmation/cooldown controls, and an optional local dataset/training workflow. Game Packs may supply a compatible classifier, classes, ROI, and related configuration.
OCR, Template Match, and AI Weapon Detection are mutually exclusive. Enabling one disables the other two so they cannot compete over the active class.
Watch Weapon Class in the Monitor while testing. If the class changes incorrectly, repair the recognition rule or region; do not compensate by editing the wrong class's Aim/RCS values.
#Configuration Management
Open Configs to select, activate, rename, duplicate, delete, import, or export configuration profiles. Each edition stores and remembers its profiles separately under configs/<edition>/.
Recommended workflow:
- Establish and verify one known-good baseline.
- Duplicate it for a new game, capture topology, or major experiment.
- Name configs by game and setup, not by vague strength labels. For example:
game-capturecard-ferrum.json. - Keep hardware, calibration, and detection changes in the copied profile.
- Use weapon classes for differences between weapon families inside that setup.
#Importing Community Configs or Game Packs
Imports can be useful starting points, but they are not hardware-independent. After import, verify:
- The config belongs to the correct edition.
- Capture mode, source, crop, format, and resolution.
- Output device and COM/controller layout.
- Model file, backend, model input size, Confidence, and NMS.
- DPI or controller look setup, in-game sensitivity, and game FOV.
- Aim/Flick/Trigger/RCS values in every weapon class you plan to use.
- OCR/template/AI Weapon regions at your resolution and HUD scale.
- Enabled plugins and their permissions/settings.
Legacy imports are migrated and normalized to schema v4. Old PID, Aim V2, WindMouse, GAN, Neural, or Human aim selections become Moonlight Aim. Use the supported in-app import path instead of manually combining JSON sections from different configs.
#Config Integrity and Recovery
Moonlight validates required config structure, writes through a temporary file, flushes it, and atomically replaces the active JSON. It maintains a rolling backup plus timestamped snapshots and preserves the previous file when a suspicious class-count or size reduction is detected.
If a config is missing or empty at startup, Moonlight attempts recovery from a valid backup and can rebuild a complete baseline when recovery is not possible. Manual JSON editing bypasses part of the UI validation and is not the recommended configuration method.
#Optional Advanced Systems
#Filtering
Filtering excludes detections that match configured visual rules. Depending on the edition/build, this includes Enemy Color Filter and native color/area ignore rules. Use filters only after the detector works without them:
- Enable the debug overlay.
- Add one rule for a known false-positive element.
- Verify that real targets remain eligible at multiple distances.
- Add decay only if the ignore result flickers between frames.
Over-broad filters can make valid boxes disappear and look like a model failure.
#ML Mouse
Personal mouse training is retired and the ML Mouse page is hidden. There is nothing to record or train: the humanizer uses its built-in movement profile.
#Plugins
Plugins provides:
- Library — install, inspect, enable, configure, and monitor Lua plugins.
- Code Editor — edit supported plugin scripts.
- Designer — build a plugin through the visual authoring workflow.
An enabled aim-provider plugin becomes available when Aim Engine is set to Script. RCS can similarly delegate to Script (Plugin). Plugin activation follows the weapon-class context, so verify the active class before enabling or debugging one. Install only trusted plugins and review requested capabilities.
#Marketplace
Marketplace separates:
- Game Packs — packaged game configuration, classes, and supported automation assets.
- Targeting Models — compatible detection models and metadata.
- Plugins — Lua extensions that are installed into the Plugin Library before they are enabled.
Duplicate the active config before applying a pack that changes multiple layers, then repeat the baseline verification.
#Logs and Audit Sync
Logs is the evidence source for startup, backend, capture, output, plugin, and recovery problems. Advanced diagnostics include pipeline telemetry, detector metrics, and Audit Sync, which compares saved values with their current runtime counterparts.
Leave high-volume diagnostics off during normal performance testing. Enable them long enough to reproduce a problem, capture the relevant output, and then turn them off.
#Reading Performance Correctly
| Metric | Meaning | If it is the weak stage |
|---|---|---|
| Capture / FPS | Frames received from the active capture source | Check source format/rate, cable or network path, capture device, crop/size, and source contention |
| Detection / DPS | Detection cycles completed per second. With Skip duplicate frames on (default), repeated frames are not detected, so DPS follows the game's real frame rate rather than the capture rate | Check model size/input size, backend, GPU/CPU load, filters, and driver/runtime health |
| Inference | Approximate time per detection cycle | Compare models/backends under the same capture and input-size conditions |
| Latency / LAT | End-to-end processing latency reported by the active pipeline | Use Logs/pipeline telemetry to identify spikes rather than assuming the model is responsible |
| Output delay | Time from Moonlight's output to the first captured frame that shows it, learned during normal play; shown as measured, learning or controller | Prediction already leads by it. Do not add it to Extra Lead; let it settle at (measured) before judging lead |
| Debug Display FPS | Refresh rate of the visual preview | Cosmetic/diagnostic; it is not Capture FPS or DPS |
There is no universal target number. Model size, input size, capture rate, backend, hardware, network transport, and output device all change the expected result.
Compare one change at a time. DPS below Capture FPS is normal when the game renders fewer frames than the capture card delivers and Skip duplicate frames is on. If Capture remains high while DPS falls below the game's frame rate, investigate the model/backend stage. If both fall, inspect capture or system contention first. If FPS and DPS are stable but aim feels delayed, verify LAT, output telemetry, sensitivity calibration, activation delay, and Predictor V2.
#Troubleshooting by Symptom
#Start Moonlight Is Blocked
Open the Cannot Start — Issues Found dialog and resolve errors from top to bottom. Typical blockers are a missing model, unavailable capture source, edition-incompatible mode, invalid output device, or unavailable COM port. Warnings should be understood even when they do not block Start.
#The Preview Is Black, Frozen, or Waiting
- Confirm the selected capture mode matches the actual source.
- Re-select the exact device or NDI-V2 source.
- Confirm the source is producing the saved format and rate.
- Close software that may own the capture device or network port.
- Stop/Start Moonlight after changing source, format, resolution, FPS, crop, or capture size.
- Read the first capture error in Logs; later messages may be consequences rather than the cause.
#The Preview Works but There Are No Target Boxes
- Confirm the correct model or Color mode is active in the Monitor.
- Verify the model file and, for a dynamic model, its Input Size.
- Temporarily return Confidence and NMS to the known-good profile values.
- Disable custom class/ignore filters for an isolation test.
- Confirm the target class exists in the model and is not disabled.
- Review detector/backend startup messages in Logs.
#Boxes Appear but There Is No Aim Output
- Select the intended weapon class.
- Confirm Aim in that class.
- Confirm Moonlight Aim or a valid enabled Script provider.
- Check Hold/Toggle/Always On and the mapped Aim Key.
- Verify the output device, port, controller layout, and physical connection.
- Watch the Monitor's Aim state and mouse/controller output telemetry.
- Stop/Start if the output device or COM/controller layout was changed.
#Aim Shakes or Oscillates
Work from the source outward:
- Watch the target box with movement output disabled. If the box jitters, fix capture/detection first.
- Verify crop, crosshair center, DPI or stick calibration, in-game sensitivity, and game FOV.
- Confirm only the intended target/class is eligible and target switching is stable.
- Reduce Track Strength if the problem appears after acquisition.
- Reduce Aim Speed if the approach repeatedly crosses the target.
- Add a small Target Deadzone for persistent micro-corrections at the endpoint.
- Use only the relevant X or Y Dampener.
- Inspect Predictor V2 for false motion; adjust Motion Sensitivity, Extra Smoothing, Noise History, or the displacement cap.
- Add Humanizer only after the underlying path is stable.
Avoid changing five values at once. A single repeatable test is more useful than a large unmeasured preset change.
#Aim Trails or Leads Moving Targets Incorrectly
Keep the target, model, capture rate, and movement pattern consistent. If target boxes and DPS/LAT are stable, adjust Velocity Lead or Extra Lead in small steps. Use Maximum Prediction Distance as a safety cap. Recheck game FOV and capture geometry before applying large prediction values.
#The Wrong Weapon Class Activates
- Watch the class shown in the header and Monitor.
- Confirm that only one of OCR, Template Match, or AI Weapon is enabled.
- Test the active rule/model against the current resolution and HUD scale.
- Correct its mapping, ROI, confirmation, cooldown, or fallback.
- Switch to the class manually while isolating the automation layer.
#A Setting Saved but Did Not Apply
- Look for Restart required or Stop to Apply Changes.
- Confirm the correct config and weapon class are selected.
- Stop/Start after capture, output-device, port, controller-layout, or native backend changes.
- Open Logs and select Audit Sync if the saved and runtime values appear different.
- If a model hot-swap failed, read the error; Moonlight keeps the previous working detector active.
#A Control Is Missing
Check the edition, selected output device, capture mode, backend, model file, Aim engine, and RCS mode. Conditional controls are hidden when they cannot affect the current path.
#TensorRT Takes a Long Time or Fails to Start
The first engine build can take considerably longer than later starts. If the cache is reported as damaged or incompatible:
- Stop Moonlight.
- Open Detection; with Backend set to TensorRT, Rebuild TRT Cache is in Backend & Model.
- Select Rebuild TRT Cache.
- Start Moonlight and allow the selected model to rebuild.
The original model is not removed. If TensorRT still fails, verify the release and GPU driver, then establish a working ONNX or OpenVINO baseline and send the relevant Logs output to support. Do not install developer toolchains as a generic repair.
#Quick Reference
| Task | Current path | Scope | Typical apply behavior |
|---|---|---|---|
| Change active config | Header or Configs | Entire edition-specific profile | Loads the selected profile |
| Change active weapon class | Header or Game Profiles → Calibration | Aim/Flick/Trigger/RCS/plugins | Live class bundle switch |
| Configure capture | Capture | Global | Stop/Start for source/geometry values |
| Select model/backend | Detection | Global | Model can hot-swap; backend follows restart status |
| Tune Confidence/NMS/classes | Detection | Global | Usually live |
| Configure Moonlight Aim | Aim | Per class | Usually live |
| Configure Flick | Flick | Per class | Usually live |
| Configure Trigger | Trigger | Per class | Usually live |
| Configure recoil | Recoil Control | Per class | Usually live |
| Tune Predictor V2 | Prediction | Global | Usually live |
| Add ignore rules | Filtering | Global | Usually live |
| Change output hardware | Input Device | Global | Stop/Start |
| Configure class automation | Game Profiles | Global rules selecting per-class settings | Usually live; verify in Monitor |
| Enable/configure a plugin | Plugins | Per class where applicable | Usually live |
| Diagnose saved/runtime drift | Logs; select Audit Sync | Active config | Read-only diagnostic |
#Glossary
- Aim FOV — circular engagement radius measured in capture pixels; unrelated to the game's camera FOV.
- Capture crop/Detection Area — the image region and coordinate space processed by Moonlight.
- Confidence Floor — minimum detector confidence required for a candidate box.
- Config profile — one complete edition-specific JSON configuration.
- DPS — detector processing rate, not debug-display refresh rate.
- Humanizer — profile-driven movement characteristics applied inline to supported Aim/Flick/RCS paths.
- LAT — total pipeline latency reported by the current runtime.
- Moonlight Aim — the current built-in movement engine. Its internal compatibility value may appear as
Quantumin a config. - NMS — overlap consolidation for competing detector boxes.
- Restricted Tracking — control over how much physical input remains authoritative while Moonlight Aim is active.
- Weapon class — the active per-weapon Aim/Flick/Trigger/RCS configuration inside a config profile.
#Migrating From the Old Overview
The following older concepts should not be used as current configuration instructions:
- PID, Aim V2, WindMouse, GAN, Human, and Neural are not selectable Aim engines. Use Moonlight Aim or an explicit Script provider.
- Humanizer is inline on Aim, Flick, and applicable RCS modes; there is no standalone Humanizer page.
- Predictor V2 is the current prediction system and is enabled as the recommended path. Do not begin with the old universal “disable prediction” recipe.
- Reference Sensitivity is retired. Enter your real DPI (it does not scale output); injected mouse output is normalized by game sensitivity, Aim Multiplier or Flick Multiplier, capture width, game FOV, and tracking calibration. The single Sens Multiplier that used to sit on the Input Device page was split into those two and moved to the Aim and Flick pages. Controller output uses controller look calibration and Stick Sensitivity.
- GPU Direct, native serial, and several low-level provider/capture switches are automatically managed or hidden.
- The customer release does not require a separate CUDA Toolkit or developer Python environment.
- Configs are edition-specific, while Aim/Flick/Trigger/RCS behavior is additionally weapon-class-specific.
- Capture/output/backend changes do not all apply immediately; follow the runtime's restart status.
Use the wizard baseline and symptom-based tuning instead of copying fixed “safe,” “balanced,” or “aggressive” numbers. The correct result depends on the game, model, capture geometry, output hardware, sensitivity, and active weapon class.
Stuck on a step? Ask in the Moonlight Discord and a staff member will help.