Dahulu menambah sebuah tema berarti menyunting empat tempat secara manual — palet pembangun tema, bentuknya, sebuah skin, dan sebuah resource preset. Kini satu perintah menempatkan semuanya sekaligus.
python3 addons/gohud/tools/new_theme.py neon --from scifi_dark --title "Neon"
python3 addons/gohud/tools/make_theme.py neon # .tres tema + gambar kontrol
godot --headless --path . --import # impor gambar barunya sekali saja
GoUi.use_preset(&"neon") # selesai — ia muncul di pemilih juga
Baris pertama menulis themes/palettes/neon.json dan themes/presets/neon.tres.
JSON-nya membawa setiap nilai dari tema yang diwarisinya, dijabarkan seluruhnya, sehingga sekaligus berfungsi sebagai
daftar apa saja yang bisa Anda ubah: hapus sebuah kunci untuk mempertahankan nilai induknya, tulis satu untuk menimpanya. Preset
ditemukan dengan memindai themes/presets/, jadi tidak ada kode registri yang perlu diubah — dropdown
pada project setting pun langsung menangkapnya.
Apa yang bisa Anda ubah — dalam satu halaman
| Di mana | Apa | Bagaimana |
|---|---|---|
from | tema induk | dark · light · scifi_dark · medieval_dark · … atau tema JSON lain. Kunci yang dihilangkan mewarisi nilainya; siklus pewarisan akan gagal |
palette | background · tiga surface · border · tiga nada teks · accent · empat warna status · scrim · shadow · alur bar | "#RRGGBB", alfa sebagai "#RRGGBB@0.35" |
warna cerah khusus isian *_vivid | menjaga bar tetap pekat bahkan saat warna teksnya harus digelapkan — hilangkan satu dan pembangun tema akan memberi tahu | |
| keterbacaan | tidak disetel manual. Teks, garis tepi, warna aksen, dan label di atasnya didorong oleh pembangun tema sampai melewati ambang batasnya — ubah aksennya saja dan pemeriksaannya tetap lolos | |
shape | kind | flat (membulat) · cut (sudut terpotong) · medieval (bingkai tempaan) |
| ukuran | radius · radius_small · radius_large · gap · gap_small · gap_large · padding · button_height · button_padding[4] — token ikut menyesuaikan, sehingga panel dan perhitungan widget tidak pernah berselisih | |
khusus cut | cut_ratio · cut_max · corners (diagonal|all) · glow · edge | |
khusus medieval | material (0 besi · 1 kulit · 2 perkamen) · grain_alpha · ornament_scale · bevel_strength · fonts — title, subtitle, caption, body, button dipetakan ke berkas font res:// di dalam add-on | |
skin | base — keluarga untuk tempat-tempat yang digambar kode sendiri (joystick, slot, lencana, cincin coach mark, chip, pemisah) | default · scifi · medieval |
dials — angka-angka dari tempat-tempat itu: lebar garis tepi dan rona slot, padding lencana, opasitas chip dan peringatan, lebar dan opasitas cincin joystick, ukuran chamfer sci-fi, pendar, dan kurung | Setiap nilai induk dijabarkan di dalam JSON. Pembangun tema menuliskannya ke themes/skins/gohud_skin_<id>.tres — tidak ada kode skin yang disentuh. Hanya untuk mengubah gambarnya sendirilah Anda menjalankan --new-skin, yang menyiapkan kerangka subkelas GoSkin | |
icons | set ikon | sebuah path res:// ke resource GoIconSet — dipertahankan dari induk JSON bila dihilangkan |
dark · title | cara pemilih menampilkannya | boolean · string |
Setiap kenop
Tabel di bawah ini diisi oleh tools/make_site.py langsung dari baris
@export pada skrip skin — tambahkan sebuah kenop atau ubah nilai defaultnya dan tabelnya ikut menyesuaikan. Pakai nama-nama ini di bawah
skin.dials di dalam JSON. Kenop yang defaultnya tertulis 14 adalah integer, yang tertulis
10.0 adalah float — tulis bentuk mana pun di JSON dan pembangun tema akan mengonversinya ke tipe milik skrip.
Skin default GoSkin — 17
| Kenop | Default | Apa yang diaturnya |
|---|---|---|
chip_fill_alpha | 0.16 | Opasitas isian panel sebuah chip. |
chip_edge_alpha | 0.45 | Opasitas tepi panel sebuah chip. |
alert_tint | 0.1 | Seberapa jauh panel kotak peringatan dironai ke arah warna statusnya. |
slot_tint_lit | 0.24 | Rona aksen panel slot cepat selagi waktu jedanya berjalan. |
slot_tint_idle | 0.08 | Rona aksen panel slot cepat saat diam. |
slot_border_lit | 2 | Lebar garis tepi slot cepat (dp) selagi waktu jedanya berjalan. |
slot_border_idle | 1 | Lebar garis tepi slot cepat (dp) saat diam. |
badge_pad_x | 5 | Padding dalam horizontal (dp) sebuah lencana (jumlah, sisa waktu). |
badge_pad_y | 1 | Padding dalam vertikal (dp) sebuah lencana. |
badge_edge_alpha | 0.6 | Opasitas tepi panel sebuah lencana. |
float_shadow_alpha | 0.45 | Opasitas bayangan kartu mengambang (coach mark, kartu ajakan). |
float_shadow_size | 14 | Kaburnya bayangan (dp) kartu mengambang. |
float_shadow_lift | 4 | Pergeseran ke bawah (dp) bayangan sebuah kartu mengambang. |
float_glow_size | 10.0 | Jarak pendar (dp) panel mengambang yang berpendar alih-alih menjatuhkan bayangan, seperti panel bersudut potong sci-fi. |
joystick_base_alpha | 0.42 | Opasitas cakram dasar joystick. |
joystick_ring_alpha | 0.45 | Opasitas cincin joystick. |
joystick_ring_width | 2.0 | Lebar (dp) cincin joystick. |
Skin sci-fi GoSkinSciFi — 10
| Kenop | Default | Apa yang diaturnya |
|---|---|---|
cut_chip | 7.0 | Ukuran chamfer (dp) panel sebuah chip. |
cut_skeleton | 5.0 | Ukuran chamfer (dp) panel kerangka pemuatan. |
cut_alert | 8.0 | Ukuran chamfer (dp) sebuah kotak peringatan. |
cut_segment | 8.0 | Ukuran chamfer (dp) sebuah kontrol tersegmentasi. |
cut_slot | 6.0 | Ukuran chamfer (dp) panel slot cepat. |
cut_disc_ratio | 0.24 | Chamfer avatar dan cakram = diameter × rasio ini. |
slot_glow_alpha | 0.45 | Opasitas pendar sebuah slot yang waktu jedanya sedang berjalan. |
slot_glow_size | 6.0 | Jarak pendar (dp) sebuah slot yang waktu jedanya sedang berjalan. |
bracket_arm | 12.0 | Panjang lengan (dp) kurung penanda sasaran pada coach mark. |
bracket_thickness | 2.0 | Ketebalan garis (dp) kurung penanda sasaran pada coach mark. |
Skin abad pertengahan GoSkinMedieval — 5
| Kenop | Default | Apa yang diaturnya |
|---|---|---|
slot_radius | 4.0 | Radius sudut (dp) bingkai slot cepat abad pertengahan. |
leather_grain_alpha | 0.035 | Opasitas guratan kulit yang samar di dalam slot cepat. |
ornament_scale | 1.0 | Skala hiasan logam di sudut-sudut slot cepat. Bingkai menu memakai shape.ornament_scale. |
bevel_strength | 0.18 | Kekuatan sorotan logam di sepanjang tepi slot cepat. |
slot_rivets | 1 | Menampilkan paku keling logam kecil pada slot cepat: 0 menyembunyikannya, 1 menampilkannya. |
Turunkan kelas skin (opsional)
Hanya apa yang tak terjangkau tema dan bentuk — heksagon joystick, lencana slot, kurung penanda sasaran pada
coach mark — yang tinggal di dalam sebuah skin. Turunkan GoSkin, timpa metode-metode itu saja, lalu arahkan
kolom skin di JSON ke resource tersebut. Tema yang hanya mengubah warna melewatkan langkah ini.
tools/check_scaffold.sh membuat tema sekali pakai pada setiap jalan uji —
mengubah aksennya, menyetel radiusnya ke 4 — lalu memverifikasi generasi, perambatan token, dan kelulusan
kontras sebelum menghapusnya. Jalan uji pertama menemukan sebuah tema yang hanya diubah aksennya gagal pada
8 pasangan: pembangun tema mendorong warna teks tetapi memakai aksennya apa adanya. Kini ia mendorong aksen
dan label di atasnya juga.