Seperti apa tampilannya di dalam game
Preset abad pertengahan dan sci-fi — lembar karakter, inventaris, dan misi; formulir, grid, dan kartu ajakan; panel bersudut dan kontrol sentuh. Mengganti preset cukup satu baris kode.
Apa yang tidak perlu lagi Anda urus
Yang paling menyita waktu di UI game bukanlah bentuk sebuah tombol — melainkan segala hal yang berbeda-beda antarperangkat. gohud mengurus perbedaan itu di satu tempat.
Setiap ukuran adalah token
Jarak, sudut, dan ukuran teks dipanggil lewat nama, bukan ditulis sebagai angka. Tukar temanya dan seluruh layar ikut berubah.
Ukuran terlihat ≠ ukuran yang bisa ditekan
Tombol tutup terlihat 36dp tetapi target sentuhnya 48dp. Di tempat slot berdesakan saling tumpang tindih, yang pusatnya lebih dekat yang menerima tekanan.
Notch dan keyboard
Bagian-bagian HUD duduk di dalam area aman, dan kolom masukan naik ke atas keyboard virtual begitu keyboard muncul.
Tombol kembali menutup satu hal
Escape dan tombol Back Android menutup hanya permukaan paling atas. Jendela yang bertumpuk tidak lenyap bersamaan.
Pemberitahuan tidak pernah merampas input
Tekan menembus snackbar dan tombol di bawahnya tetap menerimanya. Fokus pun tidak diambil.
Ikon diminta lewat namanya
Widget hanya tahu GoIconSet.CLOSE. Tukar setnya dan semua gambar berubah tanpa menyentuh satu baris kode.
Enam tampilan, satu baris
GoUi.use_preset() menukar tema, skin, dan ikon sekaligus — bingkai membulat, sci-fi bersudut potong, atau tempaan abad pertengahan.
Keterbacaan yang terukur
Setiap tema diperiksa terhadap WCAG, termasuk keadaan tombol dan panel HUD tembus pandang di atas putih murni dan hitam murni.
Memasang gohud
Dua jalan. Serahkan pada agen AI, atau letakkan foldernya di proyekmu — tidak ada lagi yang perlu diatur.
Mulai cepat
Lima baris menampilkan layar bertema. Langkah lengkapnya ada di halaman pemasangan.
Ubah tampilan — warna dan bentuk
Sebuah Theme hanya bisa mengubah gaya apa yang digambar mesin. Sudut membulat adalah satu-satunya sudut yang dimiliki StyleBoxFlat, sedangkan joystick, slot cepat, dan coach mark digambar oleh kode — jadi tema saja tidak akan pernah bisa mengubah bentuknya. Karena itu gohud menyediakan preset: tema, skin, dan set ikon yang dipilih sebagai satu paket.
GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK) # tema, skin, dan ikon sekaligus
| Preset | Tampilan |
|---|---|
default_dark | gohud yang asli — sudut membulat, aksen biru lembut |
default_light | Bentuk yang sama pada palet terang |
scifi_dark | Sudut potong, tepi dan pendar neon sian, joystick heksagonal, kurung penanda sasaran |
scifi_light | Bentuk bersudut yang sama dalam palet cetak biru yang cerah |
medieval_dark | Besi gelap dan kulit, bingkai emas antik, paku keling, ikon ukiran, judul Cinzel |
medieval_light | Perkamen, tinta, dan perunggu dengan bingkai tempaan yang sama |
default_dark — sudut membulat, aksen biru lembut
default_light — bentuk sama, palet terang
scifi_dark — sudut potong, neon sian
scifi_light — bentuk bersudut sama, palet cetak biruKeempatnya adalah layar galeri yang sama. Tidak ada satu baris kode pun yang berbeda — hanya nama presetnya. Sudut tombol, bentuk sakelar, baris daftar, dan garis tepi kolom masukan semuanya berubah bersamaan.
Koleksi abad pertengahan
medieval_dark memadukan besi dan kulit dengan emas antik; medieval_light memakai perkamen
dan tinta. Bingkai menu membawa paku keling dan ornamen sudut kecil, sementara HUD yang selalu terlihat tetap tenang;
16 ikon ukiran menggambar ulang nama-nama benda, dan hanya judul serta subjudul yang memakai font Cinzel bawaan.
medieval_dark — besi dan kulit
medieval_light — perkamen dan tintaKedua tangkapan layar itu adalah examples/medieval/medieval.tscn, dibangun dari widget standar.
Panduan abad pertengahan dan cara membuat kerajaan Anda sendiri →
Layar yang sama di ponsel dan di desktop
Tangkapan layar galeri itu ponsel dalam mode potret. Di bawah ini kode yang sama pada 1280×800 — kontennya berhenti pada lebar yang nyaman dibaca (480dp) lalu memusat, sementara HUD tetap di sudut-sudut. Formulirnya memutari bagian HUD yang mengambang, tetapi tidak bergeser bila memang sudah tidak bertabrakan: memaksanya bergeser justru akan melempar konten keluar dari pusat pada layar lebar.
default_dark · 1280×800
scifi_dark · 1280×800Lembar yang sama, tampilan yang berbeda
Pilih salah satu dari Project Settings → gohud → Theme → Preset, atau setel GoConfig.preset.
Mengisi theme, skin, atau icons secara eksplisit mengalahkan
preset, sehingga Anda bisa memakai sebuah preset dan menimpa salah satunya saja.
new_theme.py kingdom --from medieval_dark menulis palet yang
menjabarkan setiap nilai warisan; make_theme.py kingdom membangun temanya, gambar kontrolnya, dan
kenop skinnya, lalu presetnya muncul di pemilih. Setiap setelan dan kenop →
Skin — tempat yang tak terjangkau Theme
Sebuah skin memiliki joystick, muka slot cepat, cincin coach mark, chip, kerangka pemuatan, peringatan, pemisah, dan judul bagian. Turunkan kelasnya dan timpa hanya apa yang ingin Anda ubah.
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
| Kelas | Bentuk yang bisa dibuatnya |
|---|---|
GoStyleBoxCut | Sudut terpotong diagonal (chamfer), satu tepi aksen yang ditebalkan, pendar di luar |
GoStyleBoxBracket | Hanya penanda sudut, tanpa mengurung kontennya |
GoStyleBoxMedieval | Bingkai tempaan dengan paku keling, ukiran sudut, sorotan bevel, dan serat material |
Ketiganya tersimpan ke dalam resource Theme — dan itulah yang membuat sebuah tema bisa mengubah bentuk, bukan hanya warna.
GoSkinSciFi dan GoSkinMedieval adalah subkelas bawaan.
GoStyle.box() selalu mengembalikan StyleBoxFlat, karena kode pemanggilnya
menerima objek itu lalu menyetel bg_color atau corner_radius. Pakai
GoStyle.surface() bila bentuk khusus harus tetap bertahan.
Widget
Seluruh bagiannya dalam satu tabel. Rinciannya satu per satu →
| Kelas | Basis | Fungsinya |
|---|---|---|
GoSurface | Control | Cangkang kartu mengambang — penempatan di tengah, bawah, atau tertambat, header dan footer yang menempel, body yang bergulir, tarik untuk mengubah ukuran |
GoSheet | CanvasLayer | Halaman yang naik dari bawah, pada lapisannya sendiri sehingga selalu berada di atas HUD |
GoDialogs | Node | Konfirmasi dan peringatan yang bisa Anda await; destructive untuk tindakan yang tak bisa dibatalkan |
GoForm | MarginContainer | Formulir berlebar terbatas yang menghindari keyboard virtual dan, dengan avoid_hud, menghindari HUD |
GoScroll | ScrollContainer | Gulir sentuh; bilah gulirnya menyelip ke dalam padding kartu |
GoNotice | PanelContainer | Snackbar yang tidak mengambil input maupun fokus |
GoPromptCard | PanelContainer | Pertanyaan yang tidak menghentikan jalannya game |
GoCoachMark | Control | Tur berpemandu yang menunjuk kontrol sungguhan; menekan sasarannya akan melanjutkan tur |
GoHudAnchor | Control | Menyematkan bagian HUD ke salah satu dari sembilan titik area aman |
GoBar | Control | Bar darah, mana, dan pengalaman dengan perubahan yang dilandaikan |
GoSlot | Button | Satu slot cepat — ikon, jumlah, waktu jeda, dan pintasan pada satu muka |
GoJoystick | Control | Stik virtual dalam mode tetap, mengikuti, atau relatif |
GoIconButton | Button | Terlihat kecil, ditekan besar |
GoStyle | statis | Tombol, baris daftar, kolom masukan, chip, tabel, tab, dan lainnya, dibuat dengan satu cara yang konsisten |
Menunggu, memberi tahu, menghitung
| Kelas | Basis | Fungsinya |
|---|---|---|
GoSnackbar | Node | pesan yang menempatkan dirinya sendiri |
GoSpinner | Control | menunggu tanpa tahu kapan berakhirnya |
GoBadge | PanelContainer | titik belum dibaca, tanda BARU, dan 99+ |
Formulir dan daftar
| Kelas | Basis | Fungsinya |
|---|---|---|
GoField | VBoxContainer | baris yang bisa salah |
GoInputGroup | HBoxContainer | masukan yang dilas ke tombolnya |
GoCombobox | Button | pemilih yang bisa mencari |
GoCodeInput | VBoxContainer | kode kupon dan hadiah |
GoTable | VBoxContainer | kepala kolom yang bisa diurutkan, baris yang bisa dipilih |
GoPagination | HBoxContainer | halaman, atau baris Selengkapnya |
Bentuk-bentuk yang benar-benar dipakai game
| Kelas | Basis | Fungsinya |
|---|---|---|
GoRewardCalendar | VBoxContainer | absensi harian |
GoRadar · GoDonut | Control | statistik dalam sekali lihat |
GoCarousel | VBoxContainer | banner dan pemilihan karakter |
GoKbd | HBoxContainer | petunjuk tombol yang tidak berbohong |
Di atas layar
| Kelas | Basis | Fungsinya |
|---|---|---|
GoDrawer | CanvasLayer | panel samping |
GoPopover | RefCounted | kartu yang disematkan |
GoContextMenu | RefCounted | tekan lama dan klik kanan |
GoConsole | CanvasLayer | konsol pengembang |
AI SKILL
gohud membawa AI skill: seluruh API, templat siap jalan, dan peluncur pratinjau. Tempelkan satu blok ke agen codingmu — ia memasang gohud dan tahu cara memakainya.
Keterbacaan itu diukur, bukan dikira-kira
"Cantik" itu selera; "terbaca" itu bisa diukur. Teks abu-abu samar terlihat baik-baik saja di monitor bagus dan lenyap di ponsel saat siang bolong — memilih dengan mata telanjang menjamin hal itu cepat atau lambat terjadi.
python3 addons/gohud/tools/check_contrast.py
Setiap pasangan warna dan setiap label keadaan tombol di atas panel tempatnya berada diukur terhadap WCAG, pada keenam tema. Warna tembus pandang lebih dulu dikomposit di atas latar sesungguhnya — mengukurnya secara langsung akan melaporkan rasio yang lebih baik daripada yang tampak di layar.
Karena itu warna teks diturunkan, bukan dipilih: pembangun tema mengambil entri palet sebagai titik berangkat lalu mendorong terangnya sampai melewati ambang batas pada setiap permukaan yang mungkin ditempatinya. Ubah paletnya dan kontrasnya ikut menyesuaikan. Aturannya dan jebakan di baliknya →
Pemeriksaan, rilis, dan situs ini
Satu titik masuk menjalankan semua pemeriksaan; tiap bagian melihat sesuatu yang tak terlihat oleh yang lain.
bash addons/gohud/tools/check_all.sh
| Pemeriksaan | Apa yang ditangkapnya |
|---|---|
run_tests.sh pada empat ukuran layar | Perilaku dan tata letak widget, posisi RTL, fokus keyboard, kontras skin saat runtime, semua preset |
new_project_check.sh | Ketergantungan tersembunyi pada proyek induk; dengan --zip menguji rilis apa adanya, dengan --export sebuah build Web |
check_contrast.py | Kontras WCAG setiap berkas tema, termasuk keadaan tombol dan panel tembus pandang |
check_generated.py · check_scaffold.sh | Tema hasil generasi cocok dengan paletnya; tema sekali pakai berhasil dibangun dan lolos uji kontras |
check_package.py | Versi yang diambil dari package.json, perpindahan changelog, dan isi ZIP, pada salinan sementara |
check_site.py | Tautan, jangkar, bahasa halaman, glosarium, dan tabel kenop situs ini |
Versi rilis
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
Versinya adalah yang tertulis di package.json — pengemasan tidak pernah menaikkannya. Untuk merilis
versi baru, ubah dulu angka itu. Jalan yang berhasil menyamakan plugin.cfg dan
GoUi.VERSION dengan nilai itu, dan saat versi itu dikemas pertama kali, memindahkan catatan
Unreleased di CHANGELOG.md menjadi entri bertanggal. Mengemas versi yang sama lagi akan membangun
ulang ZIP-nya dan menggantikan yang lama. Jalan yang gagal tidak mengubah apa pun. ZIP-nya tidak menyertakan
situs web ini, berkas uji, tools, dan package.json.
Situs ini
python3 addons/gohud/tools/make_site.py # glosarium dan tabel kenop skin, dibuat dari kode sumber
python3 addons/gohud/tools/check_site.py # tautan, jangkar, bahasa, glosarium, tabel hasil generasi
bash addons/gohud/tools/site_shots.sh /tmp/shots # tangkapan layar desktop dan ponsel untuk setiap halaman
Halaman-halamannya HTML biasa di dalam www/ — bahasa Inggris di akar, bahasa Korea di ko/. Sebuah
workflow GitHub Actions menerbitkan folder itu sebagai akar situs.