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.
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.
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.
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.
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
| Preajuste | Aspecto |
|---|---|
default_dark | El gohud original — esquinas redondeadas, acento azul suave |
default_light | Las mismas formas sobre una paleta clara |
scifi_dark | Esquinas achaflanadas, bordes de neón cian y resplandor, joystick hexagonal, corchetes de puntería |
scifi_light | Las mismas formas angulares en una paleta de plano técnico |
medieval_dark | Hierro y cuero oscuros, marcos de oro antiguo, remaches, iconos grabados, títulos en Cinzel |
medieval_light | Pergamino, tinta y bronce con los mismos marcos forjados |
default_dark — esquinas redondeadas, acento azul suave
default_light — mismas formas, paleta clara
scifi_dark — esquinas achaflanadas, neón cian
scifi_light — mismas formas angulares, paleta de plano técnicoEsas 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 — hierro y cuero
medieval_light — pergamino y tintaAmbas 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 · 1280×800
scifi_dark · 1280×800La misma hoja, otro aspecto
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.
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
| Clase | Formas que puede crear |
|---|---|
GoStyleBoxCut | Esquinas cortadas en diagonal (chaflán), un borde de acento engrosado, un resplandor exterior |
GoStyleBoxBracket | Solo marcas en las esquinas, sin encerrar el contenido |
GoStyleBoxMedieval | Un 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 →
| Clase | Base | Qué hace |
|---|---|---|
GoSurface | Control | Contenedor de tarjeta flotante — colocación centrada, inferior o anclada, encabezado y pie fijos, cuerpo desplazable, redimensionado por arrastre |
GoSheet | CanvasLayer | Páginas que suben desde abajo, en su propia capa para quedar por encima del HUD |
GoDialogs | Node | Confirmaciones y alertas con await; destructive para acciones irreversibles |
GoForm | MarginContainer | Formularios de ancho limitado que esquivan el teclado virtual y, con avoid_hud, el HUD |
GoScroll | ScrollContainer | Desplazamiento táctil; la barra de desplazamiento se mete en el relleno de la tarjeta |
GoNotice | PanelContainer | Un snackbar que no toma ni la entrada ni el foco |
GoPromptCard | PanelContainer | Una pregunta que no bloquea el juego |
GoCoachMark | Control | Un recorrido guiado que señala controles reales; pulsar el objetivo avanza |
GoHudAnchor | Control | Fija piezas del HUD en uno de nueve puntos del área segura |
GoBar | Control | Barras de vida, maná y experiencia con cambios suavizados |
GoSlot | Button | Una ranura rápida — icono, cantidad, enfriamiento y atajo en una sola cara |
GoJoystick | Control | Stick virtual en modo fijo, de seguimiento o relativo |
GoIconButton | Button | Se ve pequeño, se pulsa grande |
GoStyle | static | Botones, filas de lista, campos, chips, tablas, pestañas y más, creados de una única manera coherente |
Esperar, avisar, contar
| Clase | Base | Qué hace |
|---|---|---|
GoSnackbar | Node | el mensaje que se coloca solo |
GoSpinner | Control | una espera sin final a la vista |
GoBadge | PanelContainer | el punto de no leído, la etiqueta NUEVO, el 99+ |
Formularios y listas
| Clase | Base | Qué hace |
|---|---|---|
GoField | VBoxContainer | la fila que puede estar mal |
GoInputGroup | HBoxContainer | una entrada soldada a su botón |
GoCombobox | Button | un selector que busca |
GoCodeInput | VBoxContainer | códigos de cupón y de regalo |
GoTable | VBoxContainer | encabezados ordenables, filas seleccionables |
GoPagination | HBoxContainer | páginas, o una fila Más |
Formas que los juegos usan de verdad
| Clase | Base | Qué hace |
|---|---|---|
GoRewardCalendar | VBoxContainer | asistencia diaria |
GoRadar · GoDonut | Control | estadísticas de un vistazo |
GoCarousel | VBoxContainer | banners y selección de personaje |
GoKbd | HBoxContainer | pistas de teclas que no mienten |
Por encima de la pantalla
| Clase | Base | Qué hace |
|---|---|---|
GoDrawer | CanvasLayer | el panel lateral |
GoPopover | RefCounted | la tarjeta anclada |
GoContextMenu | RefCounted | pulsación larga y clic derecho |
GoConsole | CanvasLayer | la 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.
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ón | Qué detecta |
|---|---|
run_tests.sh en cuatro tamaños de pantalla | Comportamiento y disposición de los widgets, posiciones en RTL, foco de teclado, contraste del skin en ejecución, todos los preajustes |
new_project_check.sh | Dependencias ocultas del proyecto anfitrión; con --zip la versión tal como se distribuye, con --export una compilación Web |
check_contrast.py | Contraste WCAG de cada archivo de tema, estados de botón y paneles translúcidos incluidos |
check_generated.py · check_scaffold.sh | Los temas generados coinciden con sus paletas; un tema desechable se genera y supera el contraste |
check_package.py | La versión tomada de package.json, movimientos del registro de cambios y contenido del ZIP, en copias temporales |
check_site.py | Los enlaces, anclas, idioma de página, glosario y tablas de dials de este sitio |
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.