Found Footage FPS

Category: Systems Architecture & UI
Context: Designed as a more focused, lower-scope iteration of ideas originating in Project Longbow, Found Footage FPS strands players in a highly adversarial, dark fantasy world. Inspired by Stargate, the primary objective is to endure hostile environments until an extraction window opens.

In sharp contrast to the diegetic, tablet-based UI of Project Longbow (which never paused the game), Found Footage FPS employs a stylized, non-diegetic “camera feed” UI paired with robust multiplayer-aware network states.

Prototype & Loop Tests

To see the adversarial extraction loop and the specific Found Footage UI rendering in action, watch the initial prototype tests:

Found Footage Loop Test 1
(Extraction Shooter Loop Test)

Found Footage UI Test
(Specific Found Footage UI & Non-Diegetic GUI Test)


Raid State Machine & AWOL Flow

The entire session lifecycle is governed by a strict finite state machine. The diagram below shows the full flow from lobby through extraction, including the AWOL penalty branch and the asymmetric co-op architecture.

Raid State Machine and Asymmetric Co-op

Asymmetric Multiplayer & Non-diegetic UI

The UIMainController handles the game’s menus through a non-diegetic overlay, fundamentally breaking from the “always live” diegetic philosophy of previous titles. Because the game supports a unique asymmetric cooperative multiplayer via Unity Netcode (HermesNetworkManager), the UI must intelligently handle time manipulation.

In this asymmetric setup, the Host is the FPS player (boots on the ground), while the Client acts as their “Handler”, helping them navigate the darkness. This is not symmetric co-op — the two roles have fundamentally different interfaces, information access, and responsibilities. The Host sees the world through the found-footage camera filter. The Handler gets a GoPro-style live feed from the Host’s camera plus a general area map showing entity positions, giving them situational awareness the Host does not have.

An earlier iteration explored a custom editor plugin that would pop the Handler’s view into a separate window entirely — the idea being that the Handler’s interface would feel like a distinct operations terminal rather than a panel inside the same game window. That approach was scrapped once it became clear the complexity of maintaining a secondary render window across network states was not worth the payoff for a prototype. The GoPro feed + map overlay accomplished the same asymmetry with far less engineering overhead.

When a player hits the menu toggle (OnToggleMenu):

  1. Solo Play: If ConnectedClientsIds.Count <= 1, pulling up the menu physically pauses the world (Time.timeScale = 0). The lone player is safe to review extraction information.
  2. Co-op Play: If multiple players are connected, the game recognizes the shared state. The UI overlay appears, providing access to menus, but time continues to run (Time.timeScale = 1). The Handler must actively guide and cover the Host while the Host checks objectives. This creates a trust dynamic: the Host is vulnerable every time they open the menu, and the Handler’s competence directly determines whether that vulnerability is punished.

Raid States and AWOL Penalties

The global GameManager operates the state machine transitioning through Setup, InRaid, RaidEnd, and Results. Extraction is not guaranteed — it must be survived.

If a player attempts to quit via the UI during an active raid, the controller intercepts the action through OnQuitButtonPressed():

This systemic friction ensures that the horror and tension of the “found footage” survival loop cannot be easily bypassed by simply pausing and quitting when overwhelmed. The AWOL system is the design’s answer to rage-quitting: if you enter a raid, you are committed until extraction or death.

Extraction Trigger Flow

Extraction follows the same holdout pattern as Data Division’s infiltration system, but with higher stakes:

  1. Extraction window opensLevelManager enables the extraction zone after objective conditions are met.
  2. Player enters trigger radius — The extraction timer begins counting down.
  3. Hold position — The player must survive in the extraction zone for the full duration. Leaving the zone resets the timer to zero.
  4. Extraction succeeds — State transitions to RaidEnd, data and loot are preserved.
  5. Player dies or is forced out — Extraction fails. The raid continues until the player extracts, dies, or goes AWOL.

The extraction zone is not a safe room. Enemies can follow the player into it. The holdout is a genuine survival challenge, not a loading screen with a progress bar.

Extraction Resources

Extraction is not always free. The system supports multiple extraction types based on what the player has available:

Extraction TypeCostCondition
Free ExtractNoneDefault extraction zone, always available after objectives are met
Paid ExtractIn-game currencyFaster or safer extraction point, purchased during the raid
Object ExtractConsumable itemRequires a specific physical object (e.g., flare, beacon) to activate the extraction trigger

This creates a resource management layer on top of the survival loop — the player may have completed their objectives but lack the currency or item to use the better extraction point, forcing them to use the riskier free zone instead.