custom-vip-escort-template

Share

Report
Custom VIP Escort Template

Prefab

VIP Escort

A custom tactical objective mode for Battlefield 6 Portal SDK.

One team must protect and escort a randomly selected VIP to the extraction zone while the enemy team hunts them down. The mode is built around coordinated squad movement, defensive positioning, ambushes, team communication, and clutch extraction moments.

Play now

Experience Code: 1xz1m

Files, tutorial, and setup

The full file download and setup instructions are available through my YouTube video:

https://youtu.be/ySqYyLrmg0Y

Please watch the video for the download link, setup instructions, and updates to the project files.

Mode summary

VIP Escort is a round-based attack/defend mode. At the start of each live round, one attacker is selected as the VIP. The attacking team must move with the VIP, protect them, and get them into the active extraction area. The defending team must stop the escort, eliminate the VIP, or prevent extraction until the timer expires.

The mode includes:

  • Prematch ready-up lobby
  • Team switch interact points
  • Ready interact points
  • Round-based attack/defend logic
  • Automatic VIP selection
  • VIP health bonus
  • Extraction checkpoint logic
  • Extraction hold timer
  • Custom HUD
  • Custom scoreboard
  • World icons for VIP and extraction points
  • Spectator flow for eliminated players
  • Fixed spectator cameras
  • Restricted-area logic
  • Invisible wall / boundary safety triggers
  • Role swap after round 3
  • Overtime round logic
  • First-to-4 scoring

Recommended player count

This mode is designed for squad-based gameplay. It can be tested with fewer players, but it plays best with coordinated teams.

Recommended: 5v5 Max per team in script: 8 players Best experience: voice chat, organized squads, and private/community servers

Round rules

  • First team to 4 round wins wins the match.
  • Maximum match length is 7 rounds.
  • Rounds 1–3 use the starting attack/defend setup.
  • Rounds 4–6 swap the attacking and defending sides.
  • Round 7 is overtime match point.
  • Each round has a short redeploy/reset phase.
  • Each deploy phase gives players time to spawn and prepare.
  • The live round timer is 180 seconds.
  • The VIP must hold inside the extraction zone for 10 seconds to win the round.
  • If the VIP dies, the defending team wins the round.
  • If attackers are eliminated, defenders win.
  • If defenders are eliminated, attackers win.
  • If time expires before extraction, defenders win.
  • If the VIP leaves or becomes invalid, defenders win by VIP lost/forfeit.

Gameplay flow

  1. Players start in the prematch ready area.
  2. Players can use interact points to switch teams.
  3. Players use ready interact points to mark themselves ready.
  4. When the lobby is ready, the match locks and begins.
  5. Players enter the deploy phase for the next round.
  6. When the live phase starts, the script selects a VIP from the attacking team.
  7. The VIP receives a health bonus and a VIP HUD callout.
  8. The extraction checkpoint becomes active.
  9. Attackers escort the VIP to the extraction zone.
  10. Defenders try to eliminate the VIP or stop the push.
  11. If the VIP enters extraction, a 10-second hold timer begins.
  12. If the VIP stays alive and remains in the extraction area, attackers win.
  13. If the VIP dies, leaves extraction, or time expires, the round resolves based on the win condition.
  14. The scoreboard updates and the next round begins.

Custom HUD

The mode includes a full custom HUD built for VIP Escort.

HUD elements include:

  • Prematch roster and ready panel
  • Top-center mode/round/timer bar
  • Team role indicator: Attack / Defend
  • Score line: Alpha vs Bravo, first to 4
  • VIP announcement
  • VIP extraction progress panel
  • Alive teammate/enemy indicators
  • Restricted area warning
  • VIP spotted warning
  • Spectator panel
  • Spectator target display
  • Overtime match point callout
  • Round end and match end notifications

Custom scoreboard

The mode uses a custom two-team scoreboard with three columns:

  • Kills
  • Deaths
  • Extracts

The VIP receives an extract point when they successfully complete the extraction. Deaths are tracked once per player per round, and kills are tracked during the live round.

VIP system

The VIP is selected from the attacking team at the start of the live phase.

VIP behavior:

  • VIP is selected from eligible attacking players.
  • VIP gets a health increase.
  • VIP receives special HUD messaging.
  • Attackers receive VIP and checkpoint guidance.
  • Defenders receive timed VIP reveal information.
  • VIP extraction only starts when the current VIP enters a valid extraction AreaTrigger.
  • VIP extraction cancels if the VIP leaves the extraction area.
  • VIP death instantly ends the round in favor of the defenders.

Extraction system

There are two configured extraction routes/checkpoint sets.

Extraction Set 1

  • Sector ObjID: 9900
  • Active extraction CapturePoint ObjID: 205
  • Inactive CapturePoint ObjIDs: 201, 202, 203, 204
  • Extraction AreaTrigger ObjID: 9300

Extraction Set 2

  • Sector ObjID: 300
  • Active extraction CapturePoint ObjID: 305
  • Inactive CapturePoint ObjIDs: 301, 302, 303, 304
  • Extraction AreaTrigger ObjID: 9800

