The Kraken’s Wrath: Building a Ship-Themed Battle Arena
Unverified — this example may not compile as-is.
The Verse code below did not pass our automated compile check, so it isn't marked verified and is hidden from the guide listing. The explanation may still be useful, but treat the code as a draft and adapt it before use.
The Kraken's Wrath: Building a Ship-Themed Battle Arena
Ever wanted to turn your island into a floating fortress where players duel on the deck of a sinking galleon? Forget boring squares. We're building a ship-themed battle arena. This isn't just about slapping some wood together; it's about creating a vertical, chaotic playground where every corner offers a tactical advantage.
In this tutorial, we're going to construct a custom arena using UEFN's building tools, populate it with loot and vehicles, and set up the logic so players can spawn, fight, and respawn like pros. You don't need to be a master programmer to make this work—we'll use the visual tools first, then peek under the hood with a tiny bit of Verse to make the game mode actually run.
What You'll Learn
- Arena Construction: How to use Galleries and Prefabs to build a multi-level ship structure.
- Game Logic Setup: Placing Spawners, Item Granter devices, and Powerups.
- Verse Basics: Writing a simple script to define the "Battle Royale" rules (no team play, last one standing wins).
- Scene Graph Awareness: Understanding how your island's pieces connect to the game world.
How It Works
Think of your island as a stage. Before the actors (players) show up, you need to build the set (the arena), place the props (loot and vehicles), and hand the director (the Verse script) the cue sheet.
1. The Set: Building the Ship
You aren't just placing walls; you're building a hierarchy. In programming terms, this is the Scene Graph—a family tree of everything in your game. The island is the parent, the ship is a child, and every crate, ramp, and player spawner is a grandchild. If you mess up the hierarchy, things break. So, let's build a solid structure first.
We'll use Prefabs (pre-built structures) for the hull and Galleries (individual pieces) for the custom rigging and decks. The goal is a multi-level arena: a main deck for close-quarters combat, a crow's nest for snipers, and a hold for loot.
2. The Props: Loot and Vehicles
A ship is useless without cargo. We'll use Item Granter devices. Think of these as magical vending machines. You tell them what to give (a shotgun, a shield potion) and when to give it (when a player walks over). We'll also drop in Vehicle Spawners so players can hijack smaller boats or turrets if we're feeling spicy.
3. The Director: The Verse Script
Here's where the magic happens. Without code, your island is just a pretty room. We need a script to tell the game: "When the match starts, spawn players here. When they die, send them back. When only one is left, declare a winner."
We'll use Verse, Epic's programming language. Don't panic if you've never coded. Verse is like writing a list of instructions for a very literal butler. If you say "Give the player a shotgun," the butler must do it. No questions asked.
Let's Build It
Step 1: Build the Ship
- Open Creative Mode and press Tab to open the inventory.
- Go to the Galleries tab. Search for "Ship," "Deck," or "Nautical."
- Drag and drop a large deck piece onto your island.
- Use the Prefab tab to find a hull or mast structure. Place it on top or attached to the deck.
- Pro Tip: Build at least two levels. A ground floor for shotgunners and an upper deck for snipers. Add walls and ramps to create cover. Remember: Scene Graph means these pieces are now part of the game world. They can be hit, broken, or used as cover.
Step 2: Place the Devices
- Player Spawners: Place two (or more) Player Spawners on the main deck. These are where players appear when the match starts.
- Item Granter: Place several Item Granter devices around the map. In the device settings, select "Weapon" and pick a random loadout (e.g., Assault Rifle + Shotgun).
- Powerups: Use the Visual Effect Powerup device to place healing items or shield potions. These act as "loot drops" that appear in the world.
Step 3: The Verse Script
Now, let's make the game actually work. We'll write a simple Verse script that sets up a "Free-for-All" battle.
Copy this code into a new Verse file in your project (right-click in the Content Browser -> Create -> Verse File). Name it ShipArenaGameMode.
# Ship Arena Game Mode Script
# This script coordinates devices to run a free-for-all match.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Game }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
# Define the main game manager as a creative_device so it
# can be placed on the island and wired to other devices.
ShipArenaGameMode := class(creative_device):
# Wire these in the UEFN Details panel to the
# player_spawner devices you placed on the ship deck.
@editable
PlayerSpawners : []player_spawner_device = array{}
# Wire this to an end_game device placed on the island.
# That device should be configured for "Last Player Standing."
@editable
EndGameDevice : end_game_device = end_game_device{}
# Wire this to a timer device (optional) to enforce a
# 10-minute match limit. Set the device duration to 600 s.
@editable
MatchTimerDevice : timer_device = timer_device{}
# OnBegin runs automatically when the match starts.
OnBegin<override>()<suspends> : void =
# 1. Enable every player spawner so players appear on deck.
for (Spawner : PlayerSpawners):
Spawner.Enable()
# 2. Start the optional match timer.
# When it expires, the timer_device can be linked
# in-editor to EndGameDevice.Activate() via device events.
MatchTimerDevice.Start()
# 3. Subscribe to the end_game_device so we know when
# the game has ended (last player standing or time-out).
EndGameDevice.GameEndedEvent.Subscribe(OnGameEnded)
# Called by the end_game_device's GameEndedEvent.
OnGameEnded(Activator : ?agent) : void =
# The end_game_device handles declaring the winner and
# returning players to the lobby automatically.
# Add any custom end-of-match cleanup here if needed.
Print("Ship Arena: match over!")
What This Code Does (Plain English)
ShipArenaGameMode := class(creative_device): This creates a new manager calledShipArenaGameMode. Because it extendscreative_device, you can place it on your island like any other device and wire it to your spawners and end-game logic in the UEFN Details panel.@editablefields: These are the "cable sockets" on the device. In the UEFN Details panel you drag your placedplayer_spawner_device,end_game_device, andtimer_deviceinto these slots—no hard-coding required.OnBegin: This is the "Start Button." When the match begins, the game runs everything inside this block.Spawner.Enable(): Activates each Player Spawner so players appear on the ship deck.MatchTimerDevice.Start(): Kicks off the 10-minute countdown you configured on the timer device.EndGameDevice.GameEndedEvent.Subscribe(OnGameEnded): Tells the script to callOnGameEndedthe moment the end-game device fires.
OnGameEnded: Runs when theend_game_devicedecides the match is over (last player standing, or the timer ran out and triggered the end-game device via device linking). Theend_game_devicehandles lobby return automatically; this function is where you'd add score tallies or custom effects.
Step 4: Connect It All
- In the Content Browser, double-click your new
ShipArenaGameModeVerse file and click Compile to build it. - Drag the compiled
ShipArenaGameModedevice from the Content Browser onto your island. - Select it in the Outliner, then in the Details panel wire PlayerSpawners to every
player_spawner_deviceon deck, wire EndGameDevice to yourend_game_device, and wire MatchTimerDevice to yourtimer_device. - On the
end_game_device, set the win condition to Last Player Standing in its own settings panel. - Save and Play!
Try It Yourself
Challenge: Make the arena more chaotic by adding a "Trap Floor."
- Place a Trap Floor device in the center of your ship's deck.
- In the device settings, set it to trigger when a player steps on it.
- Hint: You don't need Verse for this! Use the Device Linking system. Link the Trap Floor's "Triggered" output to a Prop Mover or Visual Effect device that makes the floor spin or explode.
- Bonus: Try adding a Vehicle Spawner for a small boat that players can use to escape the center of the map.
Recap
You've built a ship-themed battle arena, placed loot and spawners, and wrote a Verse script to define the game rules. You now understand:
- How to build a multi-level arena using Galleries and Prefabs.
- How to use devices to control loot and player spawns.
- How Verse acts as the "director" for your game's logic.
- How the Scene Graph connects all these pieces into a playable experience.
References
- https://dev.epicgames.com/documentation/en-us/fortnite/visual-effect-powerup-device-design-examples-in-fortnite
- https://dev.epicgames.com/documentation/en-us/fortnite/building-arenas-in-fortnite-creative
- https://dev.epicgames.com/documentation/en-us/fortnite/create-a-parkour-elimination-race-in-fortnite-creative
- https://dev.epicgames.com/documentation/en-us/fortnite/vehicle-mod-box-spawner-device-design-examples-in-fortnite
- https://dev.epicgames.com/documentation/en-us/fortnite-creative/random-sentry-fight-in-fortnite-creative
Verse source files
- 01-device.verse · device
Turn this into a guided course
Add Make a Ship-Themed Battle Arena to your free study plan — we'll suggest related pages and stitch the lot into one compile-checked, self-guided lesson with worked examples and quizzes.
References
Original tutorial generated by Verse Island from the Verse/UEFN knowledge base, with references to the Epic Games sources above. Code is validated against the knowledge base.