Skip to Content
This documentation is provided with the HEAT environment and describes this HEAT instance.

Configure HCP MACE

Open the plugin’s settings window from MACE’s toolbar (HEAT Capture Settings button, added by the plugin). Settings are written to an XML file in MACE’s own per-user settings directory when you save.

🚫

Settings are converted into the running capture pipeline exactly once, when the plugin initializes. Saving a change does not reconfigure a plugin that is already running - restart MACE (or reload the plugin) before a saved change takes effect.

Connection

SettingTypeDefaultEffectWhen to change
CaptureBaseUrlstring"http://localhost:5005"Base URL for both the session REST calls and the publish WebSocket (ws:///wss:// derived automatically, path /ws/publish appended)HEAT Capture runs on a different machine, or uses HTTPS
AutoStartTransportbooleantrueStarts/stops capture automatically as the MACE mission runs, pauses and stopsSee caution below
⚠️

There is no manual start control anywhere else in the plugin. Setting AutoStartTransport to false does not switch to a manual mode - it means capture never starts at all, for the entire MACE session.

CaptureBaseUrl defaults to HEAT Capture’s own shipped default (localhost:5005); no port correction is needed against a stock HEAT Capture install.

Capture cadence

SettingTypeDefaultEffectWhen to change
CaptureIntervalMsinteger (ms)33Global capture tick; also the polling rate for transition detection (stall, target-lock, emission/ESM/jamming onset) regardless of any per-category interval below100 for 10 Hz, 200 for 5 Hz - reduces volume but can miss a transition that starts and ends between ticks
ControlledEntityIntervalMsinteger (ms)0 (inherit CaptureIntervalMs)Minimum publish interval for the entity this MACE instance is actively flying (IsInternalEntity && ManeuverState == maneuver)Rarely - this is usually the entity you care about most
OtherEntityIntervalMsinteger (ms)0 (inherit)Minimum publish interval for every other entityRaise to reduce volume in large scenarios without reducing the controlled aircraft’s fidelity
EnvironmentIntervalMsinteger (ms)0 (inherit)Minimum publish interval for AirData weather and CloudData, evaluated only when the owning entity is dueRaise for slow-changing weather
ResourceStoresIntervalMsinteger (ms)0 (inherit)Minimum publish interval for fuel and munition stores, evaluated only when the owning entity is dueRaise for slow-changing stores
PlatformStateModeFullRate | OnChangeFullRateOnChange suppresses unchanged Health, aircraft/ground lighting, TargetData, and LinkedEntity; a disappearing value still emits one empty component as a removal markerOnChange to cut slow-changing platform state

Per-category intervals only reduce how often that category publishes; they never reduce transition-detection polling, which always runs at CaptureIntervalMs. Discrete events (weapon fire, hit, collision, lased) are callback-driven and are never throttled by any interval setting.

Capture content

SettingTypeDefaultEffectWhen to change
CaptureEnvironmentbooleantrueInclude AirData weather and CloudDataDisable only when environmental replay is not required
CaptureFlightDetailbooleantrueInclude fixed-wing data, control surfaces, and rotary-wing detail. Core position, dynamics, altitude and health are unaffectedDisable for reduced-fidelity capture
ContentModeFull | KinematicsOnlyFullKinematicsOnly retains entity identity, position, dynamics, health and every event, omitting every other componentReduced-fidelity capture only - see the caution on the Data produced page

EW capture

SettingTypeDefaultEffectWhen to change
CaptureEwEmissionbooleantrueInclude EmissionComponent (per-mode emitter data), re-sent every tick for active emittersDisable to cut frame size in EW-heavy, high-entity-count scenarios
CaptureEwSensorContactsbooleantrueInclude SensorContactsComponent (perceived, fire-control-assigned target solutions), re-sent every tick while a target is assignedSame
CaptureEwReceiverEnvironmentbooleantrueInclude ReceiverEnvironmentComponent (dynamic local RF conditions per receiver), re-sent every tickSame

Diagnostics

SettingTypeDefaultEffectWhen to change
EnableSizeDiagnosticsbooleanfalsePeriodically logs aggregate wire, entity, event, and component-group byte countsTo measure actual capture volume before tuning cadence
SizeDiagnosticsIntervalSecondsinteger (s)60Interval between size-diagnostics log entries; clamped to a 1 second minimumRarely

wire in the diagnostics log is the exact serialized Any payload queued for the publish WebSocket. Entity, event and component-group values are individual protobuf message sizes used for attribution and exclude enclosing-field overhead, so they will not sum exactly to wire.

Buffering

SettingTypeDefaultEffectWhen to change
MaxBufferedFramesinteger300Maximum frames held while the publish socket is reconnectingBounds outage memory only - see caution below
MaxBufferedMegabytesinteger32Maximum total size of the frame bufferSame
MaxBufferedEventsinteger20000Maximum entity events retained while frames cannot be published or during the identity grace period belowSame
SessionIdentityBufferTimeoutSecondsinteger (s)120How long events may be retained while HEAT Capture is starting a session with no valid user identity yet. Beyond this, pending data is discardedRaise for a HEAT Capture instance that takes unusually long to establish a session
⚠️

Buffer size settings bound how much memory an outage can consume - they are not a capture-volume control. Shrinking them to reduce data volume produces unpredictable gaps in what reaches HEAT Capture instead of a predictable reduction.

Retry and timeouts

SettingTypeDefaultEffectWhen to change
RetryInitialDelayMsinteger (ms)500Initial backoff delay before retrying a failed session startRarely
RetryMaxDelayMsinteger (ms)15000Maximum backoff delay between session-start retriesRarely
RequestTimeoutMsinteger (ms)5000Timeout for REST session-control requestsSlow or remote HEAT Capture instance
SendTimeoutMsinteger (ms)2000Timeout for sending one frame over the publish WebSocketSame
StopDrainTimeoutMsinteger (ms)3000Budget for flushing already-buffered frames when a mission stops, over the still-open socket. 0 discards them instead of tryingSee Data produced for what happens when this expires
HealthyPollDelayMsinteger (ms)250Delay between connection health checks while connected; clamped to a 50 ms minimumRarely
SocketKeepAliveSecondsinteger (s)15WebSocket keep-alive intervalRarely

A 60-second session-lifecycle timeout (covering the REST session start/stop calls themselves, distinct from RequestTimeoutMs) exists in the transport but has no corresponding setting - it is not configurable in this version.

Capture profiles

Profile is a write-once convenience, not a persisted runtime mode - selecting one writes the explicit values below, which is what actually gets saved and read back. Changing any one of those values afterward makes Profile display Custom.

ProfileControlled / other entity intervalEnvironment / store intervalPlatform stateContent
FullFidelityinherit / inheritinherit / inheritFullRateEvery supported group enabled
Balancedinherit / 200 ms1000 / 1000 msOnChangeFull content, EW enabled
KinematicsOnlyinherit / 200 ms1000 / 1000 msOnChangeIdentity, position, dynamics, health and events only

All three profiles keep the 33 ms base tick, so transition detection cadence is identical across all of them - only per-category publish rate and content change. KinematicsOnly is reduced-fidelity capture: it cannot reconstruct an equivalent replay for the aircraft, environment, stores, platform, radio, attachment, combat or EW state it omits.

Opens your browser's print dialog. Choose "Save as PDF" as the destination.