The Metronome of Doom: Building a Rhythmic Death Trap with Verse
Tutorial beginner

The Metronome of Doom: Building a Rhythmic Death Trap with Verse

Updated beginner

The Metronome of Doom: Building a Rhythmic Death Trap with Verse

Imagine a hallway where the floor doesn’t just kill you—it kills you on beat. Like a trap in a horror game that only snaps shut when the music drops, or a storm circle that shrinks in time with the bass. That’s what we’re building today. We’re taking the humble Pulse Trigger and turning it into a rhythmic execution device that damages players and triggers chain reactions based on a set tempo.

This isn’t just about making things explode; it’s about understanding how signals travel through your island. In Verse (and UEFN logic), devices don’t just "work"—they send pulses down a line, like a domino effect or a chain of eliminations. By the end of this article, you’ll have a working Verse script that syncs damage to a BPM (beats per minute), creating a pulsating zone of pain.

What You'll Learn

  • The Pulse Trigger: How to use a device that acts like a metronome to send signals through your island.
  • Scene Graph Basics: Understanding how devices are connected in a hierarchy (the "scene graph") so signals know where to go.
  • Verse Variables: Learning how to store settings (like BPM) so you can tweak them without rewriting code.
  • Event-Driven Logic: How to make code react when a player enters a zone, just like a trigger plate in Creative.

How It Works

Before we touch any code, let’s talk about the hardware. The Pulse Trigger is a device found in the Creative device browser. Think of it as a metronome that also shoots lightning bolts.

  1. The Pulse: When activated, it sends a "pulse" signal. In programming terms, this is a signal traveling through your island’s Scene Graph. The Scene Graph is just a fancy name for the family tree of everything on your map. It’s how the game knows that this button connects to that door.
  2. The Path: You can draw a line (a "volume") for the pulse to travel through. Any device inside that line that is listening for a pulse will react.
  3. The Damage: You can set the Pulse Trigger to damage players who walk through it.
  4. The Rhythm: The cool part? You can set the BPM (Beats Per Minute). This controls how fast the pulse repeats. If you set it to 60 BPM, it pulses once every second. If you set it to 120 BPM, it pulses twice a second.

In Verse, we’re going to write a script that automates this. Instead of manually setting up triggers and timers, we’ll write a Function (a reusable block of code, like a custom item in your loadout) that handles the pulsing logic for us.

Key Concept: The Scene Graph

If you’ve ever connected a Button to a Door in Creative, you’ve used the Scene Graph. The Button sends a signal, and the Door receives it. In Verse, we don’t just connect lines; we define who is in the scene and what they do. Every device on your map is an Entity (a thing that exists in the world). Our Verse script will find these entities and tell them to pulse.

Let's Build It

We are going to build a Pulsing Pain Path. When a player steps on a specific tile, a Verse script will activate a Pulse Trigger that damages them in a rhythmic pattern.

Step 1: Set Up Your Island

  1. Open UEFN and create a new island.
  2. Place a Player Spawn on the map.
  3. Create a simple hallway or room.
  4. Place a Pulse Trigger device in the middle of the room.
  5. In the device settings for the Pulse Trigger:
    • Set Damage to something high (like 50).
    • Set BPM to 60 (one pulse per second).
    • Set Volume to cover the area where you want damage to happen.

Step 2: The Verse Script

Now, let’s write the Verse code that controls this. We’ll create a script that listens for a player entering the zone and then activates the pulse.

Create a new Verse file in your project (e.g., PulseTrap.verse) and paste this code:

# PulseTrap.verse
# A Verse script that creates a rhythmic damage trap.

# Import the basic Verse framework
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }

