VerseIsland
Feed Learn Leaderboard Guides Reference Explore Search Docs Verse Library
Sign in
Feed Learn 📖 Codex Leaderboard Guides Reference Explore Search Docs Verse Library
Verse Library › UI
Browse Verse Library

Library

Devices 634
  • Devices171
  • Triggers & Logic118
  • UI & HUD40
  • Audio39
  • Items & Inventory29
  • Events27
  • Scoring & Objectives25
  • Spawning19
  • Classes & Interfaces18
  • Game Modes17
  • Props & Meshes14
  • Variables & Mutability12
  • Player Management11
  • Modules & Structure10
  • Round Flow8
  • Animation6
  • Concurrency6
  • Functions6
  • Getting Started6
  • Teams & Classes6
  • NPCs & AI5
  • Tutorials5
  • VFX & Particles5
  • Arrays & Maps4
  • Cameras4
  • Debugging4
  • Control Flow3
  • Cinematics2
  • Other2
  • Persistence2
  • Scene Graph2
  • Structs & Enums2
  • Building1
  • Physics1
  • Publishing & Islands1
  • Syntax & Types1
  • Vehicles1
  • Weapons1
Verse Language 257
  • Control Flow35
  • Functions26
  • Arrays & Maps25
  • Classes & Interfaces22
  • Variables & Mutability22
  • Concurrency21
  • Syntax & Types18
  • Modules & Structure12
  • Debugging8
  • Devices8
  • Events7
  • Player Management6
  • Structs & Enums6
  • Triggers & Logic6
  • Game Modes5
  • Failure & Options4
  • Scene Graph4
  • UI & HUD4
  • Getting Started3
  • Round Flow3
  • Spawning3
  • VFX & Particles3
  • Reference2
  • Animation1
  • Best Practices1
  • Other1
  • Props & Meshes1
Materials/VFX 154
  • Triggers & Logic27
  • UI & HUD17
  • Devices16
  • VFX & Particles14
  • Props & Meshes11
  • Scoring & Objectives9
  • Game Modes7
  • Items & Inventory7
  • Functions6
  • Arrays & Maps5
  • Animation3
  • Cinematics3
  • Classes & Interfaces3
  • Control Flow3
  • Events3
  • Modules & Structure3
  • Round Flow3
  • Spawning3
  • Getting Started2
  • Scene Graph2
  • Variables & Mutability2
  • Concurrency1
  • Persistence1
  • Player Management1
  • Structs & Enums1
  • Syntax & Types1
General 153
  • Devices22
  • Events20
  • Triggers & Logic20
  • Classes & Interfaces10
  • Variables & Mutability8
  • Round Flow6
  • Scoring & Objectives6
  • UI & HUD6
  • Functions5
  • Player Management5
  • Game Modes4
  • Getting Started4
  • Props & Meshes4
  • Control Flow3
  • Syntax & Types3
  • VFX & Particles3
  • Arrays & Maps2
  • Best Practices2
  • NPCs & AI2
  • Other2
  • Physics2
  • Scene Graph2
  • Spawning2
  • Structs & Enums2
  • Tutorials2
  • Building1
  • Cameras1
  • Cinematics1
  • Failure & Options1
  • Items & Inventory1
  • Teams & Classes1
Player 133
  • Player Management22
  • Teams & Classes19
  • Classes & Interfaces12
  • Devices11
  • Events9
  • Persistence7
  • Triggers & Logic7
  • Arrays & Maps6
  • Functions4
  • Game Modes4
  • Items & Inventory4
  • Round Flow4
  • Debugging3
  • Getting Started3
  • Modules & Structure3
  • Concurrency2
  • Control Flow2
  • Scoring & Objectives2
  • Spawning2
  • Structs & Enums2
  • Physics1
  • Props & Meshes1
  • UI & HUD1
  • Variables & Mutability1
  • Weapons1
Building & Props 131
  • Variables & Mutability15
  • Props & Meshes14
  • Triggers & Logic12
  • Classes & Interfaces10
  • Devices10
  • UI & HUD10
  • Events7
  • Teams & Classes7
  • Animation5
  • Building5
  • Functions5
  • VFX & Particles5
  • Structs & Enums4
  • Control Flow3
  • Game Modes3
  • Items & Inventory3
  • Round Flow3
  • Scene Graph3
  • Arrays & Maps2
  • Concurrency2
  • Reference2
  • Modules & Structure1
NPCs & AI 76
  • NPCs & AI35
  • Spawning7
  • Animation5
  • Variables & Mutability5
  • Classes & Interfaces3
  • Debugging3
  • UI & HUD3
  • Audio2
  • Concurrency2
  • Game Modes2
  • Props & Meshes2
  • Triggers & Logic2
  • Devices1
  • Functions1
  • Getting Started1
  • Reference1
  • VFX & Particles1
