Goal
Every game needs an interface: a HUD with health and score, a pause menu, dialogue boxes, a settings screen, prompts anchored to things in the world. Today a game built on Untold has to put SwiftUI or UIKit views over the Metal view for all of that, which means a second rendering system with its own frame timing, no access to the scene (no world-space labels, no depth), a different look per platform, and on visionOS an interface that cannot live inside the immersive space at all.
The goal is a built-in UI layer rendered by the engine itself in the same frame as the scene: text, images, buttons, progress bars and panels, laid out with anchors and stacks, hit-tested from the engine's input system (touch, mouse, hand pinch and gaze on visionOS), in screen space or attached to an entity in world space, with values bound to game state and property animation for transitions. Authored in the editor and saved with the scene, driven from Swift at run time, and consistent across macOS, iOS and visionOS. Nothing exists today. NoesisUI is evaluated separately as a middleware alternative (issue #1235); the two issues inform each other and the answer may be both, built-in for the HUD and Noesis for rich menus.
Status
| Step |
Plan |
Status |
| Requirements |
Which widgets games need first (text, image, button, progress, panel), screen-space vs. world-space (visionOS), input sources (touch, mouse, hand pinch), theming |
Not started |
| Text |
Font atlas or SDF text rendering with Unicode coverage |
Not started |
| Widgets and layout |
Sprite batch, anchors and stacks, hit testing, focus, animation of properties |
Not started |
| Data binding |
Bind widget values to game state without per-frame code |
Not started |
| Editor |
Author a UI layout in the editor and save it with the scene |
Not started |
| Sample |
A HUD and a pause menu on one of the demos |
Not started |
Next steps
- Requirements note, then text rendering: every widget needs it.
Goal
Every game needs an interface: a HUD with health and score, a pause menu, dialogue boxes, a settings screen, prompts anchored to things in the world. Today a game built on Untold has to put SwiftUI or UIKit views over the Metal view for all of that, which means a second rendering system with its own frame timing, no access to the scene (no world-space labels, no depth), a different look per platform, and on visionOS an interface that cannot live inside the immersive space at all.
The goal is a built-in UI layer rendered by the engine itself in the same frame as the scene: text, images, buttons, progress bars and panels, laid out with anchors and stacks, hit-tested from the engine's input system (touch, mouse, hand pinch and gaze on visionOS), in screen space or attached to an entity in world space, with values bound to game state and property animation for transitions. Authored in the editor and saved with the scene, driven from Swift at run time, and consistent across macOS, iOS and visionOS. Nothing exists today. NoesisUI is evaluated separately as a middleware alternative (issue #1235); the two issues inform each other and the answer may be both, built-in for the HUD and Noesis for rich menus.
Status
Next steps