The "No-Fly Zone" Tutorial: Mastering Fire Volumes with Verse
Tutorial beginner compiles

The "No-Fly Zone" Tutorial: Mastering Fire Volumes with Verse

Updated beginner Code verified

The "No-Fly Zone" Tutorial: Mastering Fire Volumes with Verse

You know that feeling when you're building a base, place a torch, and accidentally burn down your entire loot stash because the fire spread like a rumor in the lobby? Or maybe you've tried to make a lava pit, but the fire just… doesn't look right, or it burns your own team by mistake?

That's because Fire Volumes are the invisible bouncers of your island. They decide what's allowed to catch fire and what stays pristine. By default, your island settings might let everything burn, or nothing burn. But with the Fire Volume device in Verse, you get god-mode control. You can create a "Safe Zone" where fire is illegal, or a "Pit of Doom" where everything instantly ignites.

We're going to build a Chaos Button. You'll place a button, and when someone presses it, it flips a switch in a specific area: turning fire on for enemies and off for players. No more accidental base burnings. No more boring, static lava pits.

What You'll Learn

  • What a Volume Is: Think of it as a 3D bubble or a force field that defines a specific zone on your map.
  • The Fire Volume Device: The specific tool that controls ignition rules within that zone.
  • Verse Scripting Basics: How to write a script that listens for a button press and changes the world state.
  • Scene Graph Hierarchy: How devices talk to each other (Parent/Child relationships) without getting tangled.

How It Works

The Volume: Your Invisible Box

Imagine you're playing Hide and Seek. You pick a room to hide in. That room is a "volume." In UEFN (Unreal Editor for Fortnite), a Volume is just a 3D box you can size, rotate, and place anywhere. It doesn't do anything on its own—it's just space.

But when you add a Fire Volume device to that space, it becomes a rulebook. It says: "Inside this box, if something is flammable, it can burn. Outside this box, fire is banned."

The Fire Volume Device: The Bouncer

Normally, your island has global settings (found in My Island Settings). If you set "Allow Fire" to Yes, fire spreads everywhere. If No, nowhere. It's binary. Boring.

The Fire Volume device overrides those global rules for its specific area. It's like a local law. Inside the volume, the bouncer (the device) checks every object. Is this wood? Yes. Can it burn? The volume says "Yes." Is this player? Yes. Can they burn? The volume says "No" (usually).

The Scene Graph: The Family Tree

In Verse, devices aren't just floating in the void. They exist in a Scene Graph. Think of this like your inventory or your squad.

  • Entities are the characters or props (you, the button, the fire volume).
  • Components are the abilities or stats attached to them (the script, the health, the fire rules).

When we write Verse, we're usually attaching a script (a component) to an Entity (like a Button). That script then reaches out to find other Entities (like the Fire Volume) to tell them what to do.

Let's Build It

We are building a Zone Toggle.

  1. The Trigger: A simple Button.
  2. The Zone: A Fire Volume covering a small room.
  3. The Logic: A Verse script that says, "When button pressed, toggle fire on/off in this zone."

Step 1: The Setup

  1. Open UEFN. Create a new island or open an existing one.
  2. Place a Button device. Name it ChaosButton in the details panel.
  3. Build a small room (3x3x3 blocks).
  4. Place a Fire Volume device inside the room. Name it BurnZone.
  5. In the Fire Volume details, make sure Enabled is checked. Set Allow Fire to Yes (we'll toggle this later, but it needs to exist).
  6. Place a Script device next to the Button. This is where our Verse code lives.

Step 2: The Verse Code

In the Script device, open the Verse editor. We need to import the devices and link them.

# We are bringing in the necessary device types from Fortnite's library.
# Think of this like loading the ammo before a fight.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }

# This is our main script. It's a creative_device, the standard base class
# for any Verse script you attach to a device on your island.
chaos_zone_manager := class(creative_device):

    # These @editable fields are the bridge between code and editor.
    # Drag your ChaosButton device into this slot in the Details panel.
    @editable
    ChaosButton : button_device = button_device{}

    # Drag your BurnZone Fire Volume device into this slot.
    @editable
    BurnZone : fire_volume_device = fire_volume_device{}

    # Track whether fire is currently active in the zone.
    # We start it as false — the zone begins safe.
    var FireIsOn : logic = false

    # OnBegin runs once when the game starts.
    # We use this to set the initial state and wire up the button event.
    OnBegin<override>()<suspends> : void =
        # Start with fire OFF in the zone.
        # It's like telling the bouncer: "Nobody lights matches today."
        BurnZone.Disable()

        # Print a message to the debug log so we know it worked.
        # Think of this as a whisper to yourself.
        Print("Zone is safe. No fires allowed.")

        # Subscribe to the button's InteractedWithEvent.
        # 'Agent' is whoever pressed the button — we don't use it here,
        # but the event signature requires it.
        ChaosButton.InteractedWithEvent.Subscribe(OnChaosButtonPressed)

    # This function runs every time a player presses ChaosButton.
    # The agent parameter tells us who triggered it (required by the event).
    OnChaosButtonPressed(Agent : agent) : void =
        # Toggle the tracked state and apply it to the volume.
        if (FireIsOn?):
            # Fire was ON — turn it OFF.
            set FireIsOn = false
            BurnZone.Disable()
            Print("Fire turned OFF. Stay cool.")
        else:
            # Fire was OFF — turn it ON.
            set FireIsOn = true
            BurnZone.Enable()
            Print("Fire turned ON. Burn baby burn.")

Walkthrough: What Just Happened?

  1. using { /Fortnite.com/Devices }: This is your "loadout." You can't use the Fire Volume device unless you import it. It's like equipping your weapon before dropping.
  2. @editable: This tag tells Verse, "Hey, I want to be able to drag and drop a specific device from my island into this slot in the editor." It's the bridge between the code and the visual world.
  3. OnBegin: This runs once when the game starts. We use it to set the initial state and subscribe to the button's event. We explicitly call BurnZone.Disable() so the zone starts safe.
  4. ChaosButton.InteractedWithEvent.Subscribe(...): This is the event listener. Instead of overriding a generic OnActivated, we subscribe directly to the specific button's interaction event — that's the real Verse API. When the button is pressed, OnChaosButtonPressed runs automatically.
  5. BurnZone.Enable() & BurnZone.Disable(): These are the real functions on fire_volume_device. Calling Enable() activates the volume's fire rules (fire is allowed inside); Disable() turns the volume off entirely so its rules no longer apply.
    • BurnZone.Disable() = The bouncer says "No fire."
    • BurnZone.Enable() = The bouncer says "Light it up."
  6. var FireIsOn : logic: Because fire_volume_device has no getter to query its current state at runtime, we track it ourselves with a mutable variable. The ? suffix in if (FireIsOn?) is Verse's way of testing whether a logic value is true.

Why This is Better Than Devices Alone

You could do this with just device wires. But Verse gives you logic. What if you wanted the fire to only turn on if the player has a certain item? Or if they're wearing red armor? With wires, you're stuck. With Verse, you can check any condition. You're not just flipping a switch; you're writing the rules of the game.

Try It Yourself

Challenge: Modify the script so that when the fire is turned ON, it also plays a sound effect.

Hint:

  1. Place a Sound device in your map and name it FireAlarm.
  2. Add @editable FireAlarm: audio_player_device = audio_player_device{} to your script.
  3. In OnChaosButtonPressed, when you turn fire ON, call FireAlarm.Play().
  4. When you turn fire OFF, call FireAlarm.Stop().

(Don't worry if the sound doesn't play immediately—Verse can be picky about audio devices. If it's tricky, just try to print "ALARM!" instead!)

Recap

  • Volumes are 3D zones that define where rules apply.
  • Fire Volume devices control whether things can burn inside that zone, overriding global island settings.
  • Verse lets you control these devices dynamically. You can toggle fire on and off based on player actions, like pressing a button.
  • Scene Graph connects your code to the devices in the editor using @editable bindings.

You've just learned how to create dynamic, rule-based zones. Next time you build a map, don't just place fire—control it. Make the fire a trap, a hazard, or a feature. The bouncer is now you.

References

  • https://dev.epicgames.com/documentation/en-us/fortnite-creative/using-fire-volume-devices-in-fortnite-creative
  • https://dev.epicgames.com/documentation/en-us/fortnite/using-fire-volume-devices-in-fortnite-creative
  • https://dev.epicgames.com/documentation/en-us/fortnite-creative/using-volume-devices-in-fortnite-creative
  • https://dev.epicgames.com/documentation/en-us/fortnite/using-volume-devices-in-fortnite-creative
  • https://dev.epicgames.com/documentation/fortnite/verse-api/fortnitedotcom/devices/fire_volume_device

Verse source files

Turn this into a guided course

Add using-fire-volume-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