gohud

La interfaz del juego, gobernada por un solo recurso

gohud es un kit de HUD e interfaz para Godot 4.6 y posteriores. Las ventanas flotantes, las hojas inferiores, los diálogos, los formularios, los snackbars, las marcas guía, las barras de HUD, las ranuras rápidas y el joystick virtual funcionan con un solo tema y un solo juego de iconos intercambiable, y resuelven por ti el área segura, el teclado virtual, el RTL y las áreas táctiles. Seis preajustes — predeterminado, ciencia ficción y medieval, cada uno en oscuro y claro — cambian colores y formas en una línea.

Godot 4.6+ v1.0.1 GDScript puro Sin autoload MIT 6 preajustes 21 idiomas 100 iconos incluidos

Cómo se ve dentro de un juego

Los preajustes medieval y de ciencia ficción — hojas de personaje, inventarios y misiones; formularios, cuadrículas y tarjetas de pregunta; paneles angulares y controles táctiles. Cambiar de preajuste es una línea de código.

Tema medieval de gohud — una hoja de personaje con barras de vida, maná y resistencia, un zurrón de ranuras rápidas y un diario de misiones en marcos de oro forjado
Medieval — personaje, inventario y misiones
Tema medieval de gohud — un panel de entrada con campo de nombre, interruptor, casillas y deslizador de volumen, una cuadrícula de fichas y una tarjeta de pregunta de invitación al grupo con Aceptar y Rechazar
Medieval — formularios, cuadrículas y tarjetas de pregunta
Tema de ciencia ficción de gohud — un panel de controles táctiles achaflanado con joystick hexagonal, un selector Fijo / Seguimiento / Relativo y botones de acción redondos
Ciencia ficción — paneles angulares y controles táctiles

Los seis preajustes y cómo cambiar entre ellos →

De qué se encarga por ti

Lo que más tiempo cuesta en la interfaz de un juego no es la forma de un botón: es todo lo que se desajusta de un dispositivo a otro. gohud resuelve ese desajuste en un único lugar.

Cada medida es un token

Los espaciados, las esquinas y los tamaños de texto se invocan por nombre, no se escriben como números. Cambia el tema y toda la pantalla se mueve con él.

Tamaño visible ≠ tamaño pulsable

Un botón de cerrar se ve de 36dp, pero su área táctil es de 48dp. Donde se solapan ranuras apretadas, gana la pulsación aquella cuyo centro está más cerca.

Muescas y teclados

Las piezas del HUD se quedan dentro del área segura, y un campo de entrada sube por encima del teclado virtual cuando este aparece.

Atrás cierra una sola cosa

Escape y el botón Atrás de Android cierran solo la superficie superior. Las ventanas apiladas no desaparecen todas juntas.

Los avisos nunca roban la entrada

Pulsa a través de un snackbar y el botón que está debajo la recibe. Tampoco toma el foco.

Los iconos se piden por nombre

Los widgets solo conocen GoIconSet.CLOSE. Cambia el juego de iconos y todos los dibujos cambian sin tocar una línea de código.

Seis aspectos, una línea

GoUi.use_preset() cambia a la vez el tema, el skin y los iconos — esquinas redondeadas, ciencia ficción achaflanada o marcos medievales forjados.

Legible por medición

Todos los temas se verifican contra la WCAG, incluidos los estados de los botones y los paneles de HUD translúcidos sobre blanco puro y negro puro.

Todo funciona sin activar el plugin. Activarlo añade un autoload GoRuntime que sigue el tamaño de la ventana, la escala dp y la altura del teclado, además de ajustes de proyecto para el recurso de configuración y el preajuste — comodidades, no requisitos.

Instalar gohud

Dos caminos. Que lo haga tu agente de IA, o suelta la carpeta en tu proyecto — no hay nada más que configurar.

Instalación

Inicio rápido

Cinco líneas ponen una pantalla con tema en el display. El recorrido completo está en la página de instalación.

Inicio rápido

Cambia el aspecto — colores y forma

Un Theme solo puede reestilizar lo que dibuja el motor. Las esquinas redondeadas son las únicas que tiene StyleBoxFlat, y el joystick, las ranuras rápidas y la marca guía los dibuja el código — así que un tema por sí solo jamás puede cambiar su forma. Por eso gohud incluye preajustes: un tema, un skin y un juego de iconos elegidos como una sola unidad.

GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK)   # tema, skin e iconos a la vez
PreajusteAspecto
default_darkEl gohud original — esquinas redondeadas, acento azul suave
default_lightLas mismas formas sobre una paleta clara
scifi_darkEsquinas achaflanadas, bordes de neón cian y resplandor, joystick hexagonal, corchetes de puntería
scifi_lightLas mismas formas angulares en una paleta de plano técnico
medieval_darkHierro y cuero oscuros, marcos de oro antiguo, remaches, iconos grabados, títulos en Cinzel
medieval_lightPergamino, tinta y bronce con los mismos marcos forjados
La galería de gohud con el preajuste default_dark — esquinas redondeadas, acento azul
default_dark — esquinas redondeadas, acento azul suave
Preajuste default_light — las mismas formas sobre una paleta clara
default_light — mismas formas, paleta clara
Preajuste scifi_dark — esquinas achaflanadas y neón cian
scifi_dark — esquinas achaflanadas, neón cian
Preajuste scifi_light — las mismas formas angulares en una paleta de plano técnico
scifi_light — mismas formas angulares, paleta de plano técnico

