Stop Being That Player Who Spams "Where Do I Go?"
Tutorial beginner

Stop Being That Player Who Spams "Where Do I Go?"

Updated beginner

Stop Being That Player Who Spams "Where Do I Go?"

So you’ve built an island. You’ve placed the traps. You’ve even made the boss music sound like it’s coming from a dumpster fire. But the moment the match starts, your friends spawn in, look around with the blank stare of a deer in headlights, and immediately ask, "Wait, what are we supposed to do?"

We’ve all been there. It’s the digital equivalent of a tutorial level that doesn’t load.

In this tutorial, we’re going to fix that. We’re going to build a Visual Aid System using Verse. Instead of waiting for players to figure out their role (Attackers vs. Defenders), we’ll flash a custom message on their screen the second they join, telling them exactly what to do. No more confusion. No more "I thought I was on the other team!" Just pure, unadulterated clarity.

What You'll Learn

  • The HUD Message Device: How to use a built-in UEFN device to talk directly to the player’s screen.
  • Verse Variables: Storing that message so you can change it easily without digging through code.
  • Events: Triggering that message at the exact right moment (when the round starts).
  • Scene Graph Basics: Understanding where devices live in your island’s hierarchy.

How It Works

Think of a Variable in Verse like a loot drop. Before the game starts, the loot drop is sitting in the world with nothing in it (or a default item). When the game starts, you decide what goes inside it. In our case, the "loot drop" is a piece of text, and we’re filling it with instructions for the players.

We aren’t writing complex math here. We’re writing a sign. But instead of a physical sign you place in the grass, this sign appears directly on the player’s monitor, floating in their view.

Here is the game mechanic analogy:

  • The Device: This is like a Prop Mover or a Trigger. It’s a physical object in your UEFN editor.
  • The Variable: This is like the Storm Timer. It holds a value (time, or in our case, text) that changes or is read by the system.
  • The Event: This is like the Round Start signal. It’s the moment the bus door opens. We want our message to appear then, not before, not after.

By combining these, we create a system that says: "When the Round Starts, take this text and show it to everyone."

Let's Build It

First, open UEFN. You need to have a basic island set up with at least two teams (e.g., Attackers and Defenders).

Step 1: The Device Setup

  1. Go to the Devices tab.
  2. Search for HUD Message.
  3. Drag it into your level. It doesn’t matter where—it’s a "ghost" device, so it won’t clutter your view.
  4. In the Details panel on the right, look for User Options.
  5. Find the Message field. Type something short and punchy.
    • Example: "Defend the Objective!" or "Find the Keycards!"
    • Tip: Keep it short. The HUD has limited space. If you write a novel, it’ll get cut off like a poorly edited TikTok.

Step 2: The Verse Code

Now, let’s bring this to life with Verse. We’ll create a simple script that ensures this message pops up when the game begins.

Create a new Verse file (e.g., VisualAids.verse) and paste in this code. Don’t panic—I’ve annotated it so you know exactly what’s happening.

# This is the main structure for our island logic.
# Think of it as the "Main Menu" of your code.
struct Main : WorldDevice {
    # 1. DECLARE THE DEVICE
    # We need to tell Verse which HUD Message device we are controlling.
    # This is like plugging a controller into the console.
    HudDevice : HUDMessageDevice = HUDMessageDevice{}

    # 2. DEFINE THE MESSAGE CONTENT
    # This is our "Variable." It holds the text string.
    # We define it here so we can change the text in one place if we want.
    MessageContent := "Welcome! Your objective is to survive."

    # 3. THE EVENT: Round Start
    # This function runs automatically when the round begins.
    # It’s the "Bus Drop" moment for your code.
    OnBegin<override>()<suspends>: void = {
        # 4. ASSIGN THE MESSAGE
        # We take our variable (MessageContent) and set it into the device.
        # It’s like loading the ammo into the gun before firing.
        HudDevice.SetMessage(MessageContent)

        # 5. TRIGGER THE DISPLAY
        # Now that the message is set, we tell the device to show it.
        # This is the "Fire" button.
        HudDevice.Show()
        
        # Optional: Hide it after a few seconds so it doesn't block gameplay forever.
        # Uncomment the next line if you want it to disappear after 5 seconds.
        # -> HideMessage()
    }

    # Helper function to hide the message later (if you uncomment the line above)
    HideMessage(): void = {
        # Wait for 5 seconds (5000 milliseconds)
        <- 5000
        # Then hide it
        HudDevice.Hide()
    }
}

Walkthrough: What Just Happened?

  1. HudDevice : HUDMessageDevice: We created a reference to the device you placed in the editor. In Verse, we don’t just guess where the device is; we explicitly link to it. This is part of the Scene Graph—the device is an Entity in the world, and our script is the Component that controls it.
  2. MessageContent := "...": We defined a constant string. This is your variable. If you want to change the message, you only change it here.
  3. OnBegin: This is the event handler. It’s tied to the game loop. When the round starts, Verse calls this function.
  4. SetMessage & Show: These are the API calls. SetMessage loads the text into the device’s memory. Show makes it visible on the player’s screen.

Try It Yourself

You’ve got the basics. Now, let’s make it dynamic.

Challenge: Modify the code so that the message is different for Attackers vs. Defenders.

Hint: You can’t just have one message for everyone. Look into how you might use Player Events or check the player’s team inside the OnBegin or a new event like OnPlayerJoined. If you’re feeling fancy, try using a switch statement to check the team ID.

Stuck? Remember, the HUD Message device is just a container. You can call SetMessage multiple times. If you can detect which team a player is on, you can set the message to "Attack!" for one team and "Defend!" for the other.

Recap

  • HUD Message Device: A built-in UEFN tool to display text on the player’s screen.
  • Variables: Store your text strings so they are easy to edit.
  • Events (OnBegin): Trigger your code at the right time (round start).
  • Scene Graph: Your devices are entities in the world; your Verse code is the logic that interacts with them.

Now go forth and stop your players from being confused. A clear objective is the first step to a fun game.

References

  • https://dev.epicgames.com/documentation/en-us/fortnite/triad-inflitration-09-creating-visual-aids-in-verse
  • https://dev.epicgames.com/documentation/en-us/fortnite/triad-infiltration-9-creating-visual-aids-in-verse
  • https://dev.epicgames.com/documentation/en-us/fortnite/triad-infiltration-in-verse
  • https://dev.epicgames.com/documentation/en-us/uefn/triad-infiltration-9-creating-visual-aids-in-verse
  • https://dev.epicgames.com/documentation/en-us/uefn/triad-infiltration-in-verse

Verse source files

Turn this into a guided course

Add triad-inflitration-09-creating-visual-aids-in-verse 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