Skip to content

[Feature] Built-in game UI components #1234

Description

@miogds

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions