---
name: "BIS_fnc_EXP_camp_manager"
type: function
status: ok
groups: ["CampaignManager"]
arma3_since: "1.62"
locality: {"argument": null, "effect": null, "server_exec": false}
source: https://community.bistudio.com/wiki/BIS_fnc_EXP_camp_manager
revid: 379564
updated: 2026-10-31T13:54:37Z
---

# BIS_fnc_EXP_camp_manager

*Function · CampaignManager · Arma 3 v1.62*

Locality: executed with **spawn**

## Description

Synchronises the start of an Apex campaign mission between the server and the clients by moving the mission through the states `"Waiting"`, `"Intro"`, `"Loadout"` and `"Started"`. Each state change fires a scripted event (see [BIS_fnc_EXP_camp_manager_triggerEvent](../functions/BIS_fnc_EXP_camp_manager_triggerEvent.md)).
The function is spawned on every machine by the campaign's shared init script (`\A3\Missions_F_Exp\Campaign\Scripts\init.sqf`, included by each mission's `init.sqf`), after the handlers for these events have been added. It is meant for internal use by the campaign.

On every machine, it stores the intro videos, their subtitle scripts and the *noCinematics* flag in [missionNamespace](../commands/missionNamespace.md).

On a machine with a player ([hasInterface](../commands/hasInterface.md)), it waits for [player](../commands/player.md), fires the `"Waiting"` event locally, adds a [public variable event handler](../commands/addPublicVariableEventHandler.md) that fires the event of every new state received from the server, and adds a "Respawn" event handler that deletes the player's old body (once).

On the server, after the mission time has started:

1. [setTimeMultiplier](../commands/setTimeMultiplier.md) is set to 0.1 so the synchronisation does not move the time of day.
1. It waits until every player has registered as preloaded (see [BIS_fnc_EXP_camp_manager_onPlayerRegistered](../functions/BIS_fnc_EXP_camp_manager_onPlayerRegistered.md)) or until mission [time](../commands/time.md) reaches *maxWaitDelay*, then waits *minWaitDelay* seconds.
1. In multiplayer, if intro videos are given, it sets the state `"Intro"`.
1. In multiplayer, if *wantsLoadoutSelection* is [true](../commands/true.md), it sets the state `"Loadout"`, waits until every player has registered a finished loadout selection or *maxLoadoutDelay* seconds have passed, forces respawn on all machines (`0 remoteExecCall ["setPlayerRespawnTime", 0]`) and waits *minLoadoutDelay* seconds.
1. It sets the state `"Started"` and restores the previous time multiplier.

In single-player the mission goes directly from `"Waiting"` to `"Started"`.

## Syntax

```sqf
[introVideos, introVideosSubtitles, minWaitDelay, minLoadoutDelay, maxWaitDelay, maxLoadoutDelay, wantsLoadoutSelection, noCinematics] spawn BIS_fnc_EXP_camp_manager
```

**Parameters:**

- `introVideos`: [Array](../topics/Array.md) of [Strings](../topics/String.md) - (Optional, default []) paths of the intro videos to play in order; an empty array skips the intro
- `introVideosSubtitles`: [Array](../topics/Array.md) of [Strings](../topics/String.md) - (Optional, default []) for each intro video, the path of a subtitle script run with [execVM](../commands/execVM.md), or "" for none
- `minWaitDelay`: [Number](../topics/Number.md) - (Optional, default 2) seconds to wait after all players have preloaded
- `minLoadoutDelay`: [Number](../topics/Number.md) - (Optional, default 2) seconds to wait after the loadout selection has ended
- `maxWaitDelay`: [Number](../topics/Number.md) - (Optional, default 30) mission time in seconds after which the server stops waiting for players to preload
- `maxLoadoutDelay`: [Number](../topics/Number.md) - (Optional, default 300) maximum time in seconds to wait for all players to finish the loadout selection
- `wantsLoadoutSelection`: [Boolean](../topics/Boolean.md) - (Optional, default [true](../commands/true.md)) [false](../commands/false.md) to skip the loadout selection
- `noCinematics`: [Boolean](../topics/Boolean.md) - (Optional, default [false](../commands/false.md)) [true](../commands/true.md) to disable [BIS_fnc_EXP_camp_setCinematicMode](../functions/BIS_fnc_EXP_camp_setCinematicMode.md); cinematics must then be handled manually

**Returns:** [Nothing](../topics/Nothing.md)

## Examples

### Example 1

As in the Apex campaign mission EXP_m02:

```sqf
[
    ["A3\Missions_F_Exp\video\EXP_m02_vTitlecard.ogv", "A3\Missions_F_Exp\video\EXP_m02_vIN.ogv"],
    ["", "a3\Missions_F_Exp\Campaign\Briefings\EXP_m02_briefing.sqf"],
    nil, nil, nil, nil,
    true,
    false
] spawn BIS_fnc_EXP_camp_manager;
```

## See also

[BIS_fnc_EXP_camp_manager_getState](../functions/BIS_fnc_EXP_camp_manager_getState.md) · [BIS_fnc_EXP_camp_manager_setState](../functions/BIS_fnc_EXP_camp_manager_setState.md) · [BIS_fnc_EXP_camp_manager_triggerEvent](../functions/BIS_fnc_EXP_camp_manager_triggerEvent.md) · [BIS_fnc_EXP_camp_manager_onPlayerRegistered](../functions/BIS_fnc_EXP_camp_manager_onPlayerRegistered.md) · [BIS_fnc_addScriptedEventHandler](../functions/BIS_fnc_addScriptedEventHandler.md)

<sub>Source: [BI Community Wiki — BIS fnc EXP camp manager](https://community.bistudio.com/wiki/BIS_fnc_EXP_camp_manager) (revision 379564).</sub>