Only the active extraction CapturePoints are used for the live objective. The inactive CapturePoints exist as helper/anchor objects for the script and should not be treated as normal objectives.

ObjID assignment

Prematch / ready-up objects

  • 8888 — Team 1 ready-up HQ spawner
  • 8889 — Team 2 ready-up HQ spawner
  • 889 — Ready-up AreaTrigger
  • 2001 — Team 1 / side A switch-team interact point
  • 2002 — Team 1 / side A ready interact point
  • 2003 — Team 2 / side B switch-team interact point
  • 2004 — Team 2 / side B ready interact point
  • 5001 — WorldIcon for switch-team interact point 1
  • 5002 — WorldIcon for ready interact point 1
  • 5003 — WorldIcon for switch-team interact point 2
  • 5004 — WorldIcon for ready interact point 2

Live round HQ and PlayerSpawner IDs

Normal live spawn routing:

  • 1 — Team 1 attacking HQ spawn
  • 3 — Team 1 attacking secondary HQ spawn
  • 2 — Team 2 defending HQ spawn
  • 4 — Team 2 defending secondary HQ spawn
  • 11 — Team 1 live PlayerSpawner
  • 13 — Team 1 secondary live PlayerSpawner
  • 12 — Team 2 live PlayerSpawner
  • 14 — Team 2 secondary live PlayerSpawner

Role-swap live spawn routing:

  • 5 — Team 1 defending HQ spawn
  • 7 — Team 1 defending secondary HQ spawn
  • 6 — Team 2 attacking HQ spawn
  • 8 — Team 2 attacking secondary HQ spawn

SpawnPoint helper IDs

These SpawnPoints are linked to HQ/PlayerSpawner objects. The script does not use SpawnPoint IDs directly for live spawn routing; it uses HQ and PlayerSpawner IDs instead.

Team 1 grouped spawns:

  • 515520 — Team 1 grouped SpawnPoints

Team 2 grouped spawns:

  • 615620 — Team 2 grouped SpawnPoints

Extraction / objective IDs

Main extraction set:

  • 9900 — Sector
  • 201204 — inactive/helper CapturePoints
  • 205 — active extraction CapturePoint
  • 9300 — extraction AreaTrigger

Second extraction set:

  • 300 — Sector2
  • 301304 — inactive/helper CapturePoints
  • 305 — active extraction CapturePoint
  • 9800 — extraction AreaTrigger

Spectator camera IDs

  • 9911 — Team 1 fixed spectator camera
  • 9921 — Team 2 fixed spectator camera

Restricted area / boundary IDs

  • 5101 — Team 1 restricted/protection AreaTrigger
  • 5102 — Team 2 restricted/protection AreaTrigger
  • 5201 — inner invisible wall AreaTrigger
  • 5202 — outer invisible wall AreaTrigger

Extra AreaTrigger IDs

  • 7002 — additional AreaTrigger objects present in the spatial file

Godot project notes

The spatial file includes a VIP Components group containing the custom objective, spawn, extraction, spectator, and checkpoint objects used by the script.

Important Godot setup notes:

  • Keep the VIP Components object paths intact when possible.
  • Keep ObjIDs consistent with the script constants.
  • Do not use raw SpawnPoint IDs for main script routing.
  • Use HQ spawner IDs and PlayerSpawner IDs for live spawn routing.
  • Extraction CapturePoints 205 and 305 are the main active objective anchors.
  • Extraction AreaTriggers 9300 and 9800 are what actually start the VIP extraction hold.
  • FixedCamera objects 9911 and 9921 are required for dead-player spectator behavior.
  • Invisible wall triggers 5201 and 5202 are used by script logic to keep players inside the intended playable area.
  • Restricted triggers 5101 and 5102 are used for team-based restricted area warnings.

What the bundle.ts script does

The dist/bundle.ts file is the compiled Portal script output. It bundles the VIP Escort game mode source files together with required helper utilities.

The bundle includes these major systems:

1. Prematch lobby

The prematch lobby controls the ready-up flow before the match starts.

It handles:

  • Player ready state
  • Team switching
  • Ready area detection
  • Ready interact points
  • Team switch interact points
  • Human player detection
  • Lobby lock once the match begins
  • Prematch HUD updates

2. Round state machine

The script manages the full match lifecycle with these phases:

  • prematch
  • redeploy
  • deploy
  • live
  • round-end
  • game-end

Each phase has its own timer, state, UI behavior, and transition logic.

3. Attack/defend role assignment

The script assigns Alpha and Bravo to attacker/defender roles by round.

  • Early rounds use the starting attacker setup.
  • Middle rounds swap roles.
  • Final overtime returns to the original attacker setup.

This gives both teams a chance to attack and defend.

4. VIP selection

At live round start, the script selects an eligible player from the attacking team as the VIP.

The VIP is tracked by player ID and stored in game state. The script checks the VIP’s life state, extraction state, and server validity throughout the round.

5. VIP health bonus

The VIP receives an increased health value so the escort team has a chance to protect and move the VIP under fire.

Current VIP max health value in the script:

  • 180

6. Extraction checkpoint system

The script enables the active extraction checkpoint and disables inactive helper CapturePoints. It then spawns checkpoint world icons and visual smoke/VFX markers for the active extraction locations.

The extraction system checks:

  • Is the player the current VIP?
  • Is the VIP alive?
  • Is the VIP inside a valid extraction AreaTrigger?
  • Has the VIP stayed inside extraction long enough?
  • Did the VIP leave the area before the timer finished?

If the VIP holds the extraction for 10 seconds, the attackers win the round.

7. Win condition logic

The script supports these win conditions:

  • VIP EXTRACTED
  • VIP ELIMINATED
  • ATTACKERS ELIMINATED
  • DEFENDERS ELIMINATED
  • TIME EXPIRED
  • VIP LOST

The script determines whether the attackers or defenders win based on the condition, updates the round score, and either starts the next round or ends the match.

8. Custom HUD

The script builds a custom UI using the Portal UI utilities.

The HUD includes:

  • Mode title
  • Round number
  • Round timer
  • Score
  • Role indicator
  • VIP state
  • Extraction progress
  • Alive player dots
  • Restricted area warning
  • Spectator instructions
  • Round start/end callouts
  • Match end callouts

9. World icons

The script spawns and updates world icons for:

  • VIP
  • Extraction checkpoints
  • Prematch switch-team interact points
  • Prematch ready interact points

The VIP icon follows the VIP during the round. Attackers get friendly VIP information, while defenders get timed reveal behavior so the VIP is not permanently exposed.

10. Spectator system

When a player dies during the live round, they are moved into the spectator flow.

Spectator behavior includes:

  • Dead players become pending spectators.
  • The script waits for undeploy/deploy state before applying the spectator camera.
  • Team 1 uses camera 9911.
  • Team 2 uses camera 9921.
  • Spectators can watch alive teammates.
  • Jump cycles to the next alive teammate.
  • Spectator inventory is stripped.
  • The first dead human on a team can control the team spectator camera behavior.

11. Restricted area logic

The script handles restricted area triggers for each team.

If a player enters a restricted area:

  • A warning appears.
  • A countdown starts.
  • The player must return to the playable combat area.
  • The script clears the warning when the player leaves the restricted trigger.

12. Invisible wall / boundary logic

The script uses inner and outer invisible wall AreaTriggers to control player movement around the intended playable space.

The invisible wall system can:

  • Detect entry/exit from wall triggers
  • Temporarily restrict movement/fire inputs
  • Backstep players away from the wall
  • Clear locks when players return to a valid area

13. Scoreboard

The custom scoreboard tracks:

  • Kills
  • Deaths
  • Extracts

It uses a custom two-team scoreboard layout and publishes player values during the match.

14. Safety / recovery logic

The script includes several supervisor and recovery systems:

  • Ongoing global supervisor tick
  • Phase deadline repair
  • Timer reconciliation
  • UI refresh queues
  • Spawn state repair
  • Spectator target refresh
  • Game-end retry logic
  • Runtime cleanup on game mode ending

These systems help keep the mode stable if players join, leave, die, switch teams, undeploy, or fail to deploy correctly.

File/package notes

The project is built with a Battlefield 6 Portal TypeScript workflow.

The important output files are:

  • vipescort.ts — compiled Portal script
  • vipescort.strings.json — strings used by the mode
  • Spatial JSON / Godot project files — object placement, ObjIDs, capture points, spawns, triggers, and cameras

The uploaded bundle includes the VIP Escort script and bundled helper utilities such as logging, events, timers, UI components, spectator logic, checkpoint logic, world icons, scoreboard, and the main VIP Escort state machine.

Known setup requirements

Before running the mode, make sure the following objects exist with the correct ObjIDs:

  • Ready-up HQs: 8888, 8889
  • Ready-up AreaTrigger: 889
  • Interact points: 2001, 2002, 2003, 2004
  • Prematch WorldIcons: 5001, 5002, 5003, 5004
  • Live HQ spawns: 18
  • Live PlayerSpawners: 1114
  • Extraction sectors: 9900, 300
  • Extraction CapturePoints: 205, 305
  • Extraction AreaTriggers: 9300, 9800
  • Fixed spectator cameras: 9911, 9921
  • Restricted triggers: 5101, 5102
  • Invisible wall triggers: 5201, 5202

Creator notes

This mode is still a custom community project and may continue to receive updates. Feel free to test it, modify it, and build on it for your own servers or community events.

If you use this mode in a video, server, or modified experience, credit is appreciated.

Files and setup video:

https://youtu.be/ySqYyLrmg0Y

Created by Mind Flexor. Credit to Nodone for creating the spectator mode!

1XZ1M
Edit

Created by

pfp

mindflexor

on

May 26, 2026, 3:04 p.m.

last updated at

May 26, 2026, 3:10 p.m.

10