Spectate System #
Spectate System #
- Overview
- Core Concepts
- Components
- Spectate Restrictions
- Alive Player Prioritization
- Player Switching
- Integration with Game Mode System
- How-To: Enable and Configure Spectating
- Examples and Use Cases
- See Also
1. Overview #
The Spectate System allows players to view the game from other players’ perspectives. It supports team-based restrictions, alive player prioritization, and manual player switching via input controls.
Key Features: – Spectate other players from their point of view – Team-based restrictions: spectate only teammates (not enemy teams) – Override options: customize who is allowed to spectate and who can be spectated – Alive player prioritization: optionally exclude dead players from the spectate list – Player switching: cycle through spectatable players using left/right arrow keys – Game Mode integration: coupled with the Game Mode System for team and player state queries
Use Cases: – Team-based games where dead players spectate living teammates – Tournament observer modes with custom spectate permissions – Training or coaching scenarios where one player observes another – Post-match replays where players cycle through different perspectives

2. Core Concepts #
- Spectator: The player who is viewing another player’s perspective (the one doing the spectating).
- Spectate Target: The player being spectated (whose view is shown to the spectator).
- Team-Based Spectating: The current implementation restricts spectators to only view teammates (players on the same team). Enemy team members are not visible in the spectate list.
- Alive Player Prioritization: An option that filters out dead players from the spectate list, ensuring spectators only view living players.
- Override Options: Configurable settings to customize spectate permissions (who can spectate, who can be spectated).
- Player Switching: The ability to cycle through the list of spectatable players using input controls (left/right arrow keys).
3. Components #
Spectate System Component (AC_Spectate): – Manages the spectator’s current target and the list of spectatable players – Enforces team-based restrictions and alive player prioritization – Provides player switching functionality (cycle left/right through available targets) – Integrates with the Game Mode System to query team affiliation and player state (alive/dead)
4. Spectate Restrictions #
The Spectate System provides configurable restrictions to control who can spectate and who can be spectated.
4.1. Team-Based Spectating (Current Implementation) #
Behavior: – Spectators can only view players on their own team. – Enemy team members are excluded from the spectate list. – This restriction is enforced by querying the Game Mode System (or Team Manager) for team affiliation.
Use Case: Competitive team-based games where revealing enemy positions via spectating would be unfair (e.g., dead players spectating enemies and communicating their locations to living teammates).
4.2. Override Options #
The system supports overriding the default team-based restriction:
- Who is allowed to spectate: You can specify which players or roles are permitted to enter spectate mode (e.g., only dead players, or specific observer roles).
- Who can be spectated: You can customize the list of spectatable players (e.g., allow spectating all players regardless of team, or restrict to specific players).
Use Case: – Observer/coach roles that can spectate all players (both teams). – Custom game modes where spectating is unrestricted (e.g., free-for-all or non-competitive modes). – Replay systems where a spectator can view any player’s perspective.
5. Alive Player Prioritization #
Behavior: – When enabled, the Spectate System prioritizes alive players in the spectate list. – Dead players are still shown in the list (not excluded), but alive players appear first or are easier to access. – The system does not automatically switch targets when the current spectate target dies; switching requires manual input (left/right arrow).
Use Case: – Team-based shooters or battle royales where spectators (dead players) prefer to view living teammates but can still manually switch to dead players if needed. – Avoid forcing spectators to view inactive/dead player perspectives by default.
Configuration: This is an option that can be toggled (enabled/disabled).
6. Player Switching #
Controls: – Configurable input actions (commonly bound to left/right arrow keys or similar navigation controls). – Previous Player: Switch to the previous player in the spectate list. – Next Player: Switch to the next player in the spectate list.
Behavior: – The spectate list is not explicitly ordered; it is based on the player array or team list (depending on implementation context). – Switching cycles through the list in a loop (e.g., if you are spectating the last player in the list and press next, it wraps to the first player). – The spectator’s view immediately transitions to the new target’s perspective. – Switching is manual only; the system does not automatically switch targets when the current target dies or changes state.
Use Case: – Dead player wants to check on different teammates to see who is still alive or in a good position. – Observer wants to quickly scan through multiple players to find interesting gameplay moments.
Implementation Notes: – Ensure input bindings are configured for spectate switching actions in your project’s input settings.

7. How-To: Enable and Configure Spectating #
Step 1: Add the Spectate System Component #
- Add the AC_Spectate component to the character.
Step 2: Configure Spectate Restrictions #
- Set Team-Based Spectating (enabled by default in the current implementation).
- Optionally configure Override Options to customize who can spectate and who can be spectated:
- Example: Allow observer roles to spectate all players (both teams).
- Example: Restrict spectating to a whitelist of specific players.
Step 3: Enable Alive Player Prioritization (Optional) #
- Set the Alive Player Prioritization option to true (or enable the corresponding property).
- The Spectate System will prioritize alive players in the spectate list (dead players remain accessible but are lower priority).
Step 4: Configure Input Bindings #
- Ensure spectate switching input actions are bound in your project’s input settings (commonly mapped to left/right arrow keys or similar navigation controls).
- Test switching between spectate targets in-game.
Step 5: Test #
- Start a multiplayer session with multiple players on different teams.
- Kill a player (so they enter spectate mode).
- Verify the spectator can only see teammates (if team-based spectating is enabled).
- Use the configured input controls to cycle through spectate targets.
- Verify alive player prioritization (if enabled) prioritizes living players in the spectate order.
8. Examples and Use Cases #
Example 1: Team Deathmatch Spectating #
Scenario: A player dies in a team-based shooter and wants to spectate their living teammates.
Implementation: – Spectate System is configured with Team-Based Spectating enabled and Alive Player Prioritization enabled. – When the player dies, they automatically enter spectate mode (handled by Game Mode System or Player Manager). – The spectator sees a list of teammates with living players prioritized; they can cycle through them using the configured input controls. – Enemy team members are not visible in the spectate list.
Example 2: Observer/Coach Mode #
Scenario: A coach wants to spectate all players (both teams) to analyze gameplay.
Implementation: – Create a special “Coach” role or player type. – Use Override Options to allow the Coach to spectate all players regardless of team. – Disable Alive Player Prioritization so the Coach can spectate players in any order (alive or dead). – The Coach can cycle through all players in the match using the configured input controls.
Example 3: Battle Royale Spectating #
Scenario: In a battle royale game, eliminated players spectate the player who eliminated them, then can switch to other living players.
Implementation: – When a player is eliminated, set their initial spectate target to the player who eliminated them. – Enable Alive Player Prioritization so living players appear first in the spectate order. – Spectators can use the configured input controls to switch to other players. – Team-based spectating may be disabled (or configured for squad-based spectating if the game has squads).
Example 4: Free-For-All Spectating #
Scenario: In a free-for-all deathmatch, dead players can spectate any other player.
Implementation: – Disable Team-Based Spectating (or configure it to treat all players as one “team” or no team). – Configure Alive Player Prioritization as desired (enabled to prioritize living players, or disabled to show all players equally). – Spectators can cycle through all players using the configured input controls.
9. See Also #
- Game Mode System: Provides team affiliation and player state (alive/dead) data to the Spectate System.
- Team Manager: Manages team assignments and team-based logic.
- Player Manager: Tracks player states and may fire events when players die/respawn.
- HUD: May display spectate UI (e.g., “Now spectating: PlayerName” indicator).
