---
name: "Initialisation Order"
type: topic
aliases: ["Initialization Order"]
source: https://community.bistudio.com/wiki/Initialisation_Order
revid: 373629
updated: 2025-05-29T15:41:33Z
---

# Initialisation Order

Whenever a mission is launched (or [joined](../topics/Multiplayer_Scripting.md#join-in-progress) 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](../topics/Multiplayer_Scripting.md#join-in-progress) 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.

[Event Scripts](../topics/Event_Scripts.md) are a key part of a mission's initialisation order and will be utilised often when working with [SQF](../topics/SQF_Syntax.md).

|  |  |  |
|---|---|---|
| + Key | Item | Meaning |
|  | Single Player Only |  |
|  | Multiplayer 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.

> [!NOTE]
> In multiplayer the following is relevant to every machine including the server and headless clients.
> If the server is non-dedicated then it should be considered both a server and client.

### Arma 3

|  |  |  |  |  |  |  |
|---|---|---|---|---|---|---|
| + Order of Initialisation (From First to Last) | Task | Applies To | JIP | Related To | Exec Environment | Notes |
| Functions with *recompile* attribute are recompiled | All | ✓ | [Arma 3: Functions Library](../topics/Functions_Library.md) |  |  |  |
| Functions with *preInit* attribute are called | All | ✓ | [Arma 3: Functions Library](../topics/Functions_Library.md) | [Unscheduled](../topics/Scheduler.md#unscheduled-environment) |  |  |
| Object Init Event Handlers are called | All | ✗ |  | [Unscheduled](../topics/Scheduler.md#unscheduled-environment) |  |  |
| Expressions of Eden Editor entity attributes are called | Server | ✗ | Eden Editor: Configuring Attributes | [Unscheduled](../topics/Scheduler.md#unscheduled-environment) | `isPlayer _entity` does not return [true](../commands/true.md) immediately. Once the entity has become a [player](../commands/player.md), it is transfered to the client. |  |
| Object initialisation fields are called | All | ✓ |  | [Unscheduled](../topics/Scheduler.md#unscheduled-environment) |  |  |
| [init.sqs](../topics/Event_Scripts.md#init-sqs) is executed | Singleplayer | N/A | [Event Scripts](../topics/Event_Scripts.md) |  |  |  |
| [init.sqf](../topics/Event_Scripts.md#init-sqf) is executed | Singleplayer | N/A | [Event Scripts](../topics/Event_Scripts.md) | [Scheduled](../topics/Scheduler.md#scheduled-environment) (ref: Note **in single player** that while the environment is [Scheduled](../topics/Scheduler.md#scheduled-environment) ([canSuspend](../commands/canSuspend.md) returns true), the engine seems to wait until the script is done executing, essentially behaving similarly to an [Unscheduled environment](../topics/Scheduler.md#unscheduled-environment) - infinite loops will freeze the game, [uiSleep](../commands/uiSleep.md) may pause the game for up to ~20s (postInit), [waitUntil](../commands/waitUntil.md) can cause catastrophic issues, etc.) |  |  |
| Expressions of Eden Editor scenario attributes are called | All | ✓ | Eden Editor: Configuring Attributes | [Unscheduled](../topics/Scheduler.md#unscheduled-environment) | [player](../commands/player.md) is not available immediately. |  |
| Persistent functions are called | Client | ✓ | [Arma 3: Remote Execution](../topics/Remote_Execution.md), [BIS_fnc_MP](../functions/BIS_fnc_MP.md) |  |  |  |
| Modules are initialised | All | ✗ |  |  | Modules with `isTriggerActivated = 0` execute their functions in scheduled environment |  |
| [initServer.sqf](../topics/Event_Scripts.md#initserver-sqf) is executed | Server | N/A | [Event Scripts](../topics/Event_Scripts.md) | [Scheduled](../topics/Scheduler.md#scheduled-environment) |  |  |
| [initPlayerLocal.sqf](../topics/Event_Scripts.md#initplayerlocal-sqf) is executed | Client | ✓ | [Event Scripts](../topics/Event_Scripts.md) | [Scheduled](../topics/Scheduler.md#scheduled-environment) |  |  |
| [initPlayerServer.sqf](../topics/Event_Scripts.md#initplayerserver-sqf) is executed on the server | Client | ✓ | [Event Scripts](../topics/Event_Scripts.md) | [Scheduled](../topics/Scheduler.md#scheduled-environment) |  |  |
| Functions with *postInit* attribute are called | All | ✓ | [Arma 3: Functions Library](../topics/Functions_Library.md) | [Scheduled](../topics/Scheduler.md#scheduled-environment) |  |  |
| "BIS_fnc_init" variable is set to true | All | ✓ | Arma 2: Functions Library |  |  |  |
| [init.sqs](../topics/Event_Scripts.md#init-sqs) is executed | Multiplayer | ✓ | [Event Scripts](../topics/Event_Scripts.md) | [Scheduled](../topics/Scheduler.md#scheduled-environment) |  |  |
| [init.sqf](../topics/Event_Scripts.md#init-sqf) is executed | Multiplayer | ✓ | [Event Scripts](../topics/Event_Scripts.md) | [Scheduled](../topics/Scheduler.md#scheduled-environment) |  |  |

<sub>Source: [BI Community Wiki — Initialisation Order](https://community.bistudio.com/wiki/Initialisation_Order) (revision 373629).</sub>
