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.
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.
Installare gohud
Due strade. Falla fare al tuo agente IA, oppure metti la cartella nel progetto — non c'è altro da configurare.
Avvio rapido
Cinque righe mettono a schermo una schermata con il tema. Il percorso completo è nella pagina di installazione.
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
| Preset | Aspetto |
|---|---|
default_dark | Il gohud originale — angoli arrotondati, accento blu tenue |
default_light | Le stesse forme su una palette chiara |
scifi_dark | Angoli smussati, bordi al neon ciano con bagliore, joystick esagonale, staffe di mira |
scifi_light | Le stesse forme spigolose in una palette luminosa da progetto tecnico |
medieval_dark | Ferro e cuoio scuri, cornici in oro antico, rivetti, icone incise, titoli in Cinzel |
medieval_light | Pergamena, inchiostro e bronzo con le stesse cornici forgiate |
default_dark — angoli arrotondati, accento blu tenue
default_light — stesse forme, palette chiara
scifi_dark — angoli smussati, neon ciano
scifi_light — stesse forme spigolose, palette da progetto tecnicoQuelle 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 — ferro e cuoio
medieval_light — pergamena e inchiostroEntrambe 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 · 1280×800
scifi_dark · 1280×800Lo stesso foglio, un aspetto diverso
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.
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
| Classe | Forme che sa creare |
|---|---|
GoStyleBoxCut | Angoli tagliati in diagonale (smusso), un bordo d'accento ispessito, un bagliore esterno |
GoStyleBoxBracket | Solo segni agli angoli, senza racchiudere il contenuto |
GoStyleBoxMedieval | Una 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 →
| Classe | Base | Cosa fa |
|---|---|---|
GoSurface | Control | Guscio della scheda flottante — collocazione al centro, in basso o ancorata, intestazione e piè di pagina fissi, corpo scorrevole, ridimensionamento con il trascinamento |
GoSheet | CanvasLayer | Pagine che salgono dal basso, su un layer proprio così da stare sopra l'HUD |
GoDialogs | Node | Conferme e avvisi da mettere in await; destructive per le azioni irreversibili |
GoForm | MarginContainer | Moduli con larghezza limitata che evitano la tastiera virtuale e, con avoid_hud, l'HUD |
GoScroll | ScrollContainer | Scorrimento touch; la barra di scorrimento si infila nel margine interno della scheda |
GoNotice | PanelContainer | Una snackbar che non prende né input né focus |
GoPromptCard | PanelContainer | Una domanda che non blocca il gioco |
GoCoachMark | Control | Un tour guidato che indica i controlli veri; premere il bersaglio fa avanzare |
GoHudAnchor | Control | Fissa i pezzi dell'HUD in uno dei nove punti dell'area sicura |
GoBar | Control | Barre di salute, mana ed esperienza con variazioni smorzate |
GoSlot | Button | Uno slot rapido — icona, quantità, ricarica e scorciatoia su una sola faccia |
GoJoystick | Control | Stick virtuale in modalità fissa, segui o relativa |
GoIconButton | Button | Sembra piccolo, si preme grande |
GoStyle | statico | Pulsanti, righe di lista, campi, chip, tabelle, schede e altro, fatti tutti nello stesso modo |
Aspettare, dire, contare
| Classe | Base | Cosa fa |
|---|---|---|
GoSnackbar | Node | il messaggio che si colloca da sé |
GoSpinner | Control | un'attesa di cui non si vede la fine |
GoBadge | PanelContainer | il puntino dei non letti, l'etichetta NUOVO, il 99+ |
Moduli e liste
| Classe | Base | Cosa fa |
|---|---|---|
GoField | VBoxContainer | la riga che può essere sbagliata |
GoInputGroup | HBoxContainer | un campo saldato al suo pulsante |
GoCombobox | Button | un selettore che cerca |
GoCodeInput | VBoxContainer | codici coupon e codici regalo |
GoTable | VBoxContainer | intestazioni ordinabili, righe selezionabili |
GoPagination | HBoxContainer | pagine, oppure una riga Altro |
Forme che i giochi usano davvero
| Classe | Base | Cosa fa |
|---|---|---|
GoRewardCalendar | VBoxContainer | presenze giornaliere |
GoRadar · GoDonut | Control | le statistiche a colpo d'occhio |
GoCarousel | VBoxContainer | banner e selezione del personaggio |
GoKbd | HBoxContainer | suggerimenti dei tasti che non mentono |
Sopra lo schermo
| Classe | Base | Cosa fa |
|---|---|---|
GoDrawer | CanvasLayer | il pannello laterale |
GoPopover | RefCounted | la scheda ancorata |
GoContextMenu | RefCounted | pressione prolungata e clic destro |
GoConsole | CanvasLayer | la 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.
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
| Verifica | Che cosa intercetta |
|---|---|
run_tests.sh a quattro dimensioni di schermo | Comportamento e disposizione dei widget, posizioni RTL, focus da tastiera, contrasto della skin a runtime, ogni preset |
new_project_check.sh | Dipendenze nascoste da un progetto ospite; con --zip la release così com'è distribuita, con --export una build Web |
check_contrast.py | Contrasto WCAG di ogni file di tema, stati dei pulsanti e pannelli traslucidi inclusi |
check_generated.py · check_scaffold.sh | I temi generati corrispondono alle loro palette; un tema usa e getta si genera e supera il contrasto |
check_package.py | La versione presa da package.json, spostamenti nel changelog e contenuto dello ZIP, in copie temporanee |
check_site.py | Link, ancore, lingua della pagina, glossario e tabelle delle manopole di questo sito |
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.