DEV Community

Christian Gonzales Komiya
Christian Gonzales Komiya

Posted on Edited on

[Spanish] Entrenando un kantoku artificial — Capítulo 1: por qué no usé una red neuronal

Esta serie tiene tres capítulos:

  1. Por qué no usé una red neuronal : qué es el gateball, qué es un kantoku y cómo pensé el kantoku artificial.
  2. Saihai, el agente: : cómo se entrenó, qué aprendió, qué desaprendió y cómo terminó siendo un proyecto propio.
  3. Nana-Ban, el juego: : el videojuego donde vive el kantoku, la demo y cómo lo construí con Claude Code.

Primero, ¿qué es el gateball?

El gateball es un deporte de equipo que nació en Japón en 1947, en Hokkaido. Se juega en una cancha de pasto de unos 20 × 15 metros, con tres puertas (arcos) y un poste en el centro. Hay dos equipos de cinco bolas, rojas y blancas, y se juega por turnos en orden fijo: bola 1 roja, bola 2 blanca, bola 3 roja, y así hasta la 10.

Cada bola tiene que pasar las tres puertas en orden y luego tocar el poste. Cada puerta da un punto y el poste da dos. Pero lo interesante está en otra parte: si mi bola golpea a otra (un touch), puedo colocar las dos juntas y, con un golpe a la mía, mandar a la otra lejos. Eso es el spark. Con él puedo ayudar a una compañera a avanzar o sacar de la cancha a una bola rival. Un partido dura 30 minutos, y gana el equipo con más puntos.

A simple vista parece un juego de puntería. En realidad es un juego de estrategia.

¿Y qué es el kantoku?

El kantoku (監督) es quien dirige la estrategia del equipo. Decide qué tiene que hacer cada bola en cada turno: avanzar a su puerta, atacar a un rival, acomodarse para ayudar a una compañera o protegerse.

Un buen kantoku no piensa solo en el golpe de ahora. Piensa en qué le deja al rival que juega después, en quién de su equipo es certero de cerca y quién de lejos, en qué zonas de la cancha conviene dominar y en cuánto tiempo queda, porque la forma de dirigir cambia mucho en los últimos minutos.

De dónde salió este proyecto

Todo empezó con un videojuego. Estoy desarrollando Nana-Ban (七番, «el número siete»), un juego de gateball en 2D con estética retro, inspirado en los videojuegos de gateball de los años 80. Lo construyo con Claude Code, en iteraciones cortas.

Llegó un momento en que el juego ya tenía de todo: las 10 bolas, los turnos, el touch, el spark, las faltas y el reloj. La CPU jugaba un partido completo. Pero al jugar contra ella me di cuenta de algo: hacía jugadas sin criterio. Apuntaba a su puerta y poco más. A veces dejaba su bola justo donde yo podía tocarla y sacarla. Otras, volvía a entrar a la cancha poniéndose a mi merced. Acertaba, pero no pensaba.

Ahí entendí que lo que le faltaba no era puntería: le faltaba un kantoku.

¿Es como un jugador de ajedrez?

Mi primera intuición fue esa: un kantoku es como un ajedrecista, alguien que lee el tablero y anticipa al rival. Se parecen en eso, pero hay tres diferencias importantes:

  • Las jugadas son continuas. En ajedrez hay unas 30 jugadas posibles por turno. En gateball, el ángulo y la fuerza son infinitos.
  • Hay azar en la ejecución. Puedes elegir el tiro perfecto y fallarlo. El pasto desvía la bola.
  • Quién juega después importa muchísimo. El orden de turnos es fijo, así que la pregunta clave es: ¿qué le estoy dejando a la bola rival que viene?

Por eso el modelo más parecido no es el ajedrez, sino la inteligencia artificial del billar o del curling: pensar varias opciones, simular cada una y evaluar cómo queda la cancha.

Cómo piensa el kantoku artificial

Hoy ese kantoku tiene nombre: Saihai (采配), que en japonés es la forma de dirigir de un kantoku, sus decisiones tácticas durante el partido. En cada turno, Saihai hace tres cosas:

  1. Piensa opciones: pasar su puerta, hacer touch a un rival, acercarse a una compañera, ir al poste o acomodarse.
  2. Las prueba en su cabeza: simula cada tiro con la misma física del juego, varias veces y con el error propio del jugador que tira, porque no es lo mismo un tirador certero que uno inseguro.
  3. Evalúa cómo queda la cancha: le pone un puntaje a cada situación posible y elige la mejor.

Esa evaluación es el corazón del kantoku. Es una fórmula que suma cosas como:

  • los puntos ganados,
  • qué tan bien quedan mis bolas para su siguiente puerta,
  • cuál es la mejor opción que le dejo al rival que juega después,
  • si controlo la zona frente a las puertas 2 y 3,
  • si mis bolas quedan cerca entre sí para encadenar touch y spark.

Cada término tiene un peso: cuánto vale. ¿Vale más sacar una bola rival o asegurar un punto? ¿Cuánto cuesta dejar mi bola expuesta? Ahí está la estrategia.

Que la máquina aprenda los pesos

