A 3D UI system for Unreal Engine 5.8
DreamGUI
A widget is an object with a rect, anchors and a pivot, batched by a canvas — on the screen, or standing in the level at any angle with correct hit testing either way. A UI tree is a widget Blueprint you subclass, written as .dui text or in a UMG-style designer that edits the same class. A control library, tweens, per-player input and gamepad navigation come with it.
DreamGUI · UI in the world
What it looks like
One .dui file is one UI class
A whole settings screen: a library supplies the styles and the Row component, rows writes one instance per line, the button routes its click to a function on the user widget, and the hint is shown while a variable says so. Compiled, it is an ordinary widget Blueprint, and a property changed on it in the designer is written back into this text.
class /Game/UI/WBP_Settingsuse "UI/Library.dui" as uiVerticalBox Root : ui.Page { Spacing = 24 Text Title : ui.Heading { Text = "Settings" } rows ui.Row : ui.Wide (Label, Value) { "Subtitles", "On" "Difficulty", "Normal" "Vibration", "Off" } Native.Button Apply { Text { Text = "Apply" } OnClicked -> HandleApply } Text Hint : ui.Note { Shown <- bDirty Text = "Unsaved changes" }}compiles into /Game/UI/WBP_Settings — on the screen or in the level
UDreamUIBPLibrary::AddWidgetOfClassToViewport(this, WBP_Settings)
Workflow
Write a tree, put it on the screen or in the world
The same class can be a layer on the screen or a panel in the level. The screen root, the raycaster and the event system are created on demand — nothing to set up first.
Author
Write nodes, styles, components, bindings, if / for and timelines in .dui; change a property in the designer and the edit lands on its line in the text, so the two never fork.
Compile
A .dui compiles into a UDreamWidgetBlueprint whose class is a UDreamUserWidget: subclass it, nest it in another tree, reach its children by name.
Place
One call adds it to the viewport; dragged into a level it is an ADreamWorldWidgetActor, drawn by DreamGUI's own renderer or sent through the engine's pipeline for post process and depth.
Interact
Every local player has its own pointers, focus and text target; Tab and gamepad navigation, modals and popups, drag and drop and tooltips live in the input module, and motion in tweens and timelines.
Tooling
Designer, editor extension, tests, debugging
The text is the authoring surface and the designer another view of the same data; the tests and the debugging commands are part of the plugin, not a matter of looking closely.
Designer
Rebuilt against UMG's: picking by rect, hover feedback, anchors, marquee selection, drag to reparent, event routes in one click; a .dui class's property edits go back into the text.
VS Code extension
Highlighting, completion, hover, navigation, diagnostics and formatting for .dui, with the plugin compiler's own codes.
Automation suite
More than 2400 tests ship with the plugin, run by preset; the release gate also packages a game and runs a text smoke test in it.
Debugging commands
DreamUI.Capture writes every canvas to a PNG, DreamUI.Stats costs the frame stage by stage, DreamGUI.Memory says what fonts and atlases hold.
Documentation
Enter the docs from here
The homepage is for orientation; the docs hold the full reference. Pick the entry that matches the task in front of you.
Getting started
Install the plugin, compile a first .dui and put it on the screen.
Concepts
Widgets and canvases, screen and world space, layout, text, rendering, input.
The .dui language
Nodes, styles, components, bindings, if / for, rows and timelines.
Controls
Buttons, lists, dialogs, tab views … and how their names map to UMG's.
Diagnostics
Every DUInnnn code, in seven families by pipeline stage.
Changelog
What changed in each version, and what to check when upgrading.