Spawning 73
  • Spawning31
  • Events7
  • Concurrency6
  • Player Management6
  • Vehicles5
  • Props & Meshes4
  • Devices3
  • Scene Graph3
  • Items & Inventory2
  • Teams & Classes2
  • Control Flow1
  • Publishing & Islands1
  • Reference1
  • Scoring & Objectives1
Cinematics 71
  • Cameras19
  • Cinematics15
  • Devices11
  • Audio5
  • Animation4
  • Triggers & Logic4
  • Functions2
  • Game Modes2
  • UI & HUD2
  • Classes & Interfaces1
  • Concurrency1
  • Control Flow1
  • Items & Inventory1
  • Modules & Structure1
  • Scene Graph1
  • Templates1
UI 57
  • UI & HUD35
  • Devices5
  • Scoring & Objectives4
  • Classes & Interfaces3
  • Round Flow2
  • Scene Graph2
  • Arrays & Maps1
  • Props & Meshes1
  • Structs & Enums1
  • Templates1
  • Triggers & Logic1
  • Variables & Mutability1
Scene Graph 40
  • Scene Graph9
  • Items & Inventory8
  • Classes & Interfaces3
  • Events3
  • Props & Meshes3
  • Functions2
  • Arrays & Maps1
  • Building1
  • Control Flow1
  • Debugging1
  • Modules & Structure1
  • Player Management1
  • Reference1
  • Structs & Enums1
  • Syntax & Types1
  • Triggers & Logic1
  • UI & HUD1
  • VFX & Particles1
Vehicles 38
  • Spawning11
  • Devices7
  • Vehicles7
  • Props & Meshes4
  • Functions2
  • Game Modes2
  • Failure & Options1
  • Items & Inventory1
  • Reference1
  • Teams & Classes1
  • Tutorials1
Tutorials 37
  • Game Modes6
  • Triggers & Logic5
  • Classes & Interfaces4
  • Events4
  • Props & Meshes3
  • Building2
  • Devices2
  • Items & Inventory2
  • Scoring & Objectives2
  • Animation1
  • Arrays & Maps1
  • Cameras1
  • Concurrency1
  • Physics1
  • Player Management1
  • Structs & Enums1
Weapons 30
  • Game Modes6
  • Weapons6
  • Devices5
  • Items & Inventory3
  • Scoring & Objectives3
  • Spawning2
  • Teams & Classes2
  • Best Practices1
  • Functions1
  • Triggers & Logic1
Items 28
  • Items & Inventory23
  • Devices2
  • Triggers & Logic2
  • Spawning1
Assets 20
  • Modules & Structure6
  • Arrays & Maps3
  • Functions3
  • Scene Graph2
  • Best Practices1
  • Devices1
  • Events1
  • Failure & Options1
  • Physics1
  • Variables & Mutability1
Animation 19
  • Animation10
  • Variables & Mutability4
  • Devices1
  • Player Management1
  • Props & Meshes1
  • Scene Graph1
  • Syntax & Types1
Release Notes 17
  • Classes & Interfaces5
  • Modules & Structure3
  • Concurrency2
  • Control Flow2
  • Variables & Mutability2
  • Debugging1
  • Devices1
  • Items & Inventory1
Input & Controls 16
  • Functions4
  • UI & HUD3
  • Control Flow2
  • Animation1
  • Arrays & Maps1
  • Cinematics1
  • Debugging1
  • Devices1
  • Events1
  • Items & Inventory1
Publishing 8
  • Control Flow5
  • Arrays & Maps1
  • Devices1
  • Syntax & Types1
Audio 7
  • Audio5
  • UI & HUD2
Landscape 7
  • Other4
  • VFX & Particles2
  • Scene Graph1
Persistence 6
  • Structs & Enums2
  • Items & Inventory1
  • Persistence1
  • Publishing & Islands1
  • Variables & Mutability1
Physics 5
  • Functions2
  • Classes & Interfaces1
  • Devices1
  • Syntax & Types1
Creator Economy 3
  • Publishing & Islands2
  • Modules & Structure1
Discovery 3
  • Devices1
  • NPCs & AI1
  • Structs & Enums1
Editor & Project 3
  • Other1
  • Props & Meshes1
  • Tutorials1

Round Gameplay Interface for Scene Graph

Module — 2 files
These files compile together (same module folder).
file_1.verse
using. /Fortnite.com/Game
using. /Verse.org/Concurrency
using. /Verse.org/SceneGraph
using. /Verse.org/Simulation