Al principio, esos pesos los escribí a mano, según mi criterio. Funcionaba, pero eran estimaciones. Entonces me pregunté: ¿y si un kantoku artificial los descubre solo?

La idea es simple:

  1. Se crean 24 kantokus con pesos un poco distintos.
  2. Juegan partidos entre ellos, miles, sin dibujar nada, solo simulando.
  3. El sistema se queda con lo que mejor funciona y genera una nueva generación cerca de los ganadores.
  4. Se repite durante decenas de generaciones.

Al final queda un campeón: un archivo con unos 30 números. Ese es el modelo. Lo que se aprende no es la fórmula, sino cuánto vale cada cosa dentro de ella. Es como una receta: el código dice «lleva harina, azúcar y huevos», y el entrenamiento descubre las cantidades.

Técnicamente es optimización por autojuego con un algoritmo llamado CMA-ES. Corre en mi laptop: el primer entrenamiento tardó 80 minutos, y los más completos, unas cinco horas.

¿Por qué no una red neuronal?

Es la pregunta obvia. Las redes neuronales son la base de la inteligencia artificial moderna, y AlphaZero aprendió a jugar ajedrez y Go mejor que cualquier humano. ¿Por qué no usar una?

Pesos + fórmula (lo que elegí) Red neuronal
Partidos para aprender Miles Cientos de miles o millones
Equipo Mi laptop, en horas GPU y días o semanas
¿Se puede leer? Sí: «touch al rival vale 4,6» No: millones de números sin significado claro
Corregir un defecto Directo Reentrenar y esperar
Mi conocimiento de kantoku Entra como términos La red tiene que descubrirlo sola
Tamaño en el juego ~30 números Megas de datos en el navegador

La razón más importante para mí fue la última fila. Cuando jugué contra la CPU y dije «hay que dominar la zona frente a la puerta 2 sin darle ángulo de tiro al rival», esa idea se convirtió en un término de la fórmula, y el kantoku empezó a valorarla en el siguiente entrenamiento. Con una red neuronal, esa intuición tendría que descubrirla sola, jugando millones de partidos, sin garantía de lograrlo.

¿Y si le ponemos una GPU?

Pensé que con una GPU todo sería más rápido. No en este caso. Una GPU es excelente cuando el trabajo se puede partir en millones de operaciones simples e iguales, como pintar una cerca de mil tablas con mil personas a la vez. Así son las redes neuronales.

Pero un partido de gateball es una carrera de postas: el choque produce un touch, el touch habilita un spark, el spark define el siguiente golpe. Cada paso depende del anterior. Eso lo hace mejor un procesador normal (CPU), y lo que acelera el entrenamiento es tener más núcleos: cada núcleo juega un partido distinto, como un campeonato con varias canchas.

¿Entonces la red neuronal es peor?

No. En techo, una red neuronal puede llegar más lejos, porque no está limitada a los términos que yo definí y puede descubrir conceptos que a nadie se le ocurrieron. Pero en un videojuego el objetivo no es el kantoku más fuerte del mundo, sino un buen rival, con criterio. Para eso, el enfoque elegido es más rápido, más barato, entendible y fácil de corregir.

Si algún día hace falta más, el siguiente paso no sería una red desde cero, sino una red pequeña que aprenda a partir de los mismos términos que ya definimos.

Lo que aprendí en el primer entrenamiento

El primer campeón ganó el 93 % de sus partidos contra los pesos escritos a mano. Parecía un éxito. Pero cuando jugué contra él, le gané fácil.

¿Qué pasó? El kantoku había aprendido a ser hiperagresivo: hacía touches y sacaba bolas sin parar, y dejó en cero el peso de la exposición. No le importaba dejar sus bolas a mi alcance. La razón: entrenó contra rivales pasivos, que casi nunca atacaban. Contra alguien que no ataca, exponerse no cuesta nada, y eso fue exactamente lo que aprendió.

Es como un equipo que solo juega amistosos contra rivales que nunca tiran al arco: aprende que defender no sirve.

La lección: una máquina aprende el mundo que le das, no el mundo real. Para el segundo entrenamiento cambiamos cuatro cosas:

  • Rivales más duros, incluido el propio campeón.
  • Un piso al riesgo, porque en el gateball exponerse siempre cuesta algo.
  • El desvío real del pasto: el kantoku creía acertar el 98 % de los tiros, y a 9 m se acierta cerca del 60 %.
  • Mi referencia de jugador: un buen jugador acierta un touch la mitad de las veces a unos 6 m, y a 13 m quizás una de cada cinco.

Ese es el valor de este enfoque: cada observación que hago jugando se puede convertir en algo que el kantoku entiende.

Próximo capítulo

Este fue el capítulo 1: por qué el kantoku artificial es como es. En el capítulo 2 cuento la historia de Saihai: los entrenamientos que siguieron, la vez que aprendió a ganar sin atacar, las reglas de kantoku que salieron de mis propias partidas, lo que todavía no logra entender, y cómo terminó convertido en un proyecto propio, abierto y publicado en Hugging Face.

En el capítulo 3 hablaré del juego, Nana-Ban: de qué consta, por qué lo hice con Phaser, cómo usa a Saihai y dónde se puede jugar.

Top comments (0)