With all the devices in place, it's time to set up how they interact.
Direct event binding allows devices to talk to one another directly by using events and functions. Learn more about it here.
Device A | Function | Device B | Event | Explanation |
---|---|---|---|---|
Hollow Barrier 1 & 2 ![]() |
Disable | Timer ![]() |
On Success | When the timer runs out, the barriers will disappear. |
Opaque Barrier ![]() |
Disable | Timer ![]() |
On Success | When the timer runs out, the barrier will disappear. |
Here is a screenshot of what this will look like once the binding is set:

Direct Event Binding with Verse
Alternatively, you can use Verse to program device logic.
The first step is to create your own device using Verse. For more information, you can follow the Learn the Basics of Writing Code in Verse guide, then come back here to apply those concepts.
Now you will need to reference the devices you'll control with Verse in your script.
You will need 3 barrier_device
and 1 timer_device
:
box_fight_manager := class<concrete>(creative_device):
Logger:log = log{Channel:=box_fight_log}
@editable
Barrier1:barrier_device = barrier_device{}
@editable
Barrier2:barrier_device = barrier_device{}
@editable
MidBarrier:barrier_device = barrier_device{}
@editable
Timer:timer_device = timer_device{}
Compile your code and drag the box_fight_manager
into the level, then select the corresponding devices:

For this example, the Timer
should start on its own when the game begins. After the set amount of time elapses, the Timer
succeeds, and the barriers are disabled.
Let’s Subscribe to the Timer
’s SuccessEvent
when the game begins:
OnBegin<override>()<suspends>:void=
Timer.SuccessEvent.Subscribe(DropBarriers)
DropBarriers
will be called, disabling the three barriers:
DropBarriers(Player:?agent):void=
Barrier1.Disable()
Barrier2.Disable()
MidBarrier.Disable()
Note that the SuccessEvent
expects to call a function which takes in an agent
argument.
Compile your code, and that's it! You're ready to playtest your island.
Here is the complete script, for reference:
using { /Fortnite.com/Devices }
using { /Verse.org/Native }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
box_fight_log:=class(log_channel){}
box_fight_manager := class<concrete>(creative_device):
Logger:log = log{Channel:=box_fight_log}
@editable
Barrier1:barrier_device = barrier_device{}
@editable
Barrier2:barrier_device = barrier_device{}
@editable
MidBarrier:barrier_device = barrier_device{}
@editable
Timer:timer_device = timer_device{}
OnBegin<override>()<suspends>:void=
Timer.SuccessEvent.Subscribe(DropBarriers)
DropBarriers(Player:?agent):void=
Barrier1.Disable()
Barrier2.Disable()
MidBarrier.Disable()
Playtesting your Island
You did it!
Once everything is set up and ready to go, playtest your island to make sure that it runs as expected in Fortnite.
To Publish your project, see the Publishing Projects page.