11. Multiplayer: pilot and observer
Translated from the Finnish manual (manual/fi); the Finnish text is authoritative.
Matches version: 0.5-dev (phase 5.2, 2026-10-26). Status: pilot + observer works; instructor station coming.
Setup


One aircraft, one gimbal, two stations (ADR 0013):
- The pilot hosts: their machine runs the simulation. They can use any camera; when an observer is present, the pilot usually flies with the body-fixed flight camera (key 4) and leaves the gimbal to the observer. The pilot's gimbal or zoom command overrides the observer for as long as the pilot holds the stick deflected.
- The observer joins over the network and uses the gimbal cameras (wide, zoom, thermal) independently: gimbal R/F and [ ], zoom Z/C, camera 1–4, Tab, palette P, AGC O. Both choose their camera themselves — the observer can watch the thermal camera while the pilot flies on the wide one — but the gimbal points the same way for both, and the HUD's turret clock (chapter 3) shows the pilot where the observer is looking.
- The observer can also mark (Enter) the point under their crosshair, report a find (I), report the task searched (U) and change the method (M); marks and radio traffic are shown to both.
Starting
- Pilot: in the main menu H (host). The screen shows the machine's address on the local network (e.g. 10.48.67.193) and port 7777. The pilot chooses the scenario and starts the flight as when flying alone; observers can join before the flight or during it.
- Observer: in the main menu J, type the host's address, Enter. "Connected, waiting…" changes to the flight view when the pilot starts. The terrain package must be on the observer's machine at the same path (the Varasto share on the local network; over the internet, a copy at the same path).
- Internet: on the host's router, UDP port 7777 is forwarded to the host's machine, and the observer uses the host's public address. A latency of 50–150 ms shows on the observer's side as a slight lag, not on the pilot's.
From the command line for testing: godot --path . ++ --host and in another window godot --path . ++ --join=127.0.0.1.
The observer's camera counts
The host computes coverage and the "in the picture, not marked" moments from both the pilot's and the observer's camera: if the observer watches the thermal camera and the pilot the wide one, both footprints build up POD, and the debrief's moment list notes in whose picture the person was.
Instructor station
In the main menu I joins as instructor. The instructor sees the aircraft's camera or a view from above (F5 from above at 260 m, F6 back) and the truth: the missing person (red PERSON) and items in the picture or as edge arrows, as in coach mode. Enter opens a line where a typed hint goes to the team as a radio message ("Leader: …"); F7 triggers a GPS fault for three minutes immediately. The instructor does not control the gimbal or mark.
Not there yet
- Relay over the internet without opening a port.
- Voice is handled on a separate channel (Teams, Discord, radio).