fort_round_simulate_interface<public> := interface {

    var<private> FortRoundManagerSubscriptions<private> : []cancelable = array{}

    var<private> _CancelFortRoundGameplayEvent<private> : ?event() = false
    var<private> _FortRoundGameplayHandlerTask<private> : ?task(void) = false

    var<private> IsFortRoundSimulating<public><final> : logic = false
    var<private> _FortRoundStartEvent<private> : ?event() = false
    var<private> _FortRoundEndEvent<private> : ?event() = false

    IsFortRoundGameplayActive<public><final>()<computes><decides><reads>:void = _FortRoundGameplayHandlerTask?

    <#  Start listening to Fort Round Events. Calling this before OnAddedToScene will silently fail.
        If Fort Round is already running, will trigger the FortRoundSimulate callbacks immediately. #>
    StartFortRoundGameplay<public><final>():void = {
        SelfComponent := if (_SelfComponent := component[Self]). _SelfComponent else. return
        if (not SelfComponent.IsInScene[]). return
        if (IsFortRoundSimulating?). OnFortRoundStartInternal()
        if (IsFortRoundGameplayActive[]). return
        if (FortRoundManager := SelfComponent.Entity.GetFortRoundManager[]) {
            InitializeEventsInternal()

            # Keeping the Round Subscriptions cached so they do not get garbage collected 
            set FortRoundManagerSubscriptions = array{
                FortRoundManager.SubscribeRoundStarted(OnFortRoundStartInternal)
                FortRoundManager.SubscribeRoundEnded(OnFortRoundEndInternal)
            }

            # Keeping the Task cached so it does not get garbage collected
            FortRoundGameplayHandlerTask := spawn { FortRoundGameplayHandler() }
            set _FortRoundGameplayHandlerTask = option{FortRoundGameplayHandlerTask}
        }
    }

    <#  Cancel the running FortRoundSimulate tasks, and stops listening for future Fort Round Events.
        Can be used during OnEndSimulation to stop the Fort Round Behavior when the component is removed from scene. #>
    StopFortRoundGameplay<public><final>():void = {
        for (FortRoundManagerSubscription : FortRoundManagerSubscriptions) {
            FortRoundManagerSubscription.Cancel()
        }
        set FortRoundManagerSubscriptions = array{}

        set _FortRoundGameplayHandlerTask = false
        OnFortRoundEndInternal()
        if (CancelFortRoundGameplayEvent := _CancelFortRoundGameplayEvent?). CancelFortRoundGameplayEvent.Signal()
    }

    <#  Need to construct the events outside interface construction due to a bug
        where events created at interface initialization are acting as global #>
    InitializeEventsInternal<private>()<transacts>:void = {
        if (not _CancelFortRoundGameplayEvent?). set _CancelFortRoundGameplayEvent = option{event(){}}
        if (not _FortRoundStartEvent?). set _FortRoundStartEvent = option{event(){}}
        if (not _FortRoundEndEvent?). set _FortRoundEndEvent = option{event(){}}
    }

    OnFortRoundStartInternal<private>():void = {
        if (IsFortRoundSimulating?). return
        set IsFortRoundSimulating = true
        if (FortRoundStartEvent := _FortRoundStartEvent?). FortRoundStartEvent.Signal()
    }
    OnFortRoundEndInternal<private>():void = {
        if (not IsFortRoundSimulating?). return
        set IsFortRoundSimulating = false
        if (FortRoundEndEvent := _FortRoundEndEvent?). FortRoundEndEvent.Signal()
    }

    FortRoundGameplayHandler<private>()<suspends>:void = {
        race {
            if (CancelFortRoundGameplayEvent := _CancelFortRoundGameplayEvent?). CancelFortRoundGameplayEvent.Await()
            FortRoundLifetimeHandler()
        }
    }

    FortRoundLifetimeHandler<private>()<suspends>:void = {
        loop {
            if (FortRoundStartEvent := _FortRoundStartEvent?). FortRoundStartEvent.Await()
            race {
                if (FortRoundEndEvent := _FortRoundEndEvent?). FortRoundEndEvent.Await() else. Sleep(Inf)
                (OnFortRoundBeginSimulation(); OnFortRoundSimulate(); Sleep(Inf))
            }
            OnFortRoundEndSimulation()
        }
    }

    AwaitFortRoundStart<public><final>()<suspends>:void = {
        if (IsFortRoundSimulating?). return 
        InitializeEventsInternal()
        if (FortRoundStartEvent := _FortRoundStartEvent?). FortRoundStartEvent.Await()
    }

    AwaitFortRoundEnd<public><final>()<suspends>:void = {
        InitializeEventsInternal()
        if (FortRoundEndEvent := _FortRoundEndEvent?). FortRoundEndEvent.Await()
    }

    OnFortRoundBeginSimulation<public>():void = {}

    OnFortRoundSimulate<public>()<suspends>:void = {}

    OnFortRoundEndSimulation<public>():void = {}
}
file_2.verse
using. /Verse.org/SceneGraph
using. /Verse.org/Simulation

