Overview
The vehicle_spawner_atk_device is a specialized vehicle_spawner_device that spawns the All-Terrain Kart (ATK) — the four-seat off-road kart. You place one in your level, and it spawns a kart at its location. From Verse you can:
- Spawn / respawn the kart on cue (
RespawnVehicle). - Destroy the current kart (
DestroyVehicle). - Turn the spawner on/off (
Enable/Disable). - Force a player into the driver seat (
AssignDriver). - React when a player enters (
AgentEntersVehicleEvent), exits (AgentExitsVehicleEvent), the kart spawns (SpawnedEvent), or is destroyed (DestroyedEvent).
Reach for it whenever the kart's lifecycle is part of your game logic: a race that hands each runner a fresh kart at the start line, an escape sequence where the getaway cart only spawns once the vault is cracked, or a checkpoint that scores a player only while they're behind the wheel.
Because it inherits from vehicle_spawner_device, everything here also applies to its siblings (boat, baller, biplane, tank, etc.) — just swap the editable's type.
API Reference
vehicle_spawner_atk_device
Specialized
vehicle_spawner_devicethat allows an ATK (all terrain kart) to be configured and spawned.
Full public surface, resolved verbatim from the live Epic digest (Fortnite.digest.verse). Inherited members are merged from vehicle_spawner_device.
vehicle_spawner_atk_device<public> := class<concrete><final>(vehicle_spawner_device):
Events (subscribe a handler to react):
| Event | Signature | Description |
|---|---|---|
AgentEntersVehicleEvent |
AgentEntersVehicleEvent<public>:listenable(agent) |
Signaled when an agent enters the vehicle. Sends the agent that entered the vehicle. |
AgentExitsVehicleEvent |
AgentExitsVehicleEvent<public>:listenable(agent) |
Signaled when an agent exits the vehicle. Sends the agent that exited the vehicle. |
SpawnedEvent |
SpawnedEvent<public>:listenable(fort_vehicle) |
Signaled when a vehicle is spawned or respawned by this device. Sends the fort_vehicle who was spawned. |
VehicleSpawnedEvent |
VehicleSpawnedEvent<public>:listenable(tuple()) |
Signaled when a vehicle is spawned or respawned by this device. Deprecated, use SpawnedEvent instead. |
VehicleDestroyedEvent |
VehicleDestroyedEvent<public>:listenable(tuple()) |
Signaled when a vehicle is destroyed. Deprecated, use DestroyedEvent instead. |
DestroyedEvent |
DestroyedEvent<public>:listenable(tuple()) |
Signaled when a vehicle is destroyed. |
Methods (call these to make the device act):
| Method | Signature | Description |
|---|---|---|
Enable |
Enable<public>():void |
Enables this device. |
Disable |
Disable<public>():void |
Disables this device. |
AssignDriver |
AssignDriver<public>(Agent:agent):void |
Sets agent as the vehicle's driver. |
DestroyVehicle |
DestroyVehicle<public>():void |
Destroys the vehicle if it exists. |
RespawnVehicle |
RespawnVehicle<public>():void |
Spawns a new vehicle. The previous vehicle will be destroyed before a new vehicle spawns. |
vehicle_spawner_device
Base class for various specialized vehicle spawners which allow specific vehicle types to be spawned and configured with specialized options.
Full public surface, resolved verbatim from the live Epic digest (Fortnite.digest.verse).
vehicle_spawner_device<public> := class<abstract><epic_internal>(creative_device_base):
Events (subscribe a handler to react):
| Event | Signature | Description |
|---|---|---|
AgentEntersVehicleEvent |
AgentEntersVehicleEvent<public>:listenable(agent) |
Signaled when an agent enters the vehicle. Sends the agent that entered the vehicle. |
AgentExitsVehicleEvent |
AgentExitsVehicleEvent<public>:listenable(agent) |
Signaled when an agent exits the vehicle. Sends the agent that exited the vehicle. |
SpawnedEvent |
SpawnedEvent<public>:listenable(fort_vehicle) |
Signaled when a vehicle is spawned or respawned by this device. Sends the fort_vehicle who was spawned. |
VehicleSpawnedEvent |
VehicleSpawnedEvent<public>:listenable(tuple()) |
Signaled when a vehicle is spawned or respawned by this device. Deprecated, use SpawnedEvent instead. |
VehicleDestroyedEvent |
VehicleDestroyedEvent<public>:listenable(tuple()) |
Signaled when a vehicle is destroyed. Deprecated, use DestroyedEvent instead. |
DestroyedEvent |
DestroyedEvent<public>:listenable(tuple()) |
Signaled when a vehicle is destroyed. |
Methods (call these to make the device act):
| Method | Signature | Description |
|---|---|---|
Enable |
Enable<public>():void |
Enables this device. |
Disable |
Disable<public>():void |
Disables this device. |
AssignDriver |
AssignDriver<public>(Agent:agent):void |
Sets agent as the vehicle's driver. |
DestroyVehicle |
DestroyVehicle<public>():void |
Destroys the vehicle if it exists. |
RespawnVehicle |
RespawnVehicle<public>():void |
Spawns a new vehicle. The previous vehicle will be destroyed before a new vehicle spawns. |
Walkthrough
Let's build a heist getaway: a button cracks the vault, which spawns a fresh ATK and forces the interacting player straight into the driver seat. We also track entries/exits and announce when the kart spawns or gets wrecked.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Vehicles }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
heist_getaway_device := class(creative_device):
# Place these in the level, then assign them in the Details panel.
@editable
KartSpawner : vehicle_spawner_atk_device = vehicle_spawner_atk_device{}
@editable
VaultButton : button_device = button_device{}
# Localized message helper (message params need a localized value, not a raw string).
GetawayMsg<localizes>(S : string) : message = "{S}"
OnBegin<override>()<suspends>:void =
# Don't spawn a kart until the vault is cracked.
KartSpawner.Disable()
# Wire up the vault button.
VaultButton.InteractedWithEvent.Subscribe(OnVaultCracked)
# React to the kart's lifecycle.
KartSpawner.SpawnedEvent.Subscribe(OnKartSpawned)
KartSpawner.DestroyedEvent.Subscribe(OnKartDestroyed)
KartSpawner.AgentEntersVehicleEvent.Subscribe(OnDriverIn)
KartSpawner.AgentExitsVehicleEvent.Subscribe(OnDriverOut)
# The robber finishes the vault: enable the spawner, spawn a kart, seat them.
OnVaultCracked(Agent : agent) : void =
KartSpawner.Enable()
KartSpawner.RespawnVehicle() # spawns a fresh ATK at the spawner
KartSpawner.AssignDriver(Agent) # drop the robber into the driver seat
# SpawnedEvent hands us the fort_vehicle that was created.
OnKartSpawned(Vehicle : fort_vehicle) : void =
Print("A getaway kart has spawned!")
OnKartDestroyed() : void =
Print("The getaway kart was wrecked!")
# Give the crew another chance after a wreck.
KartSpawner.RespawnVehicle()
OnDriverIn(Agent : agent) : void =
Print("A player climbed into the kart.")
OnDriverOut(Agent : agent) : void =
Print("A player left the kart.")
Line by line:
- The two
@editablefields let you drag your placedvehicle_spawner_atk_deviceandbutton_deviceonto this Verse device in the Details panel. Without the editable field you cannot call the device's methods. KartSpawner.Disable()inOnBeginkeeps the kart from existing until the heist is done.VaultButton.InteractedWithEvent.Subscribe(OnVaultCracked)runsOnVaultCrackedwhenever a player interacts. That event hands us theagent, already unwrapped (button_device.InteractedWithEventislistenable(agent)).- In
OnVaultCrackedweEnable(), thenRespawnVehicle()to spawn a brand-new ATK (RespawnVehicle destroys any old one first), thenAssignDriver(Agent)to seat the robber instantly. SpawnedEventis the modern event — its handler receives the actualfort_vehicleso you can inspect or operate on the spawned kart.DestroyedEventfires on a wreck; here we immediately respawn so the heist can continue.AgentEntersVehicleEvent/AgentExitsVehicleEventgive you the agent climbing in or out — perfect for scoring "time in the driver seat."
Common patterns
Pattern 1 — A timed kart that despawns on exit (DestroyVehicle)
Great for a single-use escape pod: the moment a player abandons the kart, it's gone.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
single_use_kart_device := class(creative_device):
@editable
KartSpawner : vehicle_spawner_atk_device = vehicle_spawner_atk_device{}
OnBegin<override>()<suspends>:void =
KartSpawner.AgentExitsVehicleEvent.Subscribe(OnAbandoned)
OnAbandoned(Agent : agent) : void =
# Player bailed out — destroy the kart so nobody else can grab it.
KartSpawner.DestroyVehicle()
Print("Escape kart consumed.")
Pattern 2 — Race start: one kart per round, seat the racer (RespawnVehicle + AssignDriver)
When a round begins, hand a clean kart to whoever stepped on the start plate.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
race_start_device := class(creative_device):
@editable
KartSpawner : vehicle_spawner_atk_device = vehicle_spawner_atk_device{}
@editable
StartPlate : trigger_device = trigger_device{}
OnBegin<override>()<suspends>:void =
StartPlate.TriggeredEvent.Subscribe(OnRaceStart)
# TriggeredEvent is listenable(?agent): the agent is optional and must be unwrapped.
OnRaceStart(MaybeAgent : ?agent) : void =
if (Racer := MaybeAgent?):
KartSpawner.RespawnVehicle()
KartSpawner.AssignDriver(Racer)
Pattern 3 — Inspect the spawned vehicle via SpawnedEvent
SpawnedEvent is the only event that hands you the fort_vehicle itself, so use it instead of the deprecated VehicleSpawnedEvent.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Vehicles }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
spawn_logger_device := class(creative_device):
@editable
KartSpawner : vehicle_spawner_atk_device = vehicle_spawner_atk_device{}
OnBegin<override>()<suspends>:void =
KartSpawner.Enable()
KartSpawner.SpawnedEvent.Subscribe(OnSpawned)
# Force the first spawn so we have something to track.
KartSpawner.RespawnVehicle()
OnSpawned(Vehicle : fort_vehicle) : void =
# You now hold the real fort_vehicle that was created.
Print("ATK spawned and ready to drive.")
Gotchas
- You must use an
@editablefield. Callingvehicle_spawner_atk_device{}.RespawnVehicle()on a bare value does nothing useful — declare it as an@editablefield and assign your placed device in the Details panel, or you'll get 'Unknown identifier'/no-op behavior. SpawnedEventvsVehicleSpawnedEvent.VehicleSpawnedEventandVehicleDestroyedEventare deprecated (they carrytuple()— no data). UseSpawnedEvent(gives you thefort_vehicle) andDestroyedEventinstead.RespawnVehiclereplaces the old kart. It destroys any existing kart before spawning a new one — calling it twice fast doesn't give you two karts.AssignDriverneeds a spawned vehicle. Spawn (or respawn) the kart before assigning a driver, or there's no seat to put them in. In the walkthrough weRespawnVehicle()thenAssignDriver().- Optional agents from triggers.
trigger_device.TriggeredEventislistenable(?agent)— the handler param is?agentand you must unwrap withif (A := MaybeAgent?):before passing it toAssignDriver. By contrastAgentEntersVehicleEventislistenable(agent)(non-optional) and hands you the agent directly. fort_vehicleneeds its import. To name thefort_vehicletype in aSpawnedEventhandler, addusing { /Fortnite.com/Vehicles }.- Disable doesn't destroy.
Disable()stops the spawner from spawning, but an already-spawned kart stays. CallDestroyVehicle()if you also want the existing kart gone.