Esas cuatro son la misma pantalla de la galería. No cambia ni una línea de código — solo el nombre del preajuste. Las esquinas de los botones, la forma de los interruptores, las filas de lista y los bordes de los campos se mueven juntos.

Colección medieval

medieval_dark combina hierro y cuero con oro antiguo; medieval_light usa pergamino y tinta. Los marcos de menú llevan un remache y un pequeño ornamento en la esquina, mientras que el HUD siempre visible se mantiene discreto; 16 iconos grabados redibujan los nombres de objeto, y solo los títulos y subtítulos usan la fuente Cinzel incluida.

medieval_dark — hoja de personaje, zurrón de ranuras rápidas y diario de misiones
medieval_dark — hierro y cuero
medieval_light — las mismas pantallas de personaje, zurrón y misiones sobre pergamino
medieval_light — pergamino y tinta

Ambas capturas son examples/medieval/medieval.tscn, construido con los widgets estándar. La guía medieval y cómo crear tu propio reino →

La misma pantalla en un teléfono y en un escritorio

Las capturas de la galería son un teléfono en vertical. Abajo está el mismo código a 1280×800 — el contenido se detiene en un ancho legible (480dp) y se centra, mientras el HUD se queda en las esquinas. El formulario rodea las piezas flotantes del HUD, pero no se mueve cuando ya está despejado de ellas: empujarlo de todos modos dejaría el contenido descentrado en una pantalla ancha.

default_dark a 1280x800 — contenido centrado, HUD en las esquinas
default_dark · 1280×800
scifi_dark a 1280x800 — la misma disposición con paneles achaflanados y neón
scifi_dark · 1280×800

La misma hoja, otro aspecto

Una hoja inferior en default_dark
Predeterminado — tarjeta redondeada, fila de búsqueda y pie fijos
Una hoja inferior en scifi_dark — borde de acento de neón en la parte superior
Ciencia ficción — borde de acento superior, esquinas cortadas, resplandor

Elige uno en Ajustes del proyecto → gohud → Theme → Preset, o asigna GoConfig.preset. Rellenar theme, skin o icons de forma explícita tiene prioridad sobre el preajuste, así que puedes tomar un preajuste y sobrescribir solo uno de ellos.

Un tema nuevo es un solo archivo JSON. new_theme.py kingdom --from medieval_dark escribe una paleta que detalla cada valor heredado; make_theme.py kingdom genera el tema, sus recursos gráficos de control y los dials de su skin, y el preajuste aparece en el selector. Cada ajuste y cada dial →

Skins — allí donde un Theme no llega

Un skin gobierna el joystick, las caras de las ranuras rápidas, el anillo de la marca guía, los chips, los esqueletos, las alertas, los separadores y los encabezados de sección. Créale una subclase y sobrescribe solo lo que quieras cambiar.

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
ClaseFormas que puede crear
GoStyleBoxCutEsquinas cortadas en diagonal (chaflán), un borde de acento engrosado, un resplandor exterior
GoStyleBoxBracketSolo marcas en las esquinas, sin encerrar el contenido
GoStyleBoxMedievalUn marco forjado con remaches, grabado en las esquinas, un realce biselado y grano de material

Las tres se serializan dentro de un recurso Theme — y eso es lo que permite que un tema cambie la forma, no solo el color. GoSkinSciFi y GoSkinMedieval son las subclases incluidas.

GoStyle.box() siempre devuelve un StyleBoxFlat, porque el código que lo llama lo recibe y ajusta bg_color o corner_radius. Usa GoStyle.surface() cuando una forma personalizada deba sobrevivir.

Widgets

Las piezas, en una sola tabla. Cada una en detalle →

ClaseBaseQué hace
GoSurfaceControlContenedor de tarjeta flotante — colocación centrada, inferior o anclada, encabezado y pie fijos, cuerpo desplazable, redimensionado por arrastre
GoSheetCanvasLayerPáginas que suben desde abajo, en su propia capa para quedar por encima del HUD
GoDialogsNodeConfirmaciones y alertas con await; destructive para acciones irreversibles
GoFormMarginContainerFormularios de ancho limitado que esquivan el teclado virtual y, con avoid_hud, el HUD
GoScrollScrollContainerDesplazamiento táctil; la barra de desplazamiento se mete en el relleno de la tarjeta
GoNoticePanelContainerUn snackbar que no toma ni la entrada ni el foco
GoPromptCardPanelContainerUna pregunta que no bloquea el juego
GoCoachMarkControlUn recorrido guiado que señala controles reales; pulsar el objetivo avanza
GoHudAnchorControlFija piezas del HUD en uno de nueve puntos del área segura
GoBarControlBarras de vida, maná y experiencia con cambios suavizados
GoSlotButtonUna ranura rápida — icono, cantidad, enfriamiento y atajo en una sola cara
GoJoystickControlStick virtual en modo fijo, de seguimiento o relativo
GoIconButtonButtonSe ve pequeño, se pulsa grande
GoStylestaticBotones, filas de lista, campos, chips, tablas, pestañas y más, creados de una única manera coherente

