Añadir un tema solía significar editar cuatro lugares a mano — la paleta del generador, la forma, un skin, un recurso de preajuste. Ahora un solo comando los deja todos en su sitio.
python3 addons/gohud/tools/new_theme.py neon --from scifi_dark --title "Neon"
python3 addons/gohud/tools/make_theme.py neon # .tres del tema + gráficos de control
godot --headless --path . --import # importa los gráficos nuevos una vez
GoUi.use_preset(&"neon") # listo — también aparece en el selector
La primera línea escribe themes/palettes/neon.json y themes/presets/neon.tres. El
JSON lleva todos los valores del tema del que hereda, detallados por completo, así que sirve además como
la lista de lo que puedes cambiar: borra una clave para conservar el valor del padre, escribe una para sobrescribirlo. Los preajustes
se localizan recorriendo themes/presets/, así que no hay que cambiar código de registro — el
desplegable del ajuste de proyecto también lo detecta.
Qué puedes cambiar — en una sola página
| Dónde | Qué | Cómo |
|---|---|---|
from | el tema padre | dark · light · scifi_dark · medieval_dark · … u otro tema JSON. Las claves omitidas heredan sus valores; un ciclo de herencia falla |
palette | fondo · tres superficies · borde · tres tonos de texto · acento · cuatro colores de estado · velo · sombra · carril de la barra | "#RRGGBB", el alfa como "#RRGGBB@0.35" |
colores vivos solo para relleno *_vivid | mantienen las barras saturadas aunque el color del texto tenga que oscurecerse — si omites alguno, el generador lo indica | |
| legibilidad | no se ajusta a mano. El texto, los bordes, el acento y la etiqueta que va sobre él los empuja el generador hasta que superan los umbrales — cambia solo el acento y las verificaciones siguen pasando | |
shape | kind | flat (redondeado) · cut (esquinas achaflanadas) · medieval (marcos forjados) |
| tamaños | radius · radius_small · radius_large · gap · gap_small · gap_large · padding · button_height · button_padding[4] — los tokens los siguen, así que los paneles y los cálculos de los widgets nunca se contradicen | |
solo cut | cut_ratio · cut_max · corners (diagonal|all) · glow · edge | |
solo medieval | material (0 hierro · 1 cuero · 2 pergamino) · grain_alpha · ornament_scale · bevel_strength · fonts — title, subtitle, caption, body, button asignados a archivos de fuente res:// locales del add-on | |
skin | base — la familia para los sitios donde el código dibuja por su cuenta (joystick, ranuras, insignias, anillo de la marca guía, chips, separadores) | default · scifi · medieval |
dials — los números de esos sitios: ancho y tinte del borde de la ranura, relleno de la insignia, opacidad de chips y alertas, ancho y opacidad del anillo del joystick, tamaños del chaflán de ciencia ficción, resplandor y corchete | Cada valor del padre viene detallado en el JSON. El generador los escribe en themes/skins/gohud_skin_<id>.tres — no se toca nada del código del skin. Solo para cambiar los dibujos en sí ejecutas --new-skin, que genera el esqueleto de una subclase de GoSkin | |
icons | el juego de iconos | una ruta res:// a un recurso GoIconSet — se conserva la del padre JSON cuando se omite |
dark · title | cómo lo muestra el selector | booleano · cadena |
Todos los dials
La tabla de abajo la rellena tools/make_site.py directamente desde las líneas
@export de los scripts de skin — añade un dial o cambia un valor predeterminado y la tabla lo sigue. Usa estos nombres bajo
skin.dials en el JSON. Un dial cuyo valor predeterminado se lee 14 es un entero, y uno que se lee
10.0 es un flotante — escribe cualquiera de las dos formas en el JSON y el generador lo convierte al tipo del script.
Skin predeterminado GoSkin — 17
| Dial | Predeterminado | Qué define |
|---|---|---|
chip_fill_alpha | 0.16 | Opacidad del relleno del panel de un chip. |
chip_edge_alpha | 0.45 | Opacidad del borde del panel de un chip. |
alert_tint | 0.1 | Cuánto se tiñe el panel de una caja de alerta hacia su color de estado. |
slot_tint_lit | 0.24 | Tinte de acento del panel de una ranura rápida mientras corre su enfriamiento. |
slot_tint_idle | 0.08 | Tinte de acento del panel de una ranura rápida en reposo. |
slot_border_lit | 2 | Ancho del borde (dp) de una ranura rápida mientras corre su enfriamiento. |
slot_border_idle | 1 | Ancho del borde (dp) de una ranura rápida en reposo. |
badge_pad_x | 5 | Relleno interior horizontal (dp) de una insignia (cantidad, tiempo restante). |
badge_pad_y | 1 | Relleno interior vertical (dp) de una insignia. |
badge_edge_alpha | 0.6 | Opacidad del borde del panel de una insignia. |
float_shadow_alpha | 0.45 | Opacidad de la sombra de las tarjetas flotantes (marca guía, tarjeta de pregunta). |
float_shadow_size | 14 | Desenfoque (dp) de la sombra de las tarjetas flotantes. |
float_shadow_lift | 4 | Desplazamiento hacia abajo (dp) de la sombra de una tarjeta flotante. |
float_glow_size | 10.0 | Distancia del resplandor (dp) de un panel flotante que resplandece en vez de proyectar sombra, como el panel achaflanado de ciencia ficción. |
joystick_base_alpha | 0.42 | Opacidad del disco base del joystick. |
joystick_ring_alpha | 0.45 | Opacidad del anillo del joystick. |
joystick_ring_width | 2.0 | Ancho (dp) del anillo del joystick. |
Skin de ciencia ficción GoSkinSciFi — 10
| Dial | Predeterminado | Qué define |
|---|---|---|
cut_chip | 7.0 | Tamaño del chaflán (dp) del panel de un chip. |
cut_skeleton | 5.0 | Tamaño del chaflán (dp) de un panel de esqueleto. |
cut_alert | 8.0 | Tamaño del chaflán (dp) de una caja de alerta. |
cut_segment | 8.0 | Tamaño del chaflán (dp) de un control segmentado. |
cut_slot | 6.0 | Tamaño del chaflán (dp) del panel de una ranura rápida. |
cut_disc_ratio | 0.24 | El chaflán de avatares y discos = diámetro × esta proporción. |
slot_glow_alpha | 0.45 | Opacidad del resplandor de una ranura cuyo enfriamiento está corriendo. |
slot_glow_size | 6.0 | Distancia del resplandor (dp) de una ranura cuyo enfriamiento está corriendo. |
bracket_arm | 12.0 | Longitud del brazo (dp) del corchete de puntería de la marca guía. |
bracket_thickness | 2.0 | Grosor de línea (dp) del corchete de puntería de la marca guía. |
Skin medieval GoSkinMedieval — 5
| Dial | Predeterminado | Qué define |
|---|---|---|
slot_radius | 4.0 | Radio de esquina (dp) del marco de la ranura rápida medieval. |
leather_grain_alpha | 0.035 | Opacidad de las marcas sutiles de cuero dentro de las ranuras rápidas. |
ornament_scale | 1.0 | Escala de las decoraciones metálicas en las esquinas de las ranuras rápidas. Los marcos de menú usan shape.ornament_scale. |
bevel_strength | 0.18 | Intensidad del realce metálico a lo largo de los bordes de las ranuras rápidas. |
slot_rivets | 1 | Mostrar pequeños remaches metálicos en las ranuras rápidas: 0 los oculta, 1 los muestra. |
Crear una subclase del skin (opcional)
En un skin vive únicamente lo que el tema y la forma no alcanzan — el hexágono del joystick, las insignias de las ranuras, el corchete de
puntería de la marca guía. Crea una subclase de GoSkin, sobrescribe solo esos métodos y apunta el
campo skin del JSON a ese recurso. Un tema que solo cambia colores se salta este paso.
tools/check_scaffold.sh crea un tema desechable en cada ejecución —
cambia el acento, pone el radio en 4 — y comprueba la generación, la propagación de tokens y un contraste
limpio antes de eliminarlo. La primera ejecución encontró un tema con solo el acento cambiado que fallaba
en 8 pares: el generador empujaba los colores de texto pero usaba el acento tal cual. Ahora también empuja el acento
y la etiqueta que va sobre él.