Seleccione su idioma

Probando el segundo coche
Probando el segundo coche

En los últimos días —tal vez un par de semanas— estoy probando a incluir un coche con características diferentes. Aunque pueda no parecerlo, ya que hasta ahora solo había publicado vídeos con un mismo deportivo, la física del juego permite definir coches que se comportan de forma "real" en función de sus características (potencia, peso, transmisión…). En realidad, ya tenía un segundo coche modelado desde hace tiempo, pero lo tenía "olvidado" mientras pulía otras cosas. Ahora lo he rescatado y adaptado para que vuelva a funcionar con la última versión del código.

El resultado parece bastante bueno y, además, he añadido una funcionalidad para que cada modelo pueda tener su propio sonido de motor y de cambio de marcha.

Por otro lado, creo que va siendo hora de empezar a dar más detalles de cómo estoy usando la IA. En realidad, no solo la estoy usando a través de la programación. También le pedí a Gemini que me hiciera bocetos para la pantalla de selección de coches (o garaje), y después de un par de modificaciones me quedé con esta versión.

Garage mockup

Con esta idea en la cabeza, era el momento de añadir el estado de la pantalla del garaje. En este caso, el trabajo rutinario lo haría Claude. Estuve a punto de decirle que no añadiera ningún elemento gráfico, pero lo dejé hacer lo que quisiera y, como ya conocía el contexto de todo, generó una propuesta de pantalla de menú con el código SDL y SDL_Gfx necesario. La verdad es que no me gustó mucho y tenía algún fallo en la ubicación de elementos (lástima que no hice una captura), pero era completamente funcional. Eso me sirvió para reutilizar código de botones, carga de imágenes y alguna otra cosa más, pero terminé maquetando todo para conseguir el aspecto propuesto por Gemini (con algún cambio de color) y, esta vez sí, hecho por mí. Esto es un ejemplo de cómo una o más IAs pueden adelantarte trabajo, pero también de que no debemos perder el control de lo que hacen para poder modificar, añadir o desechar lo que sea.

Bueno, al final el resultado es este. Bastante similar a la propuesta de Gemini, como se puede ver.

In game garage menu

A esto hay que añadir que todo escala según la resolución que elijamos, y que me está tocando compilar una versión reciente de SDL_Gfx para Amiga, ya que la que hay no tiene la función necesaria para hacer rectángulos redondeados. Afortunadamente, después de dar con las opciones adecuadas (básicamente, forzar el uso del cálculo en coma flotante mediante hardware), los problemas se resolvieron.

Pero no todo es IA... Como he dicho antes, el sonido es particular de cada coche, y los estoy extrayendo de vídeos que encuentro de esos modelos, de los que saco el audio. Hay mucho trabajo en ello. SDL (bueno, SDL_mixer en realidad), en su versión 1.2 no me permite cambiar la frecuencia de un sample de forma dinámica para que suene más agudo al subir las revoluciones. La solución es manejar doce samples que se cambian en función de las revoluciones del motor. Esto exige seleccionar un segmento de audio donde el coche real esté acelerando y, a partir de ahí, sacar las doce partes. ¡Ah! Y hacer que cada bucle de sonido quede bien. Mucho trabajo en Audacity.

Lo mismo ocurre con los objetos 3D y Blender. En vídeos anteriores se ve un superdeportivo azul. Ahora es el mismo, pero blanco. Esto es así porque estoy seleccionando coches y objetos para el circuito que tengan licencias permisivas (CC, por ejemplo), y cuando generé los sprites con el azul —al principio de todo— no tuve en cuenta guardar el nombre del autor y no recuerdo su licencia. Afortunadamente, de los coches famosos hay muchas versiones creadas por diferentes autores, y encontré una que me pareció bien, con la licencia adecuada. Ufff… eso me recuerda que debo añadir una pantalla de créditos. En fin, todo esto para contar que, cuando tengo un coche, hago un render para cada posición y luego lo junto todo en el archivo de sprites.

Y otra cosa más que se me olvidaba… También tenía en el cajón una primera prueba del circuito de Monza. No he podido dedicarle todo el tiempo necesario para terminarlo, pero a nivel de trazado creo que ya está bastante cercano a la realidad, al menos dentro de lo que cabe para un juego como este.