Jak to wygląda w grze
Presety średniowieczny i sci-fi — karty postaci, ekwipunek i zadania; formularze, siatki i karty pytań; kanciaste panele i sterowanie dotykowe. Przełączenie presetu to jedna linijka kodu.
Co zdejmuje z twoich barków
Najwięcej czasu w interfejsie gry pochłania nie kształt przycisku — tylko wszystko to, co rozjeżdża się między urządzeniami. gohud ogarnia to rozjeżdżanie w jednym miejscu.
Każdy wymiar to token
Odstępy, narożniki i rozmiary tekstu wywołuje się po nazwie, a nie wpisuje liczbami. Podmień motyw, a cały ekran ruszy razem z nim.
Rozmiar widoczny ≠ rozmiar klikalny
Przycisk zamknięcia wygląda na 36 dp, ale jego obszar dotyku ma 48 dp. Tam, gdzie ciasno ułożone sloty zachodzą na siebie, naciśnięcie przejmuje ten, którego środek jest bliżej.
Wycięcia i klawiatury
Elementy HUD siedzą wewnątrz bezpiecznego obszaru, a pole wprowadzania unosi się ponad klawiaturę ekranową, gdy ta się pojawi.
Wstecz zamyka jedną rzecz
Escape i androidowy przycisk Wstecz zamykają tylko wierzchnią powierzchnię. Ułożone na sobie okna nie znikają razem.
Powiadomienia nie kradną wejścia
Naciśnij przez snackbar, a odbierze to przycisk pod spodem. Fokus też nie zostaje zabrany.
O ikony prosi się po nazwie
Widżety znają tylko GoIconSet.CLOSE. Podmień zestaw, a zmienią się wszystkie rysunki bez ruszania jednej linijki kodu.
Sześć wyglądów, jedna linijka
GoUi.use_preset() podmienia motyw, skórkę i ikony naraz — zaokrąglone, ścięte sci-fi albo kute średniowieczne ramy.
Czytelność z pomiaru
Każdy motyw jest sprawdzany względem WCAG, łącznie ze stanami przycisków i półprzezroczystymi panelami HUD na czystej bieli i czystej czerni.
Instalacja gohud
Dwie drogi. Niech zrobi to twój agent AI albo wrzuć folder do projektu — nie ma nic więcej do ustawienia.
Szybki start
Pięć linii wyświetla ekran z motywem. Cała droga jest na stronie instalacji.
Zmień wygląd — kolory i kształt
Motyw potrafi przestylizować tylko to, co rysuje silnik. Zaokrąglone narożniki to jedyne narożniki, jakie ma StyleBoxFlat, a joystick, szybkie sloty i wskazówka instruktażowa są rysowane kodem — więc sam motyw nigdy nie zmieni ich kształtu. Dlatego gohud dostarcza presety: motyw, skórkę i zestaw ikon dobrane jako jedna całość.
GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK) # motyw, skórka i ikony naraz
| Preset | Wygląd |
|---|---|
default_dark | Oryginalny gohud — zaokrąglone narożniki, miękki niebieski akcent |
default_light | Te same kształty na jasnej palecie |
scifi_dark | Ścięte narożniki, cyjanowe neonowe krawędzie i poświata, sześciokątny joystick, ramki celownicze |
scifi_light | Te same kanciaste kształty w jasnej palecie rysunku technicznego |
medieval_dark | Ciemne żelazo i skóra, ramy ze starego złota, nity, grawerowane ikony, nagłówki Cinzel |
medieval_light | Pergamin, atrament i brąz z tymi samymi kutymi ramami |
default_dark — zaokrąglone narożniki, miękki niebieski akcent
default_light — te same kształty, jasna paleta
scifi_dark — ścięte narożniki, cyjanowy neon
scifi_light — te same kanciaste kształty, paleta rysunku technicznegoTe cztery to ten sam ekran galerii. Nie różni się ani linijka kodu — tylko nazwa presetu. Narożniki przycisków, kształty przełączników, wiersze list i obramowania pól wprowadzania ruszają się razem.
Kolekcja średniowieczna
medieval_dark łączy żelazo i skórę ze starym złotem; medieval_light używa pergaminu
i atramentu. Ramy menu niosą nit i mały ornament narożny, podczas gdy stale widoczny HUD pozostaje spokojny;
16 grawerowanych ikon przerysowuje nazwy przedmiotów, a dołączonej czcionki Cinzel używają wyłącznie tytuły i podtytuły.
medieval_dark — żelazo i skóra
medieval_light — pergamin i atramentOba zrzuty to examples/medieval/medieval.tscn, zbudowane ze standardowych widżetów.
Przewodnik po średniowieczu i jak zrobić własne królestwo →
Ten sam ekran na telefonie i na komputerze
Zrzuty galerii to telefon w pionie. Poniżej ten sam kod w 1280×800 — treść zatrzymuje się na czytelnej szerokości (480 dp) i centruje, a HUD zostaje w narożnikach. Formularz omija pływające elementy HUD, ale nie rusza się, gdy już ich nie dotyka: przesuwanie na siłę zrzuciłoby treść ze środka na szerokim ekranie.
default_dark · 1280×800
scifi_dark · 1280×800Ten sam arkusz, inny wygląd
Wybierz jeden w Ustawieniach projektu → gohud → Theme → Preset albo ustaw GoConfig.preset.
Jawne wypełnienie theme, skin lub icons wygrywa z presetem,
więc możesz wziąć preset i nadpisać tylko jedną z tych rzeczy.
new_theme.py kingdom --from medieval_dark zapisuje paletę,
która wypisuje wprost każdą odziedziczoną wartość; make_theme.py kingdom buduje motyw, jego grafiki
kontrolek i pokrętła skórki, a preset pojawia się w selektorze. Każde ustawienie i pokrętło →
Skórki — tam, gdzie motyw nie sięga
Skórka posiada joystick, lica szybkich slotów, pierścień wskazówki instruktażowej, chipy, szkielety, alerty, separatory i nagłówki sekcji. Odziedzicz po niej i nadpisz tylko to, co chcesz zmienić.
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
| Klasa | Jakie kształty potrafi zrobić |
|---|---|
GoStyleBoxCut | Ukośnie ścięte narożniki (fazowanie), jedna pogrubiona krawędź akcentu, zewnętrzna poświata |
GoStyleBoxBracket | Same znaczniki narożne, bez zamykania treści w ramie |
GoStyleBoxMedieval | Kuta rama z nitami, grawerem w narożnikach, podświetleniem fazy i fakturą materiału |
Wszystkie trzy serializują się do zasobu Theme — i to właśnie pozwala motywowi zmieniać kształt, a nie tylko kolor.
GoSkinSciFi i GoSkinMedieval to dostarczone podklasy.
GoStyle.box() zawsze zwraca StyleBoxFlat, ponieważ kod wywołujący go otrzymuje
i dostraja bg_color albo corner_radius. Gdy własny kształt ma przetrwać, użyj
GoStyle.surface().
Widżety
Wszystkie elementy w jednej tabeli. Każdy z nich szczegółowo →
| Klasa | Klasa bazowa | Co robi |
|---|---|---|
GoSurface | Control | Powłoka pływającej karty — położenie na środku, u dołu albo przy kontrolce, przyklejony nagłówek i stopka, przewijane ciało, zmiana rozmiaru przeciągnięciem |
GoSheet | CanvasLayer | Strony wznoszące się od dołu, na własnej warstwie, więc siedzą ponad HUD |
GoDialogs | Node | Potwierdzenia i alerty, na które czekasz przez await; destructive dla działań nieodwracalnych |
GoForm | MarginContainer | Formularze z ograniczoną szerokością, omijające klawiaturę ekranową, a z avoid_hud także HUD |
GoScroll | ScrollContainer | Przewijanie dotykiem; pasek przewijania chowa się w marginesie wewnętrznym karty |
GoNotice | PanelContainer | Snackbar, który nie zabiera ani wejścia, ani fokusu |
GoPromptCard | PanelContainer | Pytanie, które nie blokuje gry |
GoCoachMark | Control | Przewodnik wskazujący prawdziwe kontrolki; naciśnięcie celu przesuwa go dalej |
GoHudAnchor | Control | Przypina elementy HUD do jednego z dziewięciu miejsc w bezpiecznym obszarze |
GoBar | Control | Paski zdrowia, many i doświadczenia z wygładzonymi zmianami |
GoSlot | Button | Szybki slot — ikona, liczba, odnowienie i skrót na jednym licu |
GoJoystick | Control | Wirtualny joystick w trybie stałym, podążającym albo względnym |
GoIconButton | Button | Wygląda na mały, naciska się duży |
GoStyle | statyczna | Przyciski, wiersze list, pola wprowadzania, chipy, tabele, zakładki i więcej, tworzone w jeden spójny sposób |
Czekanie, mówienie, liczenie
| Klasa | Klasa bazowa | Co robi |
|---|---|---|
GoSnackbar | Node | komunikat, który sam się umieszcza |
GoSpinner | Control | czekanie, którego końca nie widać |
GoBadge | PanelContainer | kropka nieprzeczytanych, etykietka NOWE, 99+ |
Formularze i listy
| Klasa | Klasa bazowa | Co robi |
|---|---|---|
GoField | VBoxContainer | wiersz, który może być błędny |
GoInputGroup | HBoxContainer | pole wprowadzania zespawane ze swoim przyciskiem |
GoCombobox | Button | lista wyboru, która szuka |
GoCodeInput | VBoxContainer | kody kuponów i prezentów |
GoTable | VBoxContainer | sortowalne nagłówki, wybieralne wiersze |
GoPagination | HBoxContainer | strony albo wiersz Więcej |
Kształty, których gry naprawdę używają
| Klasa | Klasa bazowa | Co robi |
|---|---|---|
GoRewardCalendar | VBoxContainer | codzienna obecność |
GoRadar · GoDonut | Control | statystyki na pierwszy rzut oka |
GoCarousel | VBoxContainer | banery i wybór postaci |
GoKbd | HBoxContainer | podpowiedzi klawiszy, które nie kłamią |
Ponad ekranem
| Klasa | Klasa bazowa | Co robi |
|---|---|---|
GoDrawer | CanvasLayer | panel boczny |
GoPopover | RefCounted | karta przypięta do miejsca |
GoContextMenu | RefCounted | przytrzymanie i prawy przycisk myszy |
GoConsole | CanvasLayer | konsola dewelopera |
AI SKILL
gohud zawiera umiejętność AI: całe API, gotowe do uruchomienia szablony i podgląd. Wklej jeden blok do swojego agenta — zainstaluje gohud i będzie wiedział, jak go używać.
Czytelność się mierzy, a nie ocenia na oko
„Ładne” to kwestia gustu; „czytelne” da się zmierzyć. Blady szary tekst wygląda dobrze na dobrym monitorze i znika na telefonie w słońcu — wybieranie na oko prędzej czy później to gwarantuje.
python3 addons/gohud/tools/check_contrast.py
Każda para kolorów i etykieta każdego stanu przycisku na panelu, na którym leży, jest mierzona względem WCAG, we wszystkich sześciu motywach. Półprzezroczyste kolory są najpierw składane na swoim prawdziwym tle — mierzenie ich wprost daje lepszy współczynnik, niż pokazuje ekran.
Kolory tekstu są więc wyprowadzane, a nie wybierane: builder bierze wpis z palety jako punkt wyjścia i przesuwa jego jasność, aż przekroczy próg na każdej powierzchni, na której może wylądować. Zmień paletę, a kontrast pójdzie za nią. Zasady i pułapki, które za nimi stoją →
Kontrole, wydania i ta strona
Jeden punkt wejścia uruchamia wszystkie kontrole; każda część widzi coś, czego nie widzą pozostałe.
bash addons/gohud/tools/check_all.sh
| Kontrola | Co wyłapuje |
|---|---|
run_tests.sh w czterech rozmiarach ekranu | Zachowanie i układ widżetów, pozycje RTL, fokus klawiatury, kontrast skórki w czasie działania, każdy preset |
new_project_check.sh | Ukryte zależności od projektu-gospodarza; z --zip wydanie w postaci wysyłkowej, z --export build webowy |
check_contrast.py | Kontrast WCAG każdego pliku motywu, wliczając stany przycisków i półprzezroczyste panele |
check_generated.py · check_scaffold.sh | Wygenerowane motywy zgadzają się ze swoimi paletami; jednorazowy motyw buduje się i przechodzi kontrolę kontrastu |
check_package.py | Wersja brana z package.json, przenoszenie wpisów changelogu i zawartość ZIP-a, w kopiach tymczasowych |
check_site.py | Linki tej strony, kotwice, język stron, słowniczek i tabele pokręteł |
Wydawanie wersji
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
Wersja to ta zapisana w package.json — pakowanie nigdy jej nie podbija. Aby wydać nową wersję,
najpierw zmień ten numer. Udany przebieg ustawia plugin.cfg i GoUi.VERSION na tę
wartość, a przy pierwszym pakowaniu danej wersji przenosi notatki z sekcji Unreleased w
CHANGELOG.md do datowanego wpisu. Ponowne pakowanie tej samej wersji buduje jej ZIP od nowa i
zastępuje poprzedni. Nieudany przebieg nie zmienia niczego. ZIP pomija tę witrynę, testy, narzędzia i
package.json.
Ta witryna
python3 addons/gohud/tools/make_site.py # słowniczek i tabele pokręteł skórek, generowane ze źródeł
python3 addons/gohud/tools/check_site.py # linki, kotwice, język, słowniczek, generowane tabele
bash addons/gohud/tools/site_shots.sh /tmp/shots # zrzuty każdej strony na komputerze i telefonie
Strony to zwykły HTML w www/ — angielski w katalogu głównym, koreański w ko/.
Workflow GitHub Actions publikuje ten folder jako korzeń witryny.