Esperar, avisar, contar

ClaseBaseQué hace
GoSnackbarNodeel mensaje que se coloca solo
GoSpinnerControluna espera sin final a la vista
GoBadgePanelContainerel punto de no leído, la etiqueta NUEVO, el 99+

Formularios y listas

ClaseBaseQué hace
GoFieldVBoxContainerla fila que puede estar mal
GoInputGroupHBoxContaineruna entrada soldada a su botón
GoComboboxButtonun selector que busca
GoCodeInputVBoxContainercódigos de cupón y de regalo
GoTableVBoxContainerencabezados ordenables, filas seleccionables
GoPaginationHBoxContainerpáginas, o una fila Más

Formas que los juegos usan de verdad

ClaseBaseQué hace
GoRewardCalendarVBoxContainerasistencia diaria
GoRadar · GoDonutControlestadísticas de un vistazo
GoCarouselVBoxContainerbanners y selección de personaje
GoKbdHBoxContainerpistas de teclas que no mienten

Por encima de la pantalla

ClaseBaseQué hace
GoDrawerCanvasLayerel panel lateral
GoPopoverRefCountedla tarjeta anclada
GoContextMenuRefCountedpulsación larga y clic derecho
GoConsoleCanvasLayerla consola de desarrollo

AI SKILL

gohud trae una skill de IA: toda la API, plantillas listas para ejecutar y un lanzador de vista previa. Pega un bloque en tu agente y él instala gohud y sabe usarlo.

AI SKILL

La legibilidad se mide, no se calcula a ojo

"Bonito" es cuestión de gusto; "legible" se puede medir. Un texto gris tenue se ve bien en un buen monitor y desaparece en un teléfono a la luz del día — elegir a ojo lo garantiza tarde o temprano.

python3 addons/gohud/tools/check_contrast.py

Cada par de colores y la etiqueta de cada estado de botón sobre el panel en el que se apoya se mide contra la WCAG, en los seis temas. Los colores translúcidos se componen primero sobre su fondo real — medirlos directamente da una relación mejor que la que muestra la pantalla.

Por eso los colores de texto se derivan, no se eligen: el generador toma la entrada de la paleta como punto de partida y empuja su luminosidad hasta superar el umbral en toda superficie sobre la que pueda caer. Cambia la paleta y el contraste la sigue. Las reglas y las trampas que hay detrás →

Verificaciones, versiones y este sitio

Un único punto de entrada ejecuta todas las verificaciones; cada parte ve algo que las demás no pueden ver.

bash addons/gohud/tools/check_all.sh
VerificaciónQué detecta
run_tests.sh en cuatro tamaños de pantallaComportamiento y disposición de los widgets, posiciones en RTL, foco de teclado, contraste del skin en ejecución, todos los preajustes
new_project_check.shDependencias ocultas del proyecto anfitrión; con --zip la versión tal como se distribuye, con --export una compilación Web
check_contrast.pyContraste WCAG de cada archivo de tema, estados de botón y paneles translúcidos incluidos
check_generated.py · check_scaffold.shLos temas generados coinciden con sus paletas; un tema desechable se genera y supera el contraste
check_package.pyLa versión tomada de package.json, movimientos del registro de cambios y contenido del ZIP, en copias temporales
check_site.pyLos enlaces, anclas, idioma de página, glosario y tablas de dials de este sitio
Última ejecución registrada — 2026-09-13, Godot 4.7.2, macOS, renderizador Compatibility. 438 de 438 verificaciones a 390×844, 844×390, 768×1024 y 1280×800 en un proyecto vacío; otra vez 438 de 438 con el autoload GoRuntime; una exportación Web; cero fallos de contraste en los seis temas. Godot 4.6 y los dispositivos físicos Android o iOS no formaron parte de esta ejecución.

Publicar versiones

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

La versión es la que figura en package.json: el empaquetado nunca la sube. Para publicar una versión nueva, cambia primero ese número. Una ejecución correcta ajusta plugin.cfg y GoUi.VERSION a ese valor y, la primera vez que se empaqueta esa versión, mueve las notas de Unreleased de CHANGELOG.md a una entrada con fecha. Empaquetar de nuevo la misma versión reconstruye su ZIP y reemplaza el anterior. Una ejecución fallida no cambia nada. El ZIP deja fuera este sitio web, las pruebas, las herramientas y package.json.

Este sitio

python3 addons/gohud/tools/make_site.py            # glosario y tablas de dials del skin, generados desde el código
python3 addons/gohud/tools/check_site.py           # enlaces, anclas, idioma, glosario, tablas generadas
bash addons/gohud/tools/site_shots.sh /tmp/shots   # capturas de escritorio y de teléfono de cada página

Las páginas son HTML plano en www/ — el inglés en la raíz, el coreano en ko/. Un flujo de trabajo de GitHub Actions publica esa carpeta como raíz del sitio.