Initialisation Order: Difference between revisions
Jump to navigation
Jump to search
m (Text replacement - " it's" to " it is") |
Lou Montana (talk | contribs) m (Page refresh) |
||
Line 1: | Line 1: | ||
Whenever a mission is launched (or [[Join In Progress|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. | |||
[[Event Scripts]] are a key part of a mission's initialisation order and will be utilised often when working with [[SQF syntax|SQF]]. | |||
{| class="bikitable" style="float: right; margin: 0 0 0.5em 1.5em" | |||
{| class="bikitable" | |||
|+ Key | |+ Key | ||
!Item | ! Item | ||
!Meaning | ! Meaning | ||
|- | |- | ||
| | | style="background-color: #95F0AD" | | ||
|Single Player Only | | Single Player Only | ||
|- | |- | ||
| | | style="background-color: #95DEF0" | | ||
|Multiplayer Only | | Multiplayer Only | ||
|- | |- | ||
| | | style="background-color: #DEF0AD" | | ||
|Order is not guaranteed | | 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. | |||
{{Informative | In multiplayer the following is relevant to every machine including the server and [[Arma 3 Headless Client|headless clients]]. | |||
If the server is non-dedicated then it should be considered both a server and client.}} | |||
{{Clear}} | |||
== Arma 3 == | |||
{| class="bikitable" | {| class="bikitable" | ||
|+ Order of Initialisation (From First to Last) | |||
|+ Order of | |||
! Task | ! Task | ||
! Applies To | ! Applies To | ||
Line 37: | Line 36: | ||
! Notes | ! Notes | ||
|- | |- | ||
|Functions with ''recompile'' attribute are recompiled | | Functions with ''recompile'' attribute are recompiled | ||
|All | | All | ||
| | | {{task/}} | ||
|[[Functions Library | | [[Arma 3 Functions Library]] | ||
| | | | ||
| | | | ||
|- | |- | ||
|Functions with ''preInit'' attribute are called | | Functions with ''preInit'' attribute are called | ||
|All | | All | ||
| | | {{task/}} | ||
|[[Functions Library | | [[Arma 3 Functions Library]] | ||
|[[Scheduler# | | [[Scheduler#Unscheduled Environment|Unscheduled]] | ||
| | | | ||
|- | |- | ||
|Object Init Event Handlers are called | | Object Init Event Handlers are called | ||
|All | | All | ||
| {{task}} | |||
| | | | ||
| [[Scheduler#Unscheduled Environment|Unscheduled]] | |||
|[[Scheduler# | |||
| | | | ||
|- | |- | ||
|Expressions of Eden Editor entity attributes are called | | Expressions of Eden Editor entity attributes are called | ||
|<!-- network --> | | <!-- network --> | ||
| | | {{task}} | ||
|[[Eden Editor: Configuring Attributes]] | | [[Eden Editor: Configuring Attributes]] | ||
|[[Scheduler# | | [[Scheduler#Unscheduled Environment|Unscheduled]] | ||
|They are called on the server. <code>[[isPlayer]] _entity;</code> does not return true immediately. Once entity has become a [[player]], the entity is transfered to the client. | | They are called on the server. <code>[[isPlayer]] _entity;</code> does not return true immediately. Once entity has become a [[player]], the entity is transfered to the client. | ||
|- | |- | ||
|Object | | Object initialisation fields are called | ||
|All | | All | ||
| | | {{task/}} | ||
| | | | ||
|[[Scheduler# | | [[Scheduler#Unscheduled Environment|Unscheduled]] | ||
| | |||
|- style="background-color: #95F0AD" | |||
| [[Event Scripts#init.sqs|init.sqs]] is executed | |||
| Singleplayer | |||
| <small>N/A</small> | |||
| [[Event Scripts]] | |||
| | | | ||
| | | | ||
|- | |- style="background-color: #95F0AD" | ||
| [[Event Scripts#init.sqf|init.sqf]] is executed | |||
| | | Singleplayer | ||
| | | <small>N/A</small> | ||
| [[Event Scripts]] | |||
| [[Scheduler#Scheduled Environment|Scheduled]]<ref name="enginewaits">Note that while the environment is [[Scheduler#Scheduled Environment|Scheduled]] ([[canSuspend]] returns true), the engine seems to wait until the script is done executing, essentially behaving similarly to an [[Scheduler#Unscheduled Environment|Unscheduled environment]] - infinite loops will freeze the game, uiSleep may pause the game for up to ~20secs (postInit), etc.</ref> | |||
| | | | ||
|- | |- | ||
|Expressions of Eden Editor scenario attributes are called | | Expressions of Eden Editor scenario attributes are called | ||
| All | | All | ||
| | | {{task/}} | ||
|[[Eden Editor: Configuring Attributes]] | | [[Eden Editor: Configuring Attributes]] | ||
|[[Scheduler# | | [[Scheduler#Unscheduled Environment|Unscheduled]] | ||
| [[player | | [[player]] is not available immediately. | ||
|- | |- | ||
|Persistent functions are called | | Persistent functions are called | ||
|Client | | Client | ||
| | | {{task/}} | ||
|[[BIS_fnc_MP]] | | [[BIS_fnc_MP]] | ||
| | | | ||
| | | | ||
|- | |- | ||
|Modules are | | Modules are initialised | ||
|All | | All | ||
| {{task}} | |||
| | | | ||
| | | | ||
| | | | ||
|- style="background-color: #DEF0AD" | |||
| [[Event Scripts#initServer.sqf|initServer.sqf]] is executed | |||
| Server | |||
| <small>N/A</small> | |||
| [[Event Scripts]] | |||
| [[Scheduler#Scheduled Environment|Scheduled]] | |||
| | | | ||
|- | |- style="background-color: #DEF0AD" | ||
| [[Event Scripts#initPlayerLocal.sqf|initPlayerLocal.sqf]] is executed | |||
| | | Client | ||
| | | {{task/}} | ||
| [[Event Scripts]] | |||
| [[Scheduler#Scheduled Environment|Scheduled]] | |||
| | | | ||
|- | |- style="background-color: #DEF0AD" | ||
| [[Event Scripts#initPlayerServer.sqf|initPlayerServer.sqf]] is executed on the server | |||
| Client | |||
| | | {{task/}} | ||
| [[Event Scripts]] | |||
| [[Scheduler#Scheduled Environment|Scheduled]] | |||
| | | | ||
|- | |- | ||
| | | Functions with ''postInit'' attribute are called | ||
| | | All | ||
| | | {{task/}} | ||
| [[Arma 3 Functions Library]] | |||
| [[Scheduler#Scheduled Environment|Scheduled]]<ref name="enginewaits"/> | |||
| | | | ||
|- | |- | ||
| | | "BIS_fnc_init" variable is set to true | ||
|All | | All | ||
| | | {{task/}} | ||
|[[Functions Library | | [[Arma 2: Functions Library]] | ||
| | | | ||
| | | | ||
|- style="background-color: #95DEF0" | |||
| [[Event Scripts#init.sqs|init.sqs]] is executed | |||
| All | |||
| {{task/}} | |||
| [[Event Scripts]] | |||
| [[Scheduler#Scheduled Environment|Scheduled]] | |||
| | | | ||
|- | |- style="background-color: #95DEF0" | ||
| [[Event Scripts#init.sqf|init.sqf]] is executed | |||
| All | |||
| {{task/}} | |||
| [[Event Scripts]] | |||
| [[Scheduler#Scheduled Environment|Scheduled]] | |||
| | |||
| | | | ||
|} | |} | ||
[[Category: Arma 3: Editing]] | [[Category: Arma 3: Editing]] | ||
[[Category: | [[Category: Scripting Topics]] |
Revision as of 21:45, 15 September 2020
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.
Event Scripts are a key part of a mission's initialisation order and will be utilised often when working with SQF.
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.
Arma 3
Task | Applies To | JIP | Related To | Exec Environment | Notes |
---|---|---|---|---|---|
Functions with recompile attribute are recompiled | All | Template:task/ | Arma 3 Functions Library | ||
Functions with preInit attribute are called | All | Template:task/ | Arma 3 Functions Library | Unscheduled | |
Object Init Event Handlers are called | All | Template:task | Unscheduled | ||
Expressions of Eden Editor entity attributes are called | Template:task | Eden Editor: Configuring Attributes | Unscheduled | They are called on the server. isPlayer _entity; does not return true immediately. Once entity has become a player, the entity is transfered to the client.
| |
Object initialisation fields are called | All | Template:task/ | Unscheduled | ||
init.sqs is executed | Singleplayer | N/A | Event Scripts | ||
init.sqf is executed | Singleplayer | N/A | Event Scripts | Scheduled[1] | |
Expressions of Eden Editor scenario attributes are called | All | Template:task/ | Eden Editor: Configuring Attributes | Unscheduled | player is not available immediately. |
Persistent functions are called | Client | Template:task/ | BIS_fnc_MP | ||
Modules are initialised | All | Template:task | |||
initServer.sqf is executed | Server | N/A | Event Scripts | Scheduled | |
initPlayerLocal.sqf is executed | Client | Template:task/ | Event Scripts | Scheduled | |
initPlayerServer.sqf is executed on the server | Client | Template:task/ | Event Scripts | Scheduled | |
Functions with postInit attribute are called | All | Template:task/ | Arma 3 Functions Library | Scheduled[1] | |
"BIS_fnc_init" variable is set to true | All | Template:task/ | Arma 2: Functions Library | ||
init.sqs is executed | All | Template:task/ | Event Scripts | Scheduled | |
init.sqf is executed | All | Template:task/ | Event Scripts | Scheduled |
- ↑ 1.0 1.1 Note 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 ~20secs (postInit), etc.