Whenever a mission is launched (or joined in Multiplayer) certain tasks are performed to ensure the mission's various components are initialised correctly and that everyone is synced in multiplayer games (particularly JIP players). Initialisation order refers to the order in which those tasks are executed and it is important to take into account when setting up the start of a mission.
|Single Player Only|
|Order is not guaranteed|
Take note that the order of initialisation is different in single player and multiplayer environments. If an entry is unmarked then it applies to both.
|Task||Applies To||JIP||Related To||Exec Environment||Notes|
|Functions with recompile attribute are recompiled||All||Arma 3: Functions Library|
|Functions with preInit attribute are called||All||Arma 3: Functions Library||Unscheduled|
|Object Init Event Handlers are called||All||Unscheduled|
|Expressions of Eden Editor entity attributes are called||Server||Eden Editor: Configuring Attributes||Unscheduled||isPlayer _entity does not return true immediately. Once the entity has become a player, it is transfered to the client.|
|Object initialisation fields are called||All||Unscheduled|
|init.sqs is executed||Singleplayer||N/A||Event Scripts|
|init.sqf is executed||Singleplayer||N/A||Event Scripts||Scheduled|
|Expressions of Eden Editor scenario attributes are called||All||Eden Editor: Configuring Attributes||Unscheduled||player is not available immediately.|
|Persistent functions are called||Client||Arma 3: Remote Execution, BIS_fnc_MP|
|Modules are initialised||All|
|initServer.sqf is executed||Server||N/A||Event Scripts||Scheduled|
|initPlayerLocal.sqf is executed||Client||Event Scripts||Scheduled|
|initPlayerServer.sqf is executed on the server||Client||Event Scripts||Scheduled|
|Functions with postInit attribute are called||All||Arma 3: Functions Library||Scheduled|
|"BIS_fnc_init" variable is set to true||All||Arma 2: Functions Library|
|init.sqs is executed||Multiplayer||Event Scripts||Scheduled|
|init.sqf is executed||Multiplayer||Event Scripts||Scheduled|
- Note in single player that while the environment is Scheduled (canSuspend returns true), the engine seems to wait until the script is done executing, essentially behaving similarly to an Unscheduled environment - infinite loops will freeze the game, uiSleep may pause the game for up to ~20s (postInit), waitUntil can cause catastrophic issues, etc.