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 › Materials/VFX
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

Tagged Lights Puzzle

Tagged Lights Puzzle

A lights-out style puzzle: buttons toggle sets of lights discovered via a gameplay tag; solving the target pattern fires a trigger.

Original, compile-verified Verse by Bizanator (Biloxi Studios). Clean-room sample you can drop into a UEFN project and adapt.

# Tagged Lights Puzzle — Biloxi Studios Inc.
#
# A classic "lights out" style puzzle. Players press buttons; each button toggles
# a specific set of lights. When every light matches the target pattern, the
# puzzle is solved and a trigger fires. Lights are discovered at runtime via a
# gameplay tag, so you don't have to wire each one by hand.
#
# Teaches: gameplay tags + GetCreativeObjectsWithTag, per-button event handler
# objects, casting a creative object to a device type, storing & cancelling event
# subscriptions, and a <decides> "is solved?" check used in a failure context.
#
# Setup:
#   * Tag every customizable_light_device in the puzzle with the puzzle_light tag.
#   * Fill Buttons with the button_device(s) players press.
#   * ButtonToLights[i] lists which light indices Buttons[i] toggles.
#   * TargetPattern / StartPattern length must match the number of tagged lights.

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Verse.org/Simulation/Tags }
using { /UnrealEngine.com/Temporary/Diagnostics }

log_tagged_lights_puzzle := class(log_channel){}

# Tag placed on the customizable_light_device actors that make up this puzzle.
puzzle_light := class(tag){}

# One instance per button. It remembers which light indices its button controls
# and a back-reference to the puzzle so its handler can drive the puzzle state.
button_press_handler := class():
    LightIndices : []int
    Puzzle : tagged_lights_puzzle

    OnPressed(Player : agent) : void =
        Puzzle.ToggleLights(LightIndices)

tagged_lights_puzzle := class<concrete>(creative_device):

    Logger : log = log{Channel := log_tagged_lights_puzzle}

    @editable
    Buttons : []button_device = array{}

    # ButtonToLights[i] = the light indices toggled by Buttons[i].
    # NOTE: @editable does not support multidimensional arrays, so set this in
    # code (or via a data table) rather than in the device's Details panel.
    ButtonToLights : [][]int = array{array{0, 1}, array{1, 2}, array{0, 2}}

    # Current on/off state of each light. Initial values set the lights at start.
    @editable
    var LightStates : []logic = array{false, false, false}

    # The on/off pattern that solves the puzzle (same length as LightStates).
    @editable
    TargetPattern : []logic = array{true, true, true}

    # Fired once when the puzzle is solved.
    @editable
    SolvedTrigger : trigger_device = trigger_device{}

    # Light devices discovered via the puzzle_light tag at runtime.
    var Lights : []customizable_light_device = array{}

    # Saved button subscriptions so we can stop input once solved.
    var ButtonSubscriptions : []cancelable = array{}

    OnBegin<override>()<suspends> : void =
        FindAndInitLights()
        SubscribeButtons()

    # Discover every light tagged puzzle_light and apply the starting state.
    # FindCreativeObjectsWithTag yields a generator, so we first collect it into
    # an array (so we can index-iterate it alongside LightStates), then cast each
    # object to a light, skipping anything that isn't one.
    FindAndInitLights<private>() : void =
        Objects := for (Object : FindCreativeObjectsWithTag(puzzle_light{})):
            Object
        set Lights = for:
            Index -> Object : Objects
            Light := customizable_light_device[Object]   # cast; skips non-lights
        do:
            if (ShouldBeOn := LightStates[Index]):
                if (ShouldBeOn?) then Light.TurnOn() else Light.TurnOff()
            Light
        Logger.Print("Initialized {Lights.Length} puzzle light(s).")

    # Wire each button to a handler that toggles the lights it controls.
    SubscribeButtons<private>() : void =
        set ButtonSubscriptions = for:
            ButtonIndex -> Button : Buttons
            Indices := ButtonToLights[ButtonIndex]
        do:
            Handler := button_press_handler{LightIndices := Indices, Puzzle := Self}
            Button.InteractedWithEvent.Subscribe(Handler.OnPressed)

    # Flip the given light indices, then check for a solve.
    ToggleLights(Indices : []int) : void =
        for:
            LightIndex : Indices
            WasOn := LightStates[LightIndex]
            Light := Lights[LightIndex]
        do:
            NewState :=
                if (WasOn?):
                    Light.TurnOff()
                    false
                else:
                    Light.TurnOn()
                    true
            if (set LightStates[LightIndex] = NewState):
                Logger.Print("Toggled light {LightIndex}.")

        if (IsSolved[]):
            OnSolved()

    OnSolved<private>() : void =
        Logger.Print("Puzzle solved!")
        SolvedTrigger.Trigger()
        # Stop accepting input so the solved state can't be undone.
        for (Subscription : ButtonSubscriptions):
            Subscription.Cancel()

    # Succeeds only when every light matches the target pattern. <decides> means
    # it must be called in a failure context, e.g. `if (IsSolved[]):`.
    IsSolved<private>()<decides><transacts> : void =
        for:
            Index -> State : LightStates
            Goal := TargetPattern[Index]
        do:
            State = Goal

Comments

    Sign in to vote, comment, or suggest an edit. Sign in
    📄
    Source
    Bizanator
    Biloxi Studios
    BizaNator @Bizanator
    MIT

    © Biloxi Studios Inc. — original Verse Island content.

    Sources & licensing
    Tags
    puzzle tags lights device
    Verse code
    Compiles · verified Jun 25, 2026
    Sign in to download .verse

    Copy-paste the code above is always free.

    Keep exploring
    More in Materials/VFX · 5 of 13
    Prev
    fortnite uefn verse simple 1v1 round manager spawn reset score
    Next
    fortnite depth cullface translucency object material functions
    Related topics
    • Tagged Lights Puzzle In Verse Materials/Vfx
    • Tagged Lights Puzzle In Verse Materials/Vfx
    • Gameplay Tags In Verse Verse Language
    • Gameplay Tags In Verse Verse Language
    • Tagged Lights 6 Final Result For Tagged Lights Puzzle In Verse Materials/Vfx

    Related

    Open in graph →

    Related topics

    • Tagged Lights Puzzle In Verse
    • Tagged Lights Puzzle In Verse
    • Gameplay Tags In Verse
    • Gameplay Tags In Verse
    • Tagged Lights 6 Final Result For Tagged Lights Puzzle In Verse
    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