Verse Wiki — the Verse handbook for Blueprint authors
Bonus · EXTRA

Advanced @editable: ToolTip, Categories & Sliders

Bare @editable just dumps a variable into the panel; if you want the panel to grow grouping, hover tips, and range sliders, you add a layer of "block metadata". You have actually seen all of these in a Blueprint variable's Details panel (Tooltip, Category, Slider Range) — this page lays out how to write them in Verse, collected from syntax verified on the Epic developer forums, so your Verse device's Details panel can get close to the native-device experience.

1. The Basics, Refreshed

Lesson 22 covered it: @editable is a sticky note addressed to the editor — put it on the line above one of a device's (creative_device) variables and that variable pops into the Details panel, which is the same as flipping on its Instance Editable eye icon. Basic usage has three iron rules: the variable must have a default value; its type must be on the supported list (basic types, device references, agent (the player pin), arrays, and custom classes marked <concrete>); and it is an @ sticky note — always on its own line, up top.

But with only bare @editable, your device panel looks amateurish next to a native device's: native device properties get collapsible groups, hover explanations, and range sliders, while your variable sits alone in the default group, one careless designer away from an absurd value. Where is the gap? In the metadata — the very Tooltip, Category, and Slider settings you fill in on a Blueprint variable's Details panel.

2. Block Metadata: Growing Advanced Controls in the Panel

The @editable family supports a "block metadata" form: the @ sticky note is followed by a colon, and metadata entries go in one per line on the indented level below (just like setting Tooltip and Category entry by entry in a Blueprint variable's Details panel). This capability was first shown publicly in the Verse Update | GDC 2024 talk; official docs stayed vague for a long time, but the forums verified working syntax early on. Take the slider variant @editable_slider as an example:

tower_device.verse
using { /Fortnite.com/Devices }

# ToolTip and Categories values require <localizes> message constants
AttackGapTip<localizes>:message = "Seconds between two attacks"
TowerCategory<localizes>:message = "Tower Settings"

tower_device := class(creative_device):

    # Block metadata: grouping + hover tip + slider range
    @editable_slider(float):
        Categories := array{TowerCategory}
        ToolTip := AttackGapTip
        MinValue := option{0.5}
        MaxValue := option{10.0}
    var AttackGap:float = 2.0

Translating the picture, line by line: @editable_slider(float) says "tune this float variable with a slider"; Categories files it under a group named "Tower Settings" (the value is an array of message constants, multiple levels supported); ToolTip is the explanation that pops up on mouse hover; MinValue / MaxValue wrap the slider's bounds in option (the "might be there, might not" kind of value) — from now on, no designer can drag the attack gap below 0.5 seconds, and a whole class of config accidents simply disappears. You have seen these field names almost verbatim in a Blueprint variable's Details panel.

Note one easily missed precondition: ToolTip and Categories values cannot be a plain quoted string — they must be message constants wearing the <localizes> badge (those two lines up top: AttackGapTip and TowerCategory). <localizes> means this copy enters the localization (translation) pipeline — your device panel is born ready to ship in multiple languages.

3. Known Pitfalls & Field-Testing Advice

This syntax is genuinely useful, but it lives in a gray zone — "shown in an official talk, documented slowly". Three warnings before you write it:

Rough edges aside, advanced @editable is still worth the investment: it is the foundation of the "write the code once, let designers tune it ten thousand times" workflow. The better your panel experience, the less often teammates @-mention you.

When giving @editable_slider a ToolTip, what does the ToolTip's value need to be?

Compiled from the Epic developer forums and community guides: Forum: How can I use the editable attributes with tooltips and categories ↗, Forum bug report: editable Categories does not work in Verse devices ↗, Verse Island: Making class attributes editable in UEFN ↗.