FF SUITEArma 3 addons

Mission maker · chapter 06 of 06

Session and shipping / Spectator, Zeus footer, naming contract, multiplayer checklist

The last mile: spectator access, custom Zeus fields, the names you cannot rename, and the multiplayer checks that catch problems before players do.

4 sections 06 / 06 Mission maker chapter

Spectator

A separate mod, off until you switch it on. The server decides who can watch, the client gets thirteen camera presets, six overlay layers, night vision control and optional personal-radio sync.

// initServer.sqf and initPlayerLocal.sqf
[true, "auto", createHashMapFromArray [["slots", [_viewerUnit]]]]
    call FF_spectator_fnc_serviceStart;

Viewers are an explicit VirtualSpectator_F, an Eden unit named spectator, or a unit in slots; everyone else stays a controller or an ordinary player. Alias entry points share the same implementation. Full detail: Spectator internals.

// initServer.sqf
["objectives", "Objectives", { missionNamespace getVariable ["done", 0] }, 2, "server"]
    call FF_zeus_fnc_registerZeusFooterStatus;

["objectives", "server"] call FF_zeus_fnc_unregisterZeusFooterStatus;

Register on the machine that owns the value: server fields are broadcast, local fields are viewer-only. Horror's FF_horror_fnc_registerZeusFooterStatus is also available and calls the Zeus registry.

Naming contract

NameRule
FF_Horror_* item and pickup class namesPublic API. Mission scripts, loadouts and editor placements use them.
FF_horror_fnc_* public functionsPublic API. Each one calls the implementation owned by its component.
Editor module class names and attributesPublic API. Eden files store them by name.
State keys such as FF_horror_cbrn*, FFPP_*, FFATM_*Public API. Missions read and write them directly.
CBA setting identifiersPublic API. CBA presets store them by name.

Multiplayer checklist