Seleccione su idioma

Spirit of Eternal Racer
Spirit of Eternal Racer

Hoy toca contar por dónde voy en el desarrollo del juego. El resumen, simplificándolo mucho, es que estoy introduciendo y poniendo a prueba la IA de los coches rivales y, de paso, la IA que colabora conmigo.

Estos últimos días, el desarrollo se ha centrado en este aspecto, y tengo que decir que aún estoy con ello, pero que estoy avanzando más o menos según lo previsto. Estoy trabajando en la IA para que los coches rivales se comporten de manera inteligente y que no se limiten a seguir un camino fijo, sino que intenten esquivar a otros coches, creando una experiencia mínimamente realista. Este comportamiento también incluye que los rivales sigan la carretera y analicen el trazado que tienen por delante. Además, esto significa que ha llegado el momento de introducir la detección de colisiones. Así que son bastantes cambios introducidos de golpe y, aunque ya están presentes en el motor del juego, hay que modificar y ajustar muchas cosas.  En el vídeo se puede ver que el movimiento es caótico aún, el pintado de los coches hace que se superpongan unos a otros y, en fin, hay muchas coas que mejorar.

 

Optimización para Amiga

Aunque el desarrollo principal de estas funcionalidades se está llevando a cabo en la versión de Linux, he comenzado a optimizar el código para la versión de Amiga. El objetivo es mantener un rendimiento de 30 fotogramas por segundo de media en una máquina Amiga con una PiStorm con Raspberry Pi 3 en una resolución de 640x480. Está siendo complicado, aunque esta fase acaba de empezar.

A modo de ejemplo, he cambiado el análisis del trazado que va a seguir un coche manejado por IA. Si veis los tutoriales sobre este tipo de juegos, lo que se suele hacer es calcular la dificultad de los siguientes segmentos respecto al que ocupa ese coche. Ahora, en vez de hacerlo, digamos, en tiempo real, el análisis se hace antes de iniciarse la carrera y se almacena en memoria (al fin y al cabo los pilotos suelen saberse los circuitos de memoria, ¿no?). De esta forma, lo que se hace es acceder a memoria en cada momento para extraer la información de lo que se avecina y no se hace el cálculo. El acceso a memoria también tiene un coste temporal, pero es algo menor.

Más cosas entre manos

Todo lo que estoy contando lo estoy alternando con el intento de cerrar una primera demo técnica a distribuir, en la que un jugador pueda dar vueltas por un circuito. Esa parte está bastante cerrada, pero no termino de dejarlo como quiero porque siempre surge algo. En primer lugar, he cambiado un poco el nombre del juego. El anterior era muy parecido a algo ya existente que me encontré por la red.

El segundo obstáculo es que he llegado a la conclusión de que es mejor no usar coches reales, así que habrá que decir adiós al Koenigsegg One y al Clio que se veían en los vídeos previos. Esto, que parece simplemente una decisión, supone volver a hacer la imagen de la pantalla del título (nada del otro mundo, la verdad), pero en el caso de los coches me ha roto por completo el flujo de trabajo que tenía, consistente en buscar objetos (coches) 3D con licencia adecuada y generar en Blender todo lo necesario. La solución a esto está viniendo de nuevo de la mano de la IA Generativa, pero esto es una historia que se merece contar aparte.

Tauro Spectram el primer coche ficticio

¡Ah! He dicho adiós a los coches de las marcas conocidas, pero no es del todo cierto. Al tomar la decisión de no distribuirlos, también decidí que debe haber un sistema que permita hacer mods e introducir nuevos coches. Eso ya está implementado y es posible sustituir o añadir coches nuevos, cosa que también tendré que explicar más adelante.

Las IAs de generación de código siguen evolucionando

Otro punto que me parece interesante contar es algo que también me ha afectado, aunque no tengo claro en qué medida. Creo haber contado anteriormente que estaba usando Sourcegraph Cody para el desarrollo. La verdad es que me gustaba mucho y había llegado a un buen nivel de simbiosis con él. A mediados de junio, la empresa me comunicó que ese servicio llegaba a su fin y que sería sustituido por otro nuevo llamado Amp. Eso significaba que no podría renovar mi suscripción, pero me regalaron 40$ en créditos de Amp para que lo probara.

Apuré hasta el final del plazo que me dieron y, el 22 de julio, comencé a usar Amp. De momento, lo que puedo decir es que realmente es otra cosa. Mientras que Cody era un asistente de programación que proponía cambios en el código que tú tenías que aplicar (y de paso revisar), Amp es un sistema agéntico. Esto quiere decir que tú le das una tarea y él la cumple hasta el final. Hay una IA que razona y decide los pasos a seguir y encarga cada paso al agente correspondiente. Es espectacular verlo en acción. Ahora busca qué archivos del repositorio fuente debe analizar y modificar, hace los cambios (los aplica), modifica el sistema de construcción si es necesario (cmake en mi caso), compila, estudia los fallos de compilación si los hay, corrige los errores volviendo a modificar código, vuelve a compilar y no para hasta que te entrega el resultado que le has encargado.

Repito que el proceso es brutal como espectador, pero mis dudas vienen del lado de que no sé si quiero que haga tanto por mí. Quizá porque no me haya acostumbrado, pero el flujo anterior me obligaba a revisar sobre la marcha, y este te exige ir viendo qué ha cambiado, revisarlo, y hace bastantes cosas de golpe, con lo que se te puede escapar algo. Además, toda esa secuencia de pasos significa más tiempo de espera. Cody podía entregarte algo en menos de un minuto y Amp puede tirarse más de 5 tranquilamente.

El coste también es algo a analizar. Antes tenía barra libre por 10$ al mes. Ahora me he gastado 8$ en créditos de Amp en menos de una semana.

En cuanto a la calidad de los resultados, está claro que el nuevo sistema agéntico entrega algo que funciona y, antes, en alguna ocasión Cody no lo hacía, pero por debajo sigue estando Claude como IA que, en mi opinión, es la mejor para programar, así que no sé si me vale la pena porque el código no cambia tanto.

En fin, creo que de momento es todo, que no es poco, y, realmente, yo mismo no pensaba que tuviera tanto que contar.