fort_round_example_component<public> := class<final_super>(component, fort_round_simulate_interface) {
    
    OnAddedToScene<override>():void = {
        <#  Start the Fortnite Round Gameplay Behavior on the interface. This is required to initialize and use any of the provided
            functionality. Fortnite Round Lifecycle Methods and Events will never run if you have not started. Calling this while the
            entity is not currently on the scene will silently fail. (You can check the state with `IsFortRoundGameplayActive[]`) #>
        StartFortRoundGameplay()
    }

    OnEndSimulation<override>():void = {
        <#  Stop the Fortnite Round Gameplay Behavior on the interface. If a Fortnite Round is currently running, the
            round logic will be cancelled, properly cycling the lifetime methods #>
        StopFortRoundGameplay()
    }

    # Examples using awaitable methods and querying the current interface and Fortnite Round states
    OnSimulate<override>()<suspends>:void = {
        # Checks if a Fortnite Round is currently running or not.
        if (IsFortRoundSimulating?). Print("Fortnite Round is currently running!")
        else. Print("Fortnite Round is not running.")

        # Checks if the Fortnite Round Gameplay Behavior interface is currently active or not
        if (IsFortRoundGameplayActive[]). Print("Fortnite Round Gameplay Behavior is enabled!")
        else. Print("Fortnite Round Gameplay Behavior is not enabled.")

        # Wait until a Fortnite Round starts. If a fortnite round is already running, will return immediately.
        AwaitFortRoundStart()
        Print("This Will print only after the Fortnite Round has started!")

        # Wait until a Fortnite Round ends.
        AwaitFortRoundEnd()
        Print("This Will print only after the Fortnite Round has ended!")
    }

    # This runs when the fortnite round start. It is guaranted to run before starting `OnFortRoundSimulate`
    OnFortRoundBeginSimulation<override>():void = {
        Print("Fortnite Round Started, running Initialization Code...")
        # Initialize needed devices, subscriptions, variables and so on
    }

    <#  This runs when a Fortnite Round is active. Will be automatically cancelled when a Fortnite
        Round ends, or if the Round Gameplay Behavior is stopped by `StopFortRoundGameplay()` #>
    OnFortRoundSimulate<override>()<suspends>:void = {
        Print("Fortnite Round Initialization Finished!, running Gameplay Loop code...")
        defer {
            Print("Fortnite Round Ended, round simulation was stopped.")
        }

        # Run your fortnite round gameplay logic here

        var SecondsElapsed : int = 0
        loop {
            Sleep(1.0)
            set SecondsElapsed += 1
            Print("Fortnite Round is running for {SecondsElapsed} seconds!")
        }
    }

    # This runs when a Fortnite Round ends, or if the Round Gameplay Behavior is stopped by `StopFortRoundGameplay()`
    OnFortRoundEndSimulation<override>():void = {
        Print("Fortnite Round Ended, running Clean Up code...")
        # Clean up subscriptions, reset variables, save players data and states as needed.
    }
}
Sign in to download module

Copy-paste each file above is always free.

Comments

    Sign in to vote, comment, or suggest an edit. Sign in
    📄
    Source
    Epic Games Community

    Created by a member of the Epic Games community. Rights remain with the original author, under Epic's community content terms. Terms ↗

    View original Sources & licensing
    Request removal
    Last updated Jun 23, 2026
    Verse module (2 files)
    Compiles · verified Jun 24, 2026

    Download the full module (zip) from the code panel above.

    Keep exploring
    More in UI · 1 of 9
    Next
    fortnite functions for easier ui creation
    Related topics
    • Fortnite Has Fort Round Manager Interface Ui
    • Fortnite Custom Game Loop Verse Language
    • Fortnite API (module declarations) Verse Language
    • Scene Event Scene Graph
    • Sample Tutorial 03 Flexible Gameplay In Fortnite Tutorials

    Related

    Open in graph →

    Related topics

    • Fortnite Has Fort Round Manager Interface
    • Fortnite Custom Game Loop
    • Fortnite API (module declarations)
    • Scene Event
    • Sample Tutorial 03 Flexible Gameplay In Fortnite
    VerseIsland · an archipelago of Verse & UEFN knowledge
    🗺️ Island atlas Learn Guides History About & Press Sources & Licensing Status

    Not affiliated with Epic Games. Fortnite, UEFN, Unreal Engine, and Verse are trademarks of Epic Games, Inc. Content is attributed to its source — see Sources & Licensing.

    🦜

    Scout · your island guide

    The Isle of Verse