Jugar un juego de cartas táctico con control: así funciona el soporte para control en Ancient Duel
El soporte para control suele ser cosa de juegos de movimiento y puntería. Ancient Duel no tiene ni lo uno ni lo otro. Es un juego de cartas: miras el tablero, piensas un rato y luego tomas una única decisión concreta.
Precisamente por eso el control le quedó tan bien. Cada acción de un duelo se reduce a la misma lista corta. Qué carta. Qué posición. Qué objetivo. Confirmar. Volver. Ese es el vocabulario natural de un control, y encaja mal con un dispositivo cuyo principal talento es señalar píxeles cualesquiera.
Un control no debería fingir que es un mouse
El atajo tentador es dejar que el joystick empuje un cursor por la pantalla. Se programa rápido y es desagradable de usar: terminas guiando un puntero sobre un tapete vacío, haciendo un trabajo analógico para tomar una decisión digital.
Ancient Duel mueve la selección. El joystick o la cruceta saltan entre cosas que de verdad significan algo (una carta en la mano, una unidad en el campo, un objetivo, un botón, una pestaña) y Confirmar activa lo que esté seleccionado en ese momento. Nunca apuntas. Dices “siguiente carta”, “esa”, “sí”.
Toda la capa de entrada sigue una regla que fijé desde el principio y nunca rompí: jamás reimplementa una acción del juego. Mueve el foco y deja que el botón que ya estaba ahí haga su trabajo. El juego se podía manejar con teclado desde el trabajo de accesibilidad de abril, así que el soporte para control no exigió tocar la lógica del juego en absoluto. Y lo contrario también se cumple: lo que no se alcanza con el teclado no se alcanza con el control. Hacer algo navegable significa convertirlo en una parada del foco, no escribir código de entrada nuevo.
El tablero ya era una cuadrícula
Aquí un juego de cartas ayuda de una forma en que un mundo 3D no lo hace. El campo de batalla de Ancient Duel es una estructura fija y finita: cuatro posiciones de unidad por bando, una casilla de Comandante en el centro, una fila de estrategia, una mano, dos cementerios y una zona de terreno. No hay ningún espacio continuo que recorrer.
Así que la disposición visual puede convertirse sin más en la navegación. Izquierda y derecha avanzan por una fila, arriba y abajo pasan entre la mano y el campo, y los botones superiores saltan zonas enteras de una vez en lugar de recorrer todo lo que hay en medio. El joystick derecho desplaza la página y Start abre la configuración del control.
El foco es el cursor
Con un mouse, el jugador siempre sabe a qué está apuntando, porque es su mano la que apunta. Quita el puntero y la interfaz tiene que responder tres preguntas en todo momento: qué está seleccionado, qué le hará Confirmar y qué deshará Volver.
Parece obvio, y ahí se fue la mayor parte del trabajo minucioso. Un cuadro de diálogo que se abre con la selección en su botón de cerrar es técnicamente navegable y en la práctica inútil: el juego te acaba de preguntar qué carta quieres descartar y el resaltado está sobre la ✕. Ahora los diálogos se abren en su primera opción real, y los modos de selección de objetivo colocan la selección en el primer objetivo válido en lugar de limitarse a resaltarlos todos, algo que con un puntero funcionaba bien y sin él obligaba a buscar.
Un buen soporte para control no es aquel en el que se alcanza cada botón. Es aquel en el que dejas de pensar en cómo alcanzarlos.
Nunca confíes en el índice de un botón
Esta es la parte que subestimé muchísimo.
Un control de PC puede anunciar que usa la disposición estándar y luego numerar sus botones como se le antoje a su firmware. El control con el que hago las pruebas hace exactamente eso y, para colmo, trae impreso 1 / 2 / 3 / 4 en el sentido de las agujas del reloj desde arriba en lugar de A/B/X/Y. Así que detrás de cada pulsación se esconden tres datos distintos, y solo el primero se puede conocer de verdad: la entrada en bruto, la posición física de ese botón en el plástico y la etiqueta impresa a su lado. Un juego que asigna Confirmar al “botón 0” está adivinando dos de los tres.
Por eso Ancient Duel tiene un asistente de calibración, y nunca deduce nada de un índice. Aprende la posición física de tus manos y la etiqueta impresa de lo que tú le digas que dice el dispositivo. Las etiquetas se eligen de una lista en lugar de escribirse, porque un control no tiene letras, y no son decorativas: si le dices al juego que tu botón inferior dice “B” y el derecho dice “A”, tienes en las manos un control con la convención de Nintendo piense lo que piense el navegador, y Confirmar y Volver se intercambian en consecuencia.
Un botón que te saltas se queda mudo. No se recurre a un índice supuesto, porque un botón superior que confirma una rendición es justo la falla que la calibración existe para evitar.
Una calibración que no puede pedir un mouse
Aquí hay una paradoja escondida. El jugador cuyo control está mal asignado es justo el que necesita la pantalla de calibración, y justo el que no puede navegar por un menú normal para llegar a ella.
Así que la regla que sigue todo el diseño es que un control tiene que poder calibrarse, etiquetarse, guardarse, volver a abrirse y repararse sin mouse ni teclado. En una computadora funcionan como comodidad; nada puede exigirlos.
En la práctica, eso significa que el asistente se abre con “presiona cualquier botón para empezar” y acepta cualquier botón en bruto de cualquier control conectado, y esa pulsación decide además qué control maneja la sesión. Después vienen confirmar y cancelar, que no se pueden saltar. A partir de la tercera pregunta, el botón que acabas de nombrar como botón frontal derecho te hace retroceder un paso, así que presionarlo las veces suficientes cierra el asistente: la única salida que no necesita puntero. Cada paso de captura avanza solo, porque un jugador al que se le acaba de decir que presione el botón frontal inferior no tiene manera de presionar también “Siguiente”.
Por qué nunca pregunta por el joystick
Ocho preguntas, y todas son botones. No se pregunta nada sobre direcciones.
En parte porque las direcciones son lo confiable: en un control con asignación estándar, el joystick izquierdo llega como los dos primeros ejes, lo que hace la entrada direccional mucho más predecible que unos botones que el fabricante numeró como le pareció. Pero sobre todo por algo que solo entendí después de verlo fallar. Un botón está presionado o no lo está. Un eje no tiene un estado de reposo con sentido: un joystick gastado deriva, el hat de una cruceta descansa en 3.29, un gatillo se queda en −1, y cualquiera de ellos puede responder una pregunta que nadie hizo, o impedir que un paso termine por un motivo que nada en la pantalla puede explicar. No preguntar eliminó toda una categoría de comportamientos inexplicables.
Mantener presionada una dirección la repite, a una velocidad que puedes ajustar, igual que la zona muerta si tu joystick deriva.
Escribir sin letras
Luego llegas a un campo de texto y el control no tiene nada que ofrecer. Iniciar sesión, ponerle nombre a un mazo, buscar en el catálogo de cartas: todo ello necesita caracteres que ningún control tiene.
Así que Confirmar sobre un campo de texto abre un teclado QWERTY completo en pantalla. Son botones normales en una capa normal, lo que significa que la misma navegación se mueve por él y Volver lo cierra como cualquier otra cosa. Un jugador con un teclado de verdad nunca llega a verlo.
Un detalle que no esperaba que importara: la disposición usa un escalonado físico real, los mismos desplazamientos de un cuarto de tecla que tiene un teclado ANSI. La navegación lee la geometría renderizada para decidir adónde va “arriba”, así que es el escalonado lo que pone la W sobre el hueco entre la A y la S. Los números redondos fallan sin remedio: un escalonado de exactamente media tecla deja cada tecla a la misma distancia de las dos que tiene debajo, y el empate lo decide el orden en que el marcado las haya puesto por casualidad.
Lo que el control encontró en el resto del juego
Lo más útil de este trabajo es lo que sacó a la luz. Un mouse le permite al jugador tapar los problemas de la interfaz señalando directamente lo que quiere. Un control no puede, así que la interfaz tiene que hacer explícitas esas relaciones, y en varios lugares resultó que no lo hacía.
Los mazos guardados no eran paradas del foco, lo que significaba que un mazo no se podía abrir en absoluto sin mouse. Con los cementerios y el terreno pasaba lo mismo. El constructor de mazos reconstruía sus dos columnas cada vez que agregabas una carta, destruyendo el botón que acababas de presionar y haciéndote perder el lugar; ahora recuerda la carta y la acción y vuelve a encontrarlas. Los diálogos de confirmación y aviso propios del navegador quedan completamente fuera del modelo de foco de la aplicación, así que se reemplazaron por otros dentro de la página que se abren en la respuesta segura.
Ninguno de ellos es un error del control. Son errores de la interfaz que un puntero venía compensando en silencio, y corregirlos mejoró el juego para gente que nunca tocará un control.
Steam, sillones y la Deck
El mismo código funciona en el navegador, en la versión para Windows que se usa en Steam y en la versión para macOS, y las tres usan el mismo sistema de control y la misma lógica de configuración, aunque los ajustes se guardan en el dispositivo y no en tu cuenta.
Lo que eso aporta es sencillo: una PC deja de ser solo un escritorio. La misma versión funciona en una laptop, en un equipo conectado a un televisor y desde el sillón con un control. Un juego de cartas se presta a ello mejor que la mayoría de los géneros, porque la postura natural para Ancient Duel es recostarse y pensar, no inclinarse hacia adelante y hacer clic.
En consolas portátiles como la Steam Deck, lo honesto es decir que el trabajo de base está hecho y las pruebas no. Steam Input puede exponer la entrada del control mediante una asignación estándar compatible con XInput, así que el modelo que ya existe es, en principio, una base útil, y un juego que nunca da por hecho un mouse cumple un requisito importante para ese tipo de dispositivo. No he comprobado Ancient Duel en el propio hardware, así que no voy a afirmar que funcione ahí. También hay un modo TV que agrega un margen de seguridad, porque algunas configuraciones de televisor todavía aplican overscan y recortan parte de la imagen en los bordes, lo suficiente para dejar el botón de rendirse fuera de la pantalla.
El mismo razonamiento vale para cualquier plataforma futura. Una versión para consola necesitaría mucho más que trabajo de entrada: SDK, certificación, servicios de la plataforma, empaquetado, aprobación de la tienda. Pero hay una barrera que se puede quitar pronto, y es la que afecta a todas las pantallas: el juego no debe dar por hecho que existe un mouse. Eso no deja nada listo para una consola. Mantiene abierta una puerta que después cuesta mucho volver a abrir.
El mouse no se fue a ninguna parte
Nada de esto reemplaza a nada. El mouse y el teclado funcionan exactamente igual que antes, y en una computadora siguen siendo más rápidos. La idea nunca fue elegir un dispositivo de entrada en nombre del jugador.
Un duelo jugado con control no es un duelo distinto. Se selecciona la misma carta, se elige el mismo objetivo, se toma la misma decisión y se asumen sus consecuencias. Lo único que cambia es cómo llega la decisión al juego, y cuantas menos suposiciones haga Ancient Duel sobre lo que tienes en las manos, en más lugares se podrá jugar ese mismo duelo.
Daniel Rusu
Creador y desarrollador de Ancient Duel