gohud

Install gohud

Two ways in. Let your AI agent do it, or drop the folder into your project — there is nothing else to set up.

Fastest way — let your AI agent install it

One block of text, pasted into Claude Code, Codex, Cursor or Gemini CLI, installs both the skill and the add-on and then explains gohud to you. Nothing below this card is needed if you take that road.

Open the AI SKILL page →

Install

Put the add-on folder into your project. There is nothing else to set up.

From the Asset Store or a release ZIP

Extract into your project root so you get res://addons/gohud/. That is all. Optionally enable Project → Project Settings → Plugins → gohud.

As a git submodule

git submodule add https://github.com/thruthesky/gohud.git addons/gohud
git submodule update --init
git -C addons/gohud checkout v1.0.0   # optional: pin a tag or commit

The repository root is the add-on folder, so it lands exactly where Godot expects it. Edit in place, commit and push inside addons/gohud, then commit the submodule pointer in your game.

Godot 4.6 or newer is required. gohud uses APIs introduced in 4.5 (DPITexture, FoldableContainer, accessibility properties), so on anything older it fails while parsing. 4.6 is the supported floor, recorded in GoUi.MIN_ENGINE.

Quick start

Every widget is .new() and add_child() — no scene files, no autoload.

Pick a look before building UI (optional)

GoUi.use_preset(GoThemePresets.SCIFI_DARK)   # default_dark is used when you skip this

A confirmation you await

var dialogs := GoDialogs.new()
add_child(dialogs)
if await dialogs.confirm("Delete save", "This cannot be undone."):
    delete_save()

Pass destructive = true (the last argument) and the confirm button is drawn as a filled danger button.

A bottom sheet with a sticky search field and footer

var sheet := GoSheet.new()
add_child(sheet)
sheet.open("Inventory")
sheet.toolbar().add_child(GoStyle.line_edit("Search…"))
sheet.toolbar().visible = true
for item in items:
    sheet.body.add_child(GoStyle.list_button(GoIconSet.BOX, item.name, _use.bind(item),
        Color.TRANSPARENT, item.description, false))
sheet.footer().add_child(GoStyle.button("Close", sheet.close, GoStyle.Tone.PRIMARY))
sheet.footer().visible = true
Why sticky rows are separate from the scrolling body. Put confirm and cancel in body and a long list pushes them off screen. footer() is always visible.

A HUD corner

var corner := GoHudAnchor.new()
corner.spot = GoHudAnchor.Spot.TOP_LEFT
corner.landscape_spot = GoHudAnchor.Spot.TOP_RIGHT
add_child(corner)

var hp := GoBar.new()
hp.label_text = "HP"
hp.ink = GoUi.color(GoTheme.DANGER_FILL)
corner.add_child(hp)
hp.set_values(320, 500)

Content that keeps clear of the HUD

form.avoid_hud = true                  # keep clear of every visible GoHudAnchor
joystick_anchor.reserve_space = false  # …except ones that only appear under a finger
notice_anchor.avoid_peers = true       # a toast settles below the fixed HUD instead of covering it

Each rectangle is avoided in whichever direction costs the least area — downwards on a portrait phone, sideways in landscape. How the HUD avoids itself →

Examples you can run

Three ways to see gohud before writing a line — none needs a server or an autoload.

ExampleHow to openWhat it shows
Galleryexamples/gallery/gallery.tscn · F6Every widget, a picker for every installed preset, and the full icon set
Medievalexamples/medieval/medieval.tscn · F6A character sheet, satchel and quest journal; buttons switch iron and parchment and open item details
Demo appcd examples/demo && godotA home screen opening the gallery, the 19-chapter guided tour, the showcase screen and the medieval look, with live widgets and one card per class
cd examples/demo && godot                             # home screen; links and imports on first run
bash examples/demo/run.sh                               # the same app, from the add-on root
bash examples/demo/run.sh -- --open=gallery             # skip the home screen
bash examples/demo/run.sh -- --explore=surfaces         # open straight onto one tour chapter
bash examples/demo/run.sh --record /tmp/gohud-demo.avi  # 1080p / 60 fps recording of the tour

The demo app needs no setup: if the add-on link or the import cache is missing it says so, repairs the folder and reopens itself. Its home screen opens each example inside the same window — press 14 or click a row, and the bar across the top brings you back.

In the tour, C toggles Cinema mode, F11 fullscreen, Space pauses (or plays the current widget while exploring), the arrows change chapters and Escape returns to Start.

Using an AI coding agent? Open all three with one command →