Los detalles pequeños deciden si se ve bien
Pule los paneles grandes cuanto quieras — lo que llama la atención siempre es algo pequeño: una palabra partida en dos, un resplandor cortado, una ranura apretada. El 2026-09-13 se señalaron cuatro cosas así y se corrigieron en los widgets y los temas, no en la pantalla de la demo, para que todas las pantallas obtengan el mismo resultado.
| Qué se veía | Causa | Solución |
|---|---|---|
El Done de la marca guía se convertía en Don/e |
Un botón con el ajuste de línea activado resta el ancho de su texto de su mínimo — apriétalo y se parte dentro de una palabra | GoStyle.fit_words(): una sola palabra nunca se parte; varias palabras se ajustan por líneas, pero la palabra más larga siempre cabe — se juzga sobre el texto mostrado, no sobre la clave de traducción, y el formulario lo vuelve a aplicar cuando cambia el idioma |
| El resplandor de un botón a todo lo ancho quedaba cortado en vertical por la izquierda | Un contenedor de desplazamiento recorta en su borde, sin excepciones. Solo sobrevivía el lado derecho, gracias al canal de la barra | GoScroll toma prestado el relleno del padre para empujar su borde 12dp hacia fuera y lo devuelve por dentro — el contenido no se mueve |
| El tiempo, el icono y la cantidad se apilaban en vertical dentro de una ranura | Tres filas dentro de 48dp | Icono grande en el centro, atajo arriba a la izquierda, cantidad como insignia abajo a la derecha, tiempo restante como insignia sobre el icono — los paneles de insignia vienen del badge_box() del skin |
| Un desplegable plano sin selección visible | El resaltado de los elementos usaba el panel de botón; las marcas de radio eran las tenues predeterminadas del motor | Un panel de resaltado propio (tinte de acento suave), el mismo gráfico de radio que las casillas, y altura de elemento dimensionada para el tacto |
Dale a los botones de solo icono una descripción con GoStyle.icon_button(icon, action, -1, tooltip_key) —
el tooltip para quien usa ratón y el nombre accesible para los lectores de pantalla salen ambos de ese único valor.
gohud dibuja el tooltip por su cuenta: el del motor parte el texto a un carácter por línea cuando
su cálculo de ancho falla (medido a 1dp de ancho).
La tarjeta de la marca guía se aparta de los elementos fijos
En horizontal, la tarjeta se enviaba antes al borde superior o inferior — justo donde viven los encabezados y las piezas
del HUD; en la demo se posaba sobre el → × del encabezado. Ahora se mantiene al nivel de su objetivo,
rodea cualquier GoHudAnchor que reserve espacio, y admite otros elementos a esquivar mediante
keep_clear. Se mueve la distancia más corta que libra el obstáculo sin tapar el
objetivo, y se queda donde está cuando la pantalla es demasiado pequeña para librarlo todo — solaparse es mejor que desaparecer.
Su profundidad — para que se lea como algo por encima de la página — viene de los dials del skin
(float_shadow_size, float_shadow_lift, float_shadow_alpha; los skins achaflanados usan float_glow_size).
tour.keep_clear = [header_bar, toolbar] # elementos fijos que no son anclas
Pantallas con ratón y teclado
Un dedo no tiene estado de hover. Si desarrollas solo pensando en móvil, dos estados exclusivos de escritorio quedan sin verificar —
y uno de ellos estaba roto: el anillo de foco de gohud era invisible sobre un botón primario. El panel es
del color de acento y el anillo también lo era: 1.00:1, el mismo color dibujado sobre sí mismo. Al moverte
con el teclado, no había forma de saber dónde estabas.
Los botones rellenos (GoPrimaryButton, GoDangerSolidButton) usan un anillo que
contrasta con su propio panel — oscuro en un tema oscuro, blanco en uno claro, un corchete de puntería
oscuro en ciencia ficción. El verificador de contraste mide el anillo de foco contra el panel en el que se apoya, así que
la regla sobrevive a un cambio de paleta (la WCAG 2.4.11 pide 3:1 en los indicadores de foco).
Los widgets del HUD
GoHudAnchor — nueve puntos
Respeta el área segura y los márgenes de borde. Dale un landscape_spot y se moverá en
horizontal — los controles que en vertical van abajo al centro pueden pasar abajo a la derecha.
Mantener el contenido fuera de debajo del HUD
Cuando una pantalla desplazable comparte la vista con un HUD, el contenido se desliza por debajo de él y los dos conjuntos de texto se solapan hasta que no se puede leer ninguno. Pasó dos veces en este add-on: el texto de sugerencia de un campo se colaba entre las ranuras rápidas, y el mando de un interruptor de ajustes caía sobre la barra de vida.
form.avoid_hud = true # se aparta de todo GoHudAnchor visible
joystick_anchor.reserve_space = false # …salvo los que solo aparecen bajo un dedo
Cada rectángulo se esquiva en la dirección que menos área cuesta. Una barra arriba a la derecha se rodea hacia abajo en un teléfono vertical (13% de la altura) y hacia los lados en horizontal (21% del ancho) — esquivarla en vertical estando en horizontal costaría el 27% de la pantalla. El terreno ya cedido se resta antes de medir el siguiente rectángulo.
Las piezas del HUD también chocan entre sí
Los nueve puntos reparten la pantalla; no garantizan que las piezas no se toquen. Un snackbar ancho arriba al centro caía justo encima de la barra de vida de arriba a la derecha, ocultando el valor — no se podía leer cuánta vida quedaba.
notice_anchor.avoid_peers = true # se coloca debajo del HUD fijo
notice_anchor.reserve_space = false # y no empuja la página mientras está visible
Se aparta solo en vertical — moverse también hacia los lados haría que un aviso centrado apareciera en un sitio distinto cada vez. Y solo esquiva las piezas que no se están apartando ellas mismas: si ambas ceden, las dos se intercambian el sitio eternamente.
GoBar — vida, maná, experiencia
var hp := GoBar.new()
hp.label_text = "HP"
hp.ink = GoUi.color(GoTheme.DANGER_FILL) # el token solo de relleno
hp.set_values(320, 500) # "320 / 500"
Los cambios se suavizan durante 0,18 s — una barra de vida que salta no te dice con cuánta fuerza te han golpeado.
reduce_motion lo hace instantáneo. Los números grandes se abrevian a 12.3k para que el
ancho de la barra no tiemble según entran y salen dígitos.
GoSlot — una ranura rápida
Icono, cantidad, enfriamiento y atajo en una sola cara. Colgar insignias de un círculo pequeño hace que cada ranura tenga un ancho distinto y la fila se tambalee.
touch_peers.
keyboard_focus está desactivado por omisión, para que una fila de ocho ranuras no se interponga entre quien usa teclado y
todos los controles de ajustes en el orden de tabulación. Actívalo cuando el teclado o el mando sean la única entrada.
GoJoystick — stick virtual
| Modo | Comportamiento |
|---|---|
FIXED | Siempre en el mismo sitio — fácil de encontrar sin mirar |
FOLLOW | Aparece donde cae el pulgar |
RELATIVE | Sigue al pulgar después de aparecer — cómodo para desplazamientos largos |
El Vector2 de moved tiene una longitud de 0 a 1, así que puedes multiplicarlo directamente por
una velocidad; no varía con el tamaño de pantalla ni con el DPI.
GoIconButton — se ve pequeño, se pulsa grande
touch_peers.