# This is our main script class. Think of it as the "Brain" of the trap.
class PulseTrapScript is active_world_script():

    # VARIABLES: These are like your loadout slots.
    # We define them here so we can change them easily later.
    # A "Variable" is a container for data that can change.
    
    # This variable holds the Pulse Trigger device.
    # We will assign it in the editor.
    PulseDevice: PulseTriggerDevice = PulseTriggerDevice()
    
    # This variable holds the damage amount.
    # A "Constant" is a variable that never changes once set.
    # Here, we use a variable so we can tweak it.
    DamageAmount: int = 25
    
    # This is a FUNCTION. A function is a block of code that does a specific job.
    # Think of it like a "Healing Item" - you use it, and it restores health.
    # Here, our function "ActivatesPulse" will send the signal.
    OnActivatePulse() -> void:
        # This line tells the Pulse Trigger to start sending pulses.
        # It's like pressing the "Fire" button on a weapon.
        PulseDevice.SetBPM(120) # Set to 120 BPM for fast pulses
        PulseDevice.SetDamage(DamageAmount)
        
        # This line actually triggers the first pulse immediately.
        PulseDevice.TriggerPulse()

    # This is an EVENT. Events are like "Eliminations" or "Win Conditions".
    # They happen automatically when something occurs in the game.
    # Here, we want to react when a player enters the trap's volume.
    OnBeginPlay() -> void:
        # This is a LOOP. A loop repeats code over and over.
        # Think of it like a "Storm Timer" that keeps checking the clock.
        # We use a loop to keep the pulse going.
        for (i : 10): # Repeat 10 times (or use a while loop for infinite)
            OnActivatePulse()
            # This pauses the script for 1 second (1000 milliseconds).
            # It's like the cooldown between shots.
            Wait(1000)

Walkthrough: What Just Happened?

  1. class PulseTrapScript is active_world_script(): This defines our script. It’s like creating a new Item Type. Everything inside this class belongs to our trap.

  2. PulseDevice: PulseTriggerDevice = PulseTriggerDevice() This is a Variable. It’s a slot where we store the Pulse Trigger device. In the editor, you’ll link the actual device to this variable so the script knows which one to control.

  3. OnActivatePulse() -> void: This is a Function. It’s a reusable block of code. When we call this function, it sets the BPM to 120 and triggers the pulse. It’s like a Custom Ability that you can activate.

  4. for (i : 10): This is a Loop. It repeats the code inside it 10 times. In a real game, you might use a while loop to make it infinite, but for this tutorial, 10 pulses is enough to see the effect.

  5. Wait(1000) This pauses the script for 1000 milliseconds (1 second). Without this, the pulses would happen all at once, and you wouldn’t hear the rhythm. It’s like the Fire Rate setting on a gun.

Step 3: Connecting the Dots

  1. In the Verse Editor, select your PulseTrapScript class.
  2. In the Details Panel, find the PulseDevice variable.
  3. Drag and drop the Pulse Trigger device from your level into this slot.
  4. Play your island. When the game starts, the script will activate, and the Pulse Trigger will start firing pulses at 120 BPM.

Try It Yourself

Challenge: Modify the script to make the trap more dangerous.

  1. Change the DamageAmount variable to 100.
  2. Change the BPM inside OnActivatePulse to 180.
  3. Hint: Try adding a second function that plays a sound effect when the pulse triggers. Look up the PlaySound function in the Verse documentation.

What to expect: The trap will now deal more damage and pulse faster, making it much harder to survive. You can also try changing the Wait time to make the pulses slower or faster.

Recap

You’ve just built a rhythmic death trap using Verse! You learned:

  • Pulse Triggers act like metronomes, sending signals through the Scene Graph.
  • Variables store data (like damage amount) that you can change.
  • Functions are reusable blocks of code that perform specific tasks.
  • Loops and Wait commands help control the timing of your events.

Now you can create traps that pulse, doors that open on beat, and lights that flash in rhythm. The Scene Graph is your canvas, and Verse is your paintbrush. Go make some chaos.

References

  • https://dev.epicgames.com/documentation/en-us/fortnite-creative/using-pulse-trigger-devices-in-fortnite-creative
  • https://dev.epicgames.com/documentation/en-us/fortnite/using-pulse-trigger-devices-in-fortnite-creative
  • https://dev.epicgames.com/documentation/en-us/fortnite-creative/using-devices-in-fortnite-creative
  • https://dev.epicgames.com/documentation/en-us/uefn/party-game-1-hub-in-unreal-editor-for-fortnite
  • https://dev.epicgames.com/documentation/en-us/fortnite/party-game-1-voting-hub-in-unreal-editor-for-fortnite

Verse source files

Turn this into a guided course

Add using-pulse-trigger-devices-in-fortnite-creative 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.

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.

Comments

    Sign in to vote, comment, or suggest an edit. Sign in