Stop Yelling at Players: How to Talk to Them Without Breaking the Game
Stop Yelling at Players: How to Talk to Them Without Breaking the Game
So you want to give your players instructions, lore, or a cheeky "Good Job" when they win? You could try putting giant text on a wall, but let’s be real—players don’t read walls. They run past them. To actually get their attention, you need to talk to them directly, in their face, via the Pop-up Dialog. Think of it like the little text boxes in RPGs that appear when you talk to an NPC, but instead of a quest giver, it’s your island telling them how not to die.
In this tutorial, we’re going to build a "Tutorial Trap." When a player steps on a pressure plate, a dialog pops up explaining the rules. If they click "Yes," they get a weapon. If they click "No," they get... well, let's just say they get a surprise. We’ll learn how to control who sees the message and when it disappears, all using Verse.
What You'll Learn
- The Pop-up Dialog Device: How to make text boxes appear in the HUD (Heads-Up Display, which is just the screen overlay with your health and ammo).
- Targeting: How to make a message appear for one player or everyone at once.
- The "Unpause" Rule: Understanding that dialogs don’t freeze the game, so you need to handle timing carefully.
- Verse Basics: How to write a simple script that triggers a dialog when a player interacts with an object.
How It Works
Imagine the Pop-up Dialog device is like a Broadcast Tower. You set up the tower (the device), you write the message (the text), and you decide who gets the signal (the target).
In Fortnite Creative, you can drag this device into your island from the Devices menu. But to make it smart—like only showing up when a specific player steps on a button—we need to talk to it using Verse.
Verse is Epic’s programming language. Think of it as the Wiring Harness inside your devices. The Pop-up Dialog is the lightbulb; Verse is the electricity you send through the wires to make it glow.
Key Concept: The HUD Overlay
A dialog is an Overlay. It sits on top of your game screen. Unlike a storm or a damage number, it doesn’t affect the physics of the world. It just sits there, blocking your view, until you click it. This is important: It does not pause the game. If you have a bomb timer running, it keeps ticking while the player is reading your text. You need to account for this, or your players will explode while reading your instructions.
Key Concept: Targeting
You can send a dialog to:
- The Local Player: Only the person interacting with the trigger sees it.
- All Players: Everyone on the island sees it at the same time (great for announcements).
- Specific Player: If you know who did what, you can talk directly to them.
For this tutorial, we’ll focus on the Local Player (the one who triggered the event) because it’s the most common use case for tutorials and choices.
Let's Build It
We are going to build a "Loot Gobbler's Choice."
- Place a Pop-up Dialog device.
- Place a Trigger Volume (or a pressure plate) that detects when a player walks in.
- Write a Verse script that says: "Do you want the Legendary Loot Box or the Nothing Box?"
- If they click "Yes," they get the loot. If they click "No," they get a small shock.
Step 1: The Setup (No Code Yet)
- Open your Creative Island.
- Go to Devices > Interface > Pop-up Dialog. Place it anywhere (it’s invisible in-game, so put it near your action zone).
- In the Pop-up Dialog device settings, look for Text. Enter something like:
- Line 1: "Do you want the Legendary Loot?"
- Line 2: "Click Yes to take it, No to get shocked."
- Set the Response Type to Yes/No. This creates two buttons for the player.
Step 2: The Verse Script
Now, we need to tell the game: "When a player enters this zone, show them the dialog."
Create a new Verse file in your project. We’ll call it LootDialogScript.
# This is a comment. Verse ignores lines starting with #.
# We are defining a new "Actor" (a game object) that holds our logic.
LootDialogActor := actor {
# This is a "Variable" (a container that changes).
# Think of it like a backpack slot.
# Here, we link it to the Pop-up Dialog device we placed in the editor.
# We'll assign this in the editor later.
DialogDevice: PopUpDialogDevice = PopUpDialogDevice{}
# This is a "Function" (a set of instructions).
# Think of it like a combo move in fighting games.
# It triggers when a player interacts with our trigger zone.
OnPlayerEntered := func(player: Player) {
# We are calling a method (an action) on the DialogDevice.
# Show() is the action. It takes two things:
# 1. The player who should see it.
# 2. The text to show (we defined this in the device settings,
# but we can also override it here if we wanted to).
# Note: In Verse, we often pass the player to the dialog.
# This ensures only THAT player sees the box.
DialogDevice.Show(player)
# Optional: Wait for the player to click.
# The dialog stays open until they click.
# We can listen for their choice if we want to do something different
# based on Yes or No. For now, we just show it.
}
}
Wait, there’s a catch. The simple Show() function above is a conceptual simplification. In real UEFN Verse, the Pop-up Dialog device is a Component attached to an Actor. You don't just call Show() on a generic variable; you attach the device to an actor and then trigger it.
Let’s do it the correct, real-world way using the Trigger Volume and Verse.
The Real Code: Triggering a Dialog
- Place a Trigger Volume device.
- Place a Pop-up Dialog device.
- Create a Verse file.
# Import the necessary Verse types for players and devices
using /Fortnite.com/Devices
using /Fortnite.com/Players
# Define our main actor. This is the "Brain" of our trap.
LootTrapActor := actor {
# These are "Properties" (settings we can change in the editor).
# Think of them as dials on a mixer.
TriggerVolume: TriggerVolumeDevice = TriggerVolumeDevice{}
PopupDialog: PopUpDialogDevice = PopUpDialogDevice{}
# This function runs when a player enters the trigger volume.
# 'player' is the person who walked in.
OnPlayerEntered := func(player: Player) {
# We want to show the dialog to THIS specific player.
# The Pop-up Dialog device has a 'Show' function.
# We pass the player to it so only they see the box.
# We also define the text dynamically here,
# overriding the editor settings if needed.
PopupDialog.Show(player,
"Do you want the Legendary Loot?",
"Click YES to take it. Click NO to get shocked."
)
# NOTE: The dialog will stay on screen until the player clicks.
# The game DOES NOT pause. The player can still move, shoot, etc.
# while reading the text.
}
}
Walkthrough: What Just Happened?
LootTrapActor := actor { ... }: We created a new game object. In the editor, you’ll place this actor on your map.TriggerVolume: TriggerVolumeDevice = ...: We created a slot for the Trigger Volume device. In the editor, you drag your actual Trigger Volume device into this slot. This connects the physical trigger to the code.PopupDialog: PopUpDialogDevice = ...: We created a slot for the Pop-up Dialog. You drag your actual Dialog device into this slot.OnPlayerEntered := func(player: Player): This is an Event Handler. It’s like a motion sensor. It doesn’t do anything until a player walks in. When they do, the code inside the curly braces{ }runs.PopupDialog.Show(player, "Text...", "Text..."): This is the magic line. It tells the Dialog device: "Hey, show this message to this player." The two strings are the title and the body text.
Important: Handling the Choice
The code above shows the dialog, but it doesn’t care if they click Yes or No. To make it fun, we need to listen to their click. But Verse doesn’t let you "wait" for a click in a simple way because the game doesn’t pause.
Instead, we use Events. The Pop-up Dialog device has its own events: OnResponse. We can hook into that.
Here’s the advanced version that actually does something:
Note: To make this work, you need to link OnDialogResponse to the Pop-up Dialog’s OnResponse event in the Events tab of the device in the editor, or handle it in Verse by listening to the device’s event stream. In UEFN, the easiest way for beginners is to use the Event Graph (the visual wiring) for simple stuff, but since we’re doing Verse, we assume you’re connecting the OnResponse event from the Dialog device to the OnDialogResponse function in your Verse actor.
Try It Yourself
Challenge: Modify the script above to show a different message if the player clicks "No." Instead of just doing nothing, make the "No" choice trigger a Prop Mover to push the player into a pit.
Hint: You’ll need to:
- Add a
PropMoverDeviceto your actor’s properties. - In the
OnDialogResponsefunction, check ifresponse == "No". - If it is, call
PropMoverDevice.Start()(or whatever the specific function is to activate the mover). - Test it! Click "No" and see if you get launched.
Recap
- Pop-up Dialogs are HUD overlays that don’t pause the game. They stay up until clicked.
- Targeting is key. Use the
playervariable to show dialogs to specific individuals. - Verse connects your devices. You link devices to your actor’s properties, then use functions like
Show()to trigger them. - Events like
OnResponselet you react to what the player clicked, allowing for branching choices (Yes/No).
Now go make some dialogs that actually get read. Your players (and their loot boxes) will thank you.
References
- https://dev.epicgames.com/documentation/en-us/fortnite-creative/using-pop-up-dialog-devices-in-fortnite-creative
- https://dev.epicgames.com/documentation/en-us/fortnite/using-popup-dialog-devices-in-fortnite-creative
- https://dev.epicgames.com/documentation/en-us/fortnite-creative/using-popup-dialog-devices-in-fortnite-creative
- https://dev.epicgames.com/documentation/en-us/fortnite/onboarding-players-in-fortnite-creative
- https://dev.epicgames.com/documentation/en-us/fortnite-creative/onboarding-players-in-fortnite-creative
Get the complete code — free
You've read the full walkthrough. The complete, copy-paste-ready Verse solution is free for members — sign in to unlock it.
Free with your BrainDead.TV / BrainDeadGuild Discord account. The walkthrough above is always free.
Verse source files
- 01-fragment.verse · fragment
- 02-fragment.verse · fragment
- 03-fragment.verse · fragment
Turn this into a guided course
Add using-pop-up-dialog-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.
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.