gohud

Tu propio preajuste — un solo archivo

← Temas

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óndeQuéCómo
fromel tema padredark · light · scifi_dark · medieval_dark · … u otro tema JSON. Las claves omitidas heredan sus valores; un ciclo de herencia falla
palettefondo · 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 *_vividmantienen las barras saturadas aunque el color del texto tenga que oscurecerse — si omites alguno, el generador lo indica
legibilidadno 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
shapekindflat (redondeado) · cut (esquinas achaflanadas) · medieval (marcos forjados)
tamañosradius · 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 cutcut_ratio · cut_max · corners (diagonal|all) · glow · edge
solo medievalmaterial (0 hierro · 1 cuero · 2 pergamino) · grain_alpha · ornament_scale · bevel_strength · fontstitle, subtitle, caption, body, button asignados a archivos de fuente res:// locales del add-on
skinbase — 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 corcheteCada valor del padre viene detallado en el JSON. El generador los escribe en themes/skins/gohud_skin_<id>.tresno 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
iconsel juego de iconosuna ruta res:// a un recurso GoIconSet — se conserva la del padre JSON cuando se omite
dark · titlecómo lo muestra el selectorbooleano · 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

DialPredeterminadoQué define
chip_fill_alpha0.16Opacidad del relleno del panel de un chip.
chip_edge_alpha0.45Opacidad del borde del panel de un chip.
alert_tint0.1Cuánto se tiñe el panel de una caja de alerta hacia su color de estado.
slot_tint_lit0.24Tinte de acento del panel de una ranura rápida mientras corre su enfriamiento.
slot_tint_idle0.08Tinte de acento del panel de una ranura rápida en reposo.
slot_border_lit2Ancho del borde (dp) de una ranura rápida mientras corre su enfriamiento.
slot_border_idle1Ancho del borde (dp) de una ranura rápida en reposo.
badge_pad_x5Relleno interior horizontal (dp) de una insignia (cantidad, tiempo restante).
badge_pad_y1Relleno interior vertical (dp) de una insignia.
badge_edge_alpha0.6Opacidad del borde del panel de una insignia.
float_shadow_alpha0.45Opacidad de la sombra de las tarjetas flotantes (marca guía, tarjeta de pregunta).
float_shadow_size14Desenfoque (dp) de la sombra de las tarjetas flotantes.
float_shadow_lift4Desplazamiento hacia abajo (dp) de la sombra de una tarjeta flotante.
float_glow_size10.0Distancia del resplandor (dp) de un panel flotante que resplandece en vez de proyectar sombra, como el panel achaflanado de ciencia ficción.
joystick_base_alpha0.42Opacidad del disco base del joystick.
joystick_ring_alpha0.45Opacidad del anillo del joystick.
joystick_ring_width2.0Ancho (dp) del anillo del joystick.

Skin de ciencia ficción GoSkinSciFi — 10

DialPredeterminadoQué define
cut_chip7.0Tamaño del chaflán (dp) del panel de un chip.
cut_skeleton5.0Tamaño del chaflán (dp) de un panel de esqueleto.
cut_alert8.0Tamaño del chaflán (dp) de una caja de alerta.
cut_segment8.0Tamaño del chaflán (dp) de un control segmentado.
cut_slot6.0Tamaño del chaflán (dp) del panel de una ranura rápida.
cut_disc_ratio0.24El chaflán de avatares y discos = diámetro × esta proporción.
slot_glow_alpha0.45Opacidad del resplandor de una ranura cuyo enfriamiento está corriendo.
slot_glow_size6.0Distancia del resplandor (dp) de una ranura cuyo enfriamiento está corriendo.
bracket_arm12.0Longitud del brazo (dp) del corchete de puntería de la marca guía.
bracket_thickness2.0Grosor de línea (dp) del corchete de puntería de la marca guía.

Skin medieval GoSkinMedieval — 5

DialPredeterminadoQué define
slot_radius4.0Radio de esquina (dp) del marco de la ranura rápida medieval.
leather_grain_alpha0.035Opacidad de las marcas sutiles de cuero dentro de las ranuras rápidas.
ornament_scale1.0Escala de las decoraciones metálicas en las esquinas de las ranuras rápidas. Los marcos de menú usan shape.ornament_scale.
bevel_strength0.18Intensidad del realce metálico a lo largo de los bordes de las ranuras rápidas.
slot_rivets1Mostrar 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.

Una verificación mantiene la promesa. 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.