FF SUITEArma 3 addons

Registration, assignments, watch, live feeds

UAV automation internals

A per-UAV service that flies one airframe for you: follow a unit, escort a vehicle, run a patrol, hold and watch for contacts, and publish a camera feed to players, curators or named UIDs.

FF_Utils 5 related functions

1. What exists, and what it never does

Loading Utils starts no UAV worker and changes no vehicle. Every airframe you want automated is registered explicitly by the server. A registration creates one record with its own assignment, scan and order clocks, route index, alert state and status. The service never looks up an object by a mission name and never guesses a route.

LayerFunctionWhere
RegistrationdroneRegister / droneUnregister / droneConfigServer
AssignmentdroneAssignServer
LoopsdroneServerTick, droneTickOne, droneWatchTickServer
Flight helpersdroneNavigate, droneIssuePilot, dronePilotApply, dronePilotCommand, droneRestorePilot, droneFollowCenter, droneFollowGoal, droneSortMarkersServer
Contact toolsdroneContacts, droneSoundServer
RequestsdroneRequest → droneHandleRequest → droneReplyClient → server → client
Live feeddroneFeedSet, droneFeedClear, droneFeedRequest, droneFeedEligible, droneFeedLocal, droneFeedStart, droneFeedTick, droneFeedPruneServer + local client

Registration requires a live vehicle with isUav = 1. A duplicate registration is refused, and so is a vehicle whose pilot group is already driven by another registered UAV.

2. Assignments

[uav, action, [target, …]] call FF_utils_fnc_droneAssign accepts:

ActionThird argumentEffect
operatorLive physical playerHolds position relative to that operator. Operator death or disconnect ends the assignment; respawn does not silently take it over.
groupUnit or groupFollows living group members, including their current vehicles.
vehicleVehicleFollows that vehicle.
patrolATL positions, or [] for the configured routeAt least two valid points. Marker mode needs an explicitly configured markerPrefix; numeric suffixes are ordered, so 1, 2, 10 sorts correctly and gaps are tolerated.
hold—Stops navigation and keeps the current position.
watchtrue / falseTurns the contact watch worker on or off for that airframe.
powertrue / falseEngine on or off. Useful as an onSupply hook from the power service.
settings[distance, height, interval]Per-UAV tuning, bounded by the table below.

Follow and navigation orders are handed to the AI group owner; engine, altitude and heading work runs at the vehicle's locality. An ownership change forces a fresh order. Manual pilot control suspends automation and the watch worker immediately, and is detected rather than fought.

3. Configuration

KeyDefaultBounds / meaning
distance251–10000 m follow distance
height51–1000 m ATL flight height (forced order for aircraft)
interval30.1–30 s between navigation updates
scanInterval0.50.1–5 s contact and status scan
watchRadius1001–5000 m proximity detection, including crew
clearDelay50–60 s without contacts before resuming
arrivalRadius81–100 m patrol progress threshold
turnSpeed600–360 °/s threat turn rate
threatInterval301–600 s between repeated alert cues
soundRange601–1000 m cue audibility
route[]At most 256 valid ATL points
markerPrefixemptyExplicit alternative patrol-marker prefix; there is no default prefix
enemySides[]Explicit sides, otherwise current side relations
createCrewtrueCreates missing crew at vehicle locality when assigned
hoverWatchtrue, planes falseStationary threat hold; fixed-wing UAVs disable it by default
alertObjects / normalObjects[]Indicator props; original hidden states are restored on release
threatSound / activationSoundFF_Utils_DroneThreat / FF_Utils_DroneActivateCfgSounds cues; empty disables
access{false}Server callback [requester, uav, action, target] for non-curator requests
onStatus{}Server callback [uav, status] on status changes

4. Watch and contact hold

The watch worker scans watchRadius for hostiles by side relations. While a contact is held, horizontal movement is suppressed and the airframe turns toward the nearest threat at turnSpeed, retaining vertical velocity. Rotary UAVs support this hold by default; fixed-wing registration disables it unless overridden. Patrol index is retained across a contact hold. Repeated alerts are spaced by threatInterval and played within soundRange. Flight behaviour itself is not simulated by any offline check.

5. Live feeds

The feed backend is independent of navigation: an airframe can be a camera source without being automated.

// server
["survey", _source, _aimTarget, "players", true] call FF_utils_fnc_droneFeedSet;
["command", _source, _aimTarget, "curators", true] call FF_utils_fnc_droneFeedSet;
call FF_utils_fnc_droneFeedClear;

Audience is players (excludes assigned curators), curators, all or an explicit UID list, with at most 32 enabled identities. The newest eligible revision owns one local BIS_fnc_liveFeed HUD slot; joining, role change, respawn, source or target replacement and revision change are handled by the client worker. Opening Zeus suspends the local feed and leaving that display resumes it. Because the BIS live feed is a per-client singleton, a mission must not run a second live-feed controller in the same slot.

6. Requests, state and cleanup

Network callers use [requester, uav, action, target, settings] remoteExecCall ["FF_utils_fnc_droneRequest", 2]. The handler validates network owner, live registration and the server access callback before mutating anything; registration and release additionally require a currently assigned curator. Requests are rate limited per UAV and answered through droneReply.

Public state, readable by missions and UI:

  • FF_utils_droneRegistered — boolean on the airframe.
  • FF_utils_droneSettings — [distance, height, interval, markerPrefix].
  • FF_utils_droneStatus — [mode, watchEnabled, contactHold, operatorName, routeIndex, routeCount, contactCount, availability, watchRadius], retained for late joiners.

Release restores saved AI features, group behaviour, combat mode, current waypoint and indicator visibility, removes only the waypoints this service generated, and ends the watch worker. The airframe stays where it is with its engine state and last requested altitude. Sound cues and issued orders are transient and are never replayed to a JIP client.

7. Extension points

  • onStatus for mission UI, markers or objective triggers.
  • access for a terminal, a role, a UID list or a mission-specific authorization model.
  • Power service onSupply calling droneAssign with power to tie an airframe to a charged capacitor.
  • Terminal dronePower / droneOperator / dronePatrol / droneHold / droneWatch services, which delegate to this same owner.

Verified offline: follow-ring geometry, numeric marker ordering, configuration bounds and audience helpers. Not verified: aircraft physics, engine UI, UAV/AI locality, audio, hosted and dedicated multi-UAV sessions, manual pilot takeover, ownership changes, JIP and mission end.

Related functions

↑ Back to top