gohud

UI di gioco, guidata da una sola risorsa

gohud è un kit HUD e UI per Godot 4.6 e versioni successive. Finestre flottanti, fogli inferiori, finestre di dialogo, moduli, snackbar, coach mark, barre HUD, slot rapidi e un joystick virtuale funzionano con un solo tema e un solo set di icone intercambiabile, e si occupano al posto tuo dell'area sicura, della tastiera virtuale, dell'RTL e delle aree di tocco. Sei preset — default, sci-fi e medievale, ognuno scuro e chiaro — cambiano colori e forme in una riga.

Godot 4.6+ v1.0.1 GDScript puro Nessun autoload MIT 6 preset 21 lingue 100 icone incluse

Come appare dentro un gioco

I preset medievale e sci-fi — schede personaggio, inventari e missioni; moduli, griglie e schede di richiesta; pannelli spigolosi e comandi touch. Cambiare preset è una riga di codice.

tema medievale di gohud — una scheda personaggio con barre di salute, mana e vigore, una bisaccia di slot rapidi e un diario delle missioni in cornici d'oro forgiato
Medievale — personaggio, inventario e missioni
tema medievale di gohud — un pannello di inserimento con campo nome, interruttore, caselle di spunta e cursore del volume, una griglia di riquadri e una scheda di richiesta per l'invito al gruppo con Accetta e Rifiuta
Medievale — moduli, griglie e schede di richiesta
tema sci-fi di gohud — un pannello di comandi touch con angoli smussati, joystick esagonale, selettore Fisso / Segui / Relativo e pulsanti d'azione rotondi
Sci-fi — pannelli spigolosi e comandi touch

Tutti e sei i preset e come cambiarli →

Di che cosa ti solleva

Nella UI di gioco il tempo non se ne va nella forma di un pulsante: se ne va in tutto ciò che si disallinea da un dispositivo all'altro. gohud governa quel disallineamento in un unico punto.

Ogni misura è un token

Spaziature, angoli e dimensioni del testo si chiamano per nome, non si scrivono come numeri. Cambia il tema e l'intera schermata si muove con lui.

Dimensione visibile ≠ dimensione premibile

Un pulsante di chiusura sembra 36dp ma la sua area di tocco è 48dp. Dove slot affollati si sovrappongono, la pressione va a quello con il centro più vicino.

Notch e tastiere

I pezzi dell'HUD stanno dentro l'area sicura, e un campo di inserimento si solleva sopra la tastiera virtuale quando compare.

Indietro chiude una cosa sola

Esc e il tasto Indietro di Android chiudono solo la superficie più in alto. Le finestre impilate non spariscono tutte insieme.

Le notifiche non rubano l'input

Premi attraverso una snackbar e il pulsante sottostante la riceve. Nemmeno il focus viene sottratto.

Le icone si chiedono per nome

I widget conoscono solo GoIconSet.CLOSE. Cambia il set e ogni disegno cambia senza toccare una riga di codice.

Sei aspetti, una riga

GoUi.use_preset() cambia insieme tema, skin e icone — cornici arrotondate, smussate in stile sci-fi o forgiate in stile medievale.

Leggibile per misura

Ogni tema è verificato rispetto alle WCAG, inclusi gli stati dei pulsanti e i pannelli HUD traslucidi sopra bianco puro e nero puro.

Tutto funziona senza abilitare il plugin. Abilitarlo aggiunge un autoload GoRuntime che tiene traccia della dimensione della finestra, della scala dp e dell'altezza della tastiera, più le impostazioni di progetto per la risorsa di configurazione e per il preset — comodità, non requisiti.

Installare gohud

Due strade. Falla fare al tuo agente IA, oppure metti la cartella nel progetto — non c'è altro da configurare.

Installazione

Avvio rapido

Cinque righe mettono a schermo una schermata con il tema. Il percorso completo è nella pagina di installazione.

Avvio rapido

Cambia l'aspetto — colori e forma

Un Theme può ridisegnare solo ciò che disegna il motore. Gli angoli arrotondati sono gli unici angoli che StyleBoxFlat conosce, e il joystick, gli slot rapidi e il coach mark sono disegnati dal codice — quindi un tema da solo non può mai cambiarne la forma. Per questo gohud include i preset: un tema, una skin e un set di icone scelti come un'unica unità.

GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK)   # tema, skin e icone insieme
PresetAspetto
default_darkIl gohud originale — angoli arrotondati, accento blu tenue
default_lightLe stesse forme su una palette chiara
scifi_darkAngoli smussati, bordi al neon ciano con bagliore, joystick esagonale, staffe di mira
scifi_lightLe stesse forme spigolose in una palette luminosa da progetto tecnico
medieval_darkFerro e cuoio scuri, cornici in oro antico, rivetti, icone incise, titoli in Cinzel
medieval_lightPergamena, inchiostro e bronzo con le stesse cornici forgiate
La galleria di gohud con il preset default_dark — angoli arrotondati, accento blu
default_dark — angoli arrotondati, accento blu tenue
preset default_light — le stesse forme su una palette chiara
default_light — stesse forme, palette chiara
preset scifi_dark — angoli smussati e neon ciano
scifi_dark — angoli smussati, neon ciano
preset scifi_light — le stesse forme spigolose in una palette da progetto tecnico
scifi_light — stesse forme spigolose, palette da progetto tecnico

Quelle quattro sono la stessa schermata della galleria. Non cambia una riga di codice — solo il nome del preset. Angoli dei pulsanti, forma degli interruttori, righe delle liste e bordi dei campi si muovono tutti insieme.

Collezione medievale

medieval_dark accosta ferro e cuoio all'oro antico; medieval_light usa pergamena e inchiostro. Le cornici dei menu portano un rivetto e un piccolo ornamento angolare mentre l'HUD sempre visibile resta sobrio; 16 icone incise ridisegnano i nomi degli oggetti, e solo titoli e sottotitoli usano il font Cinzel incluso.

medieval_dark — scheda personaggio, bisaccia di slot rapidi e diario delle missioni
medieval_dark — ferro e cuoio
medieval_light — le stesse schermate di personaggio, bisaccia e missioni su pergamena
medieval_light — pergamena e inchiostro

Entrambe le immagini sono examples/medieval/medieval.tscn, costruita con i widget standard. La guida medievale e come creare il tuo regno →

La stessa schermata su telefono e su desktop

Le immagini della galleria sono un telefono in verticale. Qui sotto c'è lo stesso codice a 1280×800 — il contenuto si ferma a una larghezza leggibile (480dp) e si centra, mentre l'HUD resta negli angoli. Il modulo gira attorno ai pezzi flottanti dell'HUD, ma non si sposta se ne è già libero: spingerlo comunque sbilancerebbe il contenuto fuori centro su uno schermo largo.

default_dark a 1280x800 — contenuto centrato, HUD negli angoli
default_dark · 1280×800
scifi_dark a 1280x800 — stesso impianto con pannelli smussati e neon
scifi_dark · 1280×800

Lo stesso foglio, un aspetto diverso

Un foglio inferiore in default_dark
Default — scheda arrotondata, riga di ricerca e piè di pagina fissi
Un foglio inferiore in scifi_dark — bordo d'accento al neon lungo il lato superiore
Sci-fi — bordo d'accento in alto, angoli tagliati, bagliore

Scegline uno da Project Settings → gohud → Theme → Preset, oppure imposta GoConfig.preset. Valorizzare esplicitamente theme, skin o icons ha la precedenza sul preset, così puoi partire da un preset e sovrascriverne uno solo.

Un tema nuovo è un solo file JSON. new_theme.py kingdom --from medieval_dark scrive una palette che esplicita ogni valore ereditato; make_theme.py kingdom costruisce il tema, la grafica dei controlli e le manopole della sua skin, e il preset compare nel selettore. Ogni impostazione e ogni manopola →

Skin — dove un Theme non arriva

Una skin possiede il joystick, le facce degli slot rapidi, l'anello del coach mark, i chip, gli scheletri, gli avvisi, i divisori e le intestazioni di sezione. Estendila e sovrascrivi solo ciò che vuoi cambiare.

class_name MySkin extends GoSkin

func slot_box(accent: Color, lit: bool) -> StyleBox:
    var box := GoStyleBoxCut.new()
    box.bg_color = accent
    box.cut = 6.0
    box.edge_color = accent
    return box
ClasseForme che sa creare
GoStyleBoxCutAngoli tagliati in diagonale (smusso), un bordo d'accento ispessito, un bagliore esterno
GoStyleBoxBracketSolo segni agli angoli, senza racchiudere il contenuto
GoStyleBoxMedievalUna cornice forgiata con rivetti, incisione agli angoli, una luce di bisello e la grana del materiale

Tutte e tre si serializzano dentro una risorsa Theme — ed è proprio questo che permette a un tema di cambiare forma, non solo colore. GoSkinSciFi e GoSkinMedieval sono le sottoclassi incluse.

GoStyle.box() restituisce sempre uno StyleBoxFlat, perché il codice chiamante lo riceve e ne regola bg_color o corner_radius. Usa GoStyle.surface() quando una forma personalizzata deve sopravvivere.

Widget

I pezzi, in una tabella sola. Ognuno nel dettaglio →

ClasseBaseCosa fa
GoSurfaceControlGuscio della scheda flottante — collocazione al centro, in basso o ancorata, intestazione e piè di pagina fissi, corpo scorrevole, ridimensionamento con il trascinamento
GoSheetCanvasLayerPagine che salgono dal basso, su un layer proprio così da stare sopra l'HUD
GoDialogsNodeConferme e avvisi da mettere in await; destructive per le azioni irreversibili
GoFormMarginContainerModuli con larghezza limitata che evitano la tastiera virtuale e, con avoid_hud, l'HUD
GoScrollScrollContainerScorrimento touch; la barra di scorrimento si infila nel margine interno della scheda
GoNoticePanelContainerUna snackbar che non prende né input né focus
GoPromptCardPanelContainerUna domanda che non blocca il gioco
GoCoachMarkControlUn tour guidato che indica i controlli veri; premere il bersaglio fa avanzare
GoHudAnchorControlFissa i pezzi dell'HUD in uno dei nove punti dell'area sicura
GoBarControlBarre di salute, mana ed esperienza con variazioni smorzate
GoSlotButtonUno slot rapido — icona, quantità, ricarica e scorciatoia su una sola faccia
GoJoystickControlStick virtuale in modalità fissa, segui o relativa
GoIconButtonButtonSembra piccolo, si preme grande
GoStylestaticoPulsanti, righe di lista, campi, chip, tabelle, schede e altro, fatti tutti nello stesso modo

Aspettare, dire, contare

ClasseBaseCosa fa
GoSnackbarNodeil messaggio che si colloca da sé
GoSpinnerControlun'attesa di cui non si vede la fine
GoBadgePanelContaineril puntino dei non letti, l'etichetta NUOVO, il 99+

Moduli e liste

ClasseBaseCosa fa
GoFieldVBoxContainerla riga che può essere sbagliata
GoInputGroupHBoxContainerun campo saldato al suo pulsante
GoComboboxButtonun selettore che cerca
GoCodeInputVBoxContainercodici coupon e codici regalo
GoTableVBoxContainerintestazioni ordinabili, righe selezionabili
GoPaginationHBoxContainerpagine, oppure una riga Altro

Forme che i giochi usano davvero

ClasseBaseCosa fa
GoRewardCalendarVBoxContainerpresenze giornaliere
GoRadar · GoDonutControlle statistiche a colpo d'occhio
GoCarouselVBoxContainerbanner e selezione del personaggio
GoKbdHBoxContainersuggerimenti dei tasti che non mentono

Sopra lo schermo

ClasseBaseCosa fa
GoDrawerCanvasLayeril pannello laterale
GoPopoverRefCountedla scheda ancorata
GoContextMenuRefCountedpressione prolungata e clic destro
GoConsoleCanvasLayerla console per lo sviluppo

AI SKILL

gohud include una skill IA: tutta l'API, modelli pronti all'uso e un avviatore di anteprima. Incolla un blocco nel tuo agente: installa gohud e sa come usarlo.

AI SKILL

La leggibilità si misura, non si stima a occhio

"Bello" è gusto; "leggibile" si può misurare. Un testo grigio slavato sembra a posto su un buon monitor e sparisce su un telefono alla luce del sole — scegliere a occhio garantisce che prima o poi succeda.

python3 addons/gohud/tools/check_contrast.py

Ogni coppia di colori e l'etichetta di ogni stato di ogni pulsante sopra il pannello su cui si trova viene misurata rispetto alle WCAG, in tutti e sei i temi. I colori traslucidi vengono prima composti sopra il loro sfondo reale — misurarli direttamente riporterebbe un rapporto migliore di quello che si vede a schermo.

I colori del testo sono quindi derivati, non scelti: il generatore prende la voce della palette come punto di partenza e ne spinge la luminosità finché non supera la soglia su ogni superficie su cui può finire. Cambia la palette e il contrasto la segue. Le regole e le trappole dietro di esse →

Verifiche, release e questo sito

Un unico punto d'ingresso esegue tutte le verifiche; ogni parte vede qualcosa che le altre non vedono.

bash addons/gohud/tools/check_all.sh
VerificaChe cosa intercetta
run_tests.sh a quattro dimensioni di schermoComportamento e disposizione dei widget, posizioni RTL, focus da tastiera, contrasto della skin a runtime, ogni preset
new_project_check.shDipendenze nascoste da un progetto ospite; con --zip la release così com'è distribuita, con --export una build Web
check_contrast.pyContrasto WCAG di ogni file di tema, stati dei pulsanti e pannelli traslucidi inclusi
check_generated.py · check_scaffold.shI temi generati corrispondono alle loro palette; un tema usa e getta si genera e supera il contrasto
check_package.pyLa versione presa da package.json, spostamenti nel changelog e contenuto dello ZIP, in copie temporanee
check_site.pyLink, ancore, lingua della pagina, glossario e tabelle delle manopole di questo sito
Ultima esecuzione registrata — 2026-09-13, Godot 4.7.2, macOS, renderer Compatibility. 438 verifiche su 438 a 390×844, 844×390, 768×1024 e 1280×800 in un progetto vuoto; di nuovo 438 su 438 con l'autoload GoRuntime; un export Web; zero fallimenti di contrasto sui sei temi. Godot 4.6 e i dispositivi fisici Android o iOS non facevano parte di questa esecuzione.

Versioni di release

cat addons/gohud/package.json       # { "version": "1.1.0" }
bash addons/gohud/tools/package.sh  # 1.1.0 → builds/1.1.0/gohud-1.1.0.zip

La versione è quella scritta in package.json: il packaging non la incrementa mai. Per pubblicare una nuova versione, cambia prima quel numero. Un'esecuzione riuscita allinea plugin.cfg e GoUi.VERSION a quel valore e, la prima volta che quella versione viene impacchettata, sposta le note Unreleased di CHANGELOG.md in una voce datata. Impacchettare di nuovo la stessa versione ricostruisce il suo ZIP e sostituisce quello precedente. Un'esecuzione fallita non cambia nulla. Lo ZIP lascia fuori questo sito, i test, gli strumenti e package.json.

Questo sito

python3 addons/gohud/tools/make_site.py            # glossario e tabelle delle manopole delle skin, generati dai sorgenti
python3 addons/gohud/tools/check_site.py           # link, ancore, lingua, glossario, tabelle generate
bash addons/gohud/tools/site_shots.sh /tmp/shots   # screenshot desktop e telefono di ogni pagina

Le pagine sono semplice HTML dentro www/ — l'inglese nella radice, il coreano in ko/. Un workflow di GitHub Actions pubblica quella cartella come radice del sito.