End Game Spectator Mode – Arma 3
Lou Montana (talk | contribs) m (Some wiki formatting) |
|||
Line 154: | Line 154: | ||
==== Overwriting Random Insignias ==== | ==== Overwriting Random Insignias ==== | ||
[[File: arma3 spectator insignia.png| | [[File: arma3 spectator insignia.png|thumb|350px]] | ||
By default, spectator assigns a random insignia for each group. This leads to issues where western forces have eastern insignias and so on. | By default, spectator assigns a random insignia for each group. This leads to issues where western forces have eastern insignias and so on. | ||
With the following script one can force a certain insignia per side. Of course, this script can be adjusted to your needs. The script needs to be executed for every [[player]] preferably in [[Event Scripts|initPlayerLocal.sqf]]. | With the following script one can force a certain insignia per side. Of course, this script can be adjusted to your needs. The script needs to be executed for every [[player]] preferably in [[Event Scripts|initPlayerLocal.sqf]]. | ||
<sqf>#define INSIGNIA_DEFAULT missionNamespace getVariable ["Spectator_Default_Insignia", "a3\3den\data\displays\display3den\panelright\side_empty_ca.paa"] | <sqf> | ||
#define INSIGNIA_DEFAULT_WEST missionNamespace getVariable ["Spectator_Default_Insignia_West", "a3\3den\data\displays\display3den\panelright\side_west_ca.paa"] | #define INSIGNIA_DEFAULT missionNamespace getVariable ["Spectator_Default_Insignia", "a3\3den\data\displays\display3den\panelright\side_empty_ca.paa"] | ||
#define INSIGNIA_DEFAULT_INDEPENDENT missionNamespace getVariable ["Spectator_Default_Insignia_Independent", "a3\3den\data\displays\display3den\panelright\side_guer_ca.paa"] | #define INSIGNIA_DEFAULT_WEST missionNamespace getVariable ["Spectator_Default_Insignia_West", "a3\3den\data\displays\display3den\panelright\side_west_ca.paa"] | ||
#define INSIGNIA_DEFAULT_EAST missionNamespace getVariable ["Spectator_Default_Insignia_East", "a3\3den\data\displays\display3den\panelright\side_east_ca.paa"] | #define INSIGNIA_DEFAULT_INDEPENDENT missionNamespace getVariable ["Spectator_Default_Insignia_Independent", "a3\3den\data\displays\display3den\panelright\side_guer_ca.paa"] | ||
#define INSIGNIA_DEFAULT_CIVILIAN missionNamespace getVariable ["Spectator_Default_Insignia_Civilian", "a3\3den\data\displays\display3den\panelright\side_civ_ca.paa"] | #define INSIGNIA_DEFAULT_EAST missionNamespace getVariable ["Spectator_Default_Insignia_East", "a3\3den\data\displays\display3den\panelright\side_east_ca.paa"] | ||
#define INSIGNIA_DEFAULT_CIVILIAN missionNamespace getVariable ["Spectator_Default_Insignia_Civilian", "a3\3den\data\displays\display3den\panelright\side_civ_ca.paa"] | |||
//Set default insignia shown in spectator mode for every newly created group | //Set default insignia shown in spectator mode for every newly created group | ||
addMissionEventHandler ["GroupCreated", | addMissionEventHandler ["GroupCreated", | ||
{ | { | ||
params ["_group"]; | |||
private _insignia = switch (side _group) do | |||
{ | |||
case west: { INSIGNIA_DEFAULT_WEST; }; | |||
case independent: { INSIGNIA_DEFAULT_INDEPENDENT; }; | |||
case east: { INSIGNIA_DEFAULT_EAST; }; | |||
case civilian: { INSIGNIA_DEFAULT_CIVILIAN; }; | |||
default { INSIGNIA_DEFAULT; }; | |||
}; | |||
_group setVariable ["BIS_dynamicGroups_lastinsignia", _insignia]; | |||
}]; | }]; | ||
Line 198: | Line 184: | ||
allGroups apply | allGroups apply | ||
{ | { | ||
private _insignia = switch (side _x) do | |||
{ | |||
case west: { INSIGNIA_DEFAULT_WEST; }; | |||
case independent: { INSIGNIA_DEFAULT_INDEPENDENT; }; | |||
case east: { INSIGNIA_DEFAULT_EAST; }; | |||
case civilian: { INSIGNIA_DEFAULT_CIVILIAN; }; | |||
default { INSIGNIA_DEFAULT; }; | |||
}; | |||
_x setVariable ["BIS_dynamicGroups_lastinsignia", _insignia]; | |||
}; | }; | ||
true | true | ||
</sqf> | </sqf> | ||
== Game Phase Setup == | == Game Phase Setup == | ||
The spectator UI can display different game phases. | The spectator UI can display different game phases. | ||
These can be set by executing | These can be set by executing |
Latest revision as of 13:04, 6 November 2024
The Nexus Update has introduced a new spectator mode which should improve the way players can observe a match. While this new scenario viewing mode was introduced with End Game it can be used outside of the multiplayer mode, open to community members to use in their own missions.
Camera Perspectives
- 1st Person Perspective
- Free Perspective (Optional)
- 3rd Person Perspective (Optional)
Vision Modes
- Normal
- Night Vision (in 1PP depends on the unit's current state)
- Thermal Vision (in 1PP depends on the unit's current state)
Flashlight Mode
Point lights are created at the camera location and at the cursor location in world.
Custom Map
A custom map designed for the spectator mode, allowing for fast but precise map navigation and changing focused unit.
Controls
For a full list see the ingame control hints
Keybinding | Action |
---|---|
W/S | Free Perspective movement forward / backward |
A/D | Free Perspective movement left / right |
Q/Z | Free Perspective movement up / down |
⇧ Shift + W/A/S/D/Q/Z | Free Perspective fast speed |
Alt + W/A/S/D/Q/Z | Free Perspective very fast speed |
Alt + ⇧ Shift + W/A/S/D/Q/Z | Free Perspective ultra fast speed |
| |
Select / Deselect spectator focused unit / vehicle | |
Look / Rotate Around | |
⟵ | Hide / Show spectator interface |
Space | If spectator has a unit focused it changes through the available camera modes |
L | Flashlight mode |
M | Map |
N | Night Vision |
Ctrl + F1..F10 | Save currently selected soldier |
F1..F10 | Select saved soldier |
Ctrl + 0..9 | Save current Free Perspective camera position |
0..9 | Select Free Perspective camera position |
NUM Enter ↵/NUM 0/NUM . | Select camera view |
O | Draw projectiles |
Page Up | View Distance +250 m |
Page Down | View Distance -250 m |
Scenario Implementation
Debug Spectator Mode
It is possible to access the Spectator Mode while previewing in the Editor / EDEN Editor by pressing Esc and clicking Spectator, to close you can repeat previous step.
Respawn Type
In certain respawn types, the Spectator Mode is automatically executed upon death and replaces the old mode. It works automatically with respawn 1 ("Bird") and 5 ("Side" if there's no AI left). For more information on the available respawn types and their specific behavior see Arma 3: Respawn - Respawn Types.
respawn = 1;
Full Control
In case you would like to control when a player starts / stops spectating, you can use the built-in functions to do exactly that. See BIS_fnc_EGSpectator for more information.
Spectate When Dead
If you are using a respawn type different then 1 ("Bird"), you may want to execute the spectator mode when a player dies, then stop the spectator when the player respawns, this could be achieved in many ways, such as the one below, which will make every player start spectating when dead, and stop spectating when he respawns, 60 seconds after:
Description.ext
respawn = 3;
respawnDelay = 60;
onPlayerKilled.sqf
onPlayerRespawn.sqf
Virtual Spectator
The new Spectator mode also brings a new special object that can be controlled by a player and will give the controlling player the Spectator Mode control, just drop it in a scenario and start spectating that easily. If you are accessing the Virtual Spectator from EDEN Editor, you will see custom attributes to control certain parts of the Virtual Spectator functionality within EDEN.
Mission Configuration
Set the following variables in the player's namespace, preferable in initPlayerLocal.sqf to configure the specatator UI.
Overwriting Random Insignias
By default, spectator assigns a random insignia for each group. This leads to issues where western forces have eastern insignias and so on. With the following script one can force a certain insignia per side. Of course, this script can be adjusted to your needs. The script needs to be executed for every player preferably in initPlayerLocal.sqf.
Game Phase Setup
The spectator UI can display different game phases. These can be set by executing
where "PHASE III" can be any string describing the phase.
The current game phase can be retrieved with