Prefab
Custom Obliteration Template
A template for creating your own Custom Obliteration experience in Battlefield Portal / Portal SDK.
Can be edited for:
- Obliteration 12v12
- Squad Obliteration 5v5
- Custom objective layouts on Portal SDK spatial maps
Package includes
- Obliteration 12v12 code
- Squad Obliteration 5v5 code
- Spatial editor / Godot map examples
- MCOM objective logic
- Bomb spawn logic
- Ready-up area logic
- Team switch / team ready interact points
- Dynamic HQ routing and safe-spawn logic
- Objective SFX, VFX, world icons, and explosion/fire effects
Included example map files
- MF_ContaminatedObliteration.spatial.json — Obliteration 12v12 example
- MF_Hagental_BaseSQO.spatial.json — Squad Obliteration 5v5 example
You can add this template to your own custom maps by copying the required objects into your spatial map and keeping the ObjIds synced with the script configuration.
Tutorial
YouTube tutorial: https://www.youtube.com/watch?v=71jB-_2rZ-U
ObjID Assignment
Core HQ and player spawn IDs
- 1 — Team 1 Initial HQ
- 2 — Team 2 Initial HQ
- 3 — Team 1 Live HQ
- 4 — Team 2 Live HQ
- 11 — PlayerSpawner for HQ 1
- 12 — PlayerSpawner for HQ 2
- 13 — PlayerSpawner for HQ 3
- 14 — PlayerSpawner for HQ 4
- 8888 — Team 1 Ready-Up HQ
- 8889 — Team 2 Ready-Up HQ
Objective sectors and capture points
- 200 — Team 1 objective sector
- 201 — Objective A CapturePoint
- 202 — Objective B CapturePoint
- 203 — Objective C CapturePoint
- 300 — Team 2 objective sector
- 301 — Objective D CapturePoint
- 302 — Objective E CapturePoint
- 303 — Objective F CapturePoint
- 400 — Disabled sector / helper sector
MCOM IDs
- 7101 — MCOM for Objective A
- 7102 — MCOM for Objective B
- 7103 — MCOM for Objective C
- 7201 — MCOM for Objective D
- 7202 — MCOM for Objective E
- 7203 — MCOM for Objective F
Objective interact points
- 2101 — Objective A interact point
- 2102 — Objective B interact point
- 2103 — Objective C interact point
- 2104 — Objective D interact point
- 2105 — Objective E interact point
- 2106 — Objective F interact point
Objective area triggers
- 401 — Objective A area trigger
- 402 — Objective B area trigger
- 403 — Objective C area trigger
- 501 — Objective D area trigger
- 502 — Objective E area trigger
- 503 — Objective F area trigger
Bomb spawn system
- 3100 — Bomb spawn sector
- 3101 — BombSpawn1
- 3102 — BombSpawn2
- 3103 — BombSpawn3
- 3104 — BombSpawn4
- 3105 — BombSpawn5
- 3111 — Bomb pickup trigger used by the script
Ready-up and team switching
- 889 — Ready-up area trigger
- 890 — Ready-up world icon
- 891 — Ready-up world icon 2
- 2001 — Team switch interact point
- 2002 — Ready interact point
- 2003 — Team switch interact point
- 2004 — Ready interact point
- 5001 — World icon for team switch / ready-up UI
- 5002 — World icon for team ready UI
- 5003 — World icon for team switch / ready-up UI
- 5004 — World icon for team ready UI
- 8808 — Ready area sector
Area triggers and protection
- 5101 — Team 1 HQ protection area trigger
- 5102 — Team 2 HQ protection area trigger
- 7001 — Damage area trigger used by the script config
- 7002 — Restricted area trigger in the 12v12 spatial file
- 7003 — Restricted area trigger configured in the 5v5 Squad Obliteration script
- 9999 — Combat boundary trigger / combat area trigger
Important note:
- The Hagental Base 5v5 spatial file currently contains ObjId 7002 for restricted area triggers, while the 5v5 script config points to 7003. If users copy that setup, they should either change the map ObjId to 7003 or change
restricted: 7003in the script to match the map.
Objective visual helpers
- 221 — Objective A world icon
- 222 — Objective B world icon
- 223 — Objective C world icon
- 321 — Objective D world icon
- 322 — Objective E world icon
- 323 — Objective F world icon
Objective fire / explosion FX
Persistent fire FX:
- 211 — Objective A fire FX
- 212 — Objective B fire FX
- 213 — Objective C fire FX
- 311 — Objective D fire FX
- 312 — Objective E fire FX
- 313 — Objective F fire FX
Frame crawl fire FX:
- 611 — Objective A frame-crawl fire FX
- 612 — Objective B frame-crawl fire FX
- 613 — Objective C frame-crawl fire FX
- 711 — Objective D frame-crawl fire FX
- 712 — Objective E frame-crawl fire FX
- 713 — Objective F frame-crawl fire FX
Objective award explosion FX:
- 8101 — Objective A explosion FX
- 8102 — Objective B explosion FX
- 8103 — Objective C explosion FX
- 8201 — Objective D explosion FX
- 8202 — Objective E explosion FX
- 8203 — Objective F explosion FX
MCOM SFX anchors
Objective A:
- 4501 — Rush alarm simple loop
- 4502 — Rush alarm leadout loop
- 4503 — Rush arm loop
- 4504 — Rush defused one-shot
- 4505 — Rush defusing loop
Objective B:
- 4506 — Rush alarm simple loop
- 4507 — Rush alarm leadout loop
- 4508 — Rush arm loop
- 4509 — Rush defused one-shot
- 4510 — Rush defusing loop
Objective C:
- 4511 — Rush alarm simple loop
- 4512 — Rush alarm leadout loop
- 4513 — Rush arm loop
- 4514 — Rush defused one-shot
- 4515 — Rush defusing loop
Objective D:
- 4601 — Rush alarm simple loop
- 4602 — Rush alarm leadout loop
- 4603 — Rush arm loop
- 4604 — Rush defused one-shot
- 4605 — Rush defusing loop
Objective E:
- 4606 — Rush alarm simple loop
- 4607 — Rush alarm leadout loop
- 4608 — Rush arm loop
- 4609 — Rush defused one-shot
- 4610 — Rush defusing loop
Objective F:
- 4611 — Rush alarm simple loop
- 4612 — Rush alarm leadout loop
- 4613 — Rush arm loop
- 4614 — Rush defused one-shot
- 4615 — Rush defusing loop
Initial grouped spawn points
Team 1 grouped spawn points:
- 515-520 — Team 1 grouped initial spawn points
Team 2 grouped spawn points:
- 615-620 — Team 2 grouped initial spawn points
Dynamic route spawners used by the script
Team 1 route spawners:
- 9101 — Route A
- 9102 — Route B
- 9103 — Route C
- 9104 — Route AB
- 9105 — Route AC
- 9106 — Route BC
- 9107 — Route ABC
- 9108 — Route NO / fallback route
Team 2 route spawners:
- 9201 — Route A
- 9202 — Route B
- 9203 — Route C
- 9204 — Route AB
- 9205 — Route AC
- 9206 — Route BC
- 9207 — Route ABC
- 9208 — Route NO / fallback route
Note: these route spawner IDs are referenced by the script. If they are not present in your copied spatial map, either add matching PlayerSpawner objects or update the arrays in TEAM1_SPAWNERS_BY_ROUTE and TEAM2_SPAWNERS_BY_ROUTE.
Dirt bike / vehicle spawners in the 12v12 Contaminated example
Team 1 dirt bike spawners:
- 9301-9305
Team 2 dirt bike spawners:
- 9401-9405
The Hagental Base 5v5 example does not include these 9301-9405 vehicle spawners.
Map editing checklist
When adding this template to another map:
- Copy the core HQs, sectors, capture points, MCOMs, interact points, triggers, icons, SFX, and FX objects.
- Keep the ObjIds exactly the same unless you also update the script config.
- Make sure each CapturePoint has its matching MCOM, AreaTrigger, InteractPoint, WorldIcon, SFX anchors, and FX objects.
- Make sure Team 1 objectives use 201-203 and Team 2 objectives use 301-303.
- Make sure MCOM IDs stay synced with
OBLITERATION_OBJECTIVE_CONFIGS. - Make sure the bomb sector uses 3100 and bomb spawn capture points use 3101-3105.
- Check restricted-area IDs: 12v12 uses 7002, while the 5v5 script currently points to 7003.
- If using dynamic route spawns, add 9101-9108 and 9201-9208 or edit the route arrays in the script.
- If using ziplines or dirt bikes, check for ObjId conflicts around 9301.
- Test the experience locally and then on a hosted server, because some spawn, UI, or AI behavior can differ between local hosting and server hosting.
Credits
Template and mode implementation by Enoc Bernal / Mind Flexor.
Credits and inspiration: ViperStudiosAndy, BattlefieldDad, Mancour, uberdubersoldat, dfk_7677, and Michael De Luca.
Notes
This template uses specific ObjIds to connect the Portal SDK script to objects placed in the spatial map. If an object is renamed, moved, or copied, the name does not matter as much as the ObjId. The script logic depends on the ObjIds staying consistent.