10-06-2022, 11:54
(Última modificación: 10-06-2022, 14:25 por Stig's Cousin.)
Parte 5. Crear layouts (una pista con varios recorridos posibles) y la inteligencia artificial (IA) para nuestros oponentes.
Con la pista subdividida en varios archivos .kn5 ahora es cuando podemos hacer los layouts (si queremos, hay pistas con un solo layout) y la IA (una IA por cada layout).
Hasta ahora nuestra pista solo tiene un posible recorrido (un solo layout). Para las pistas con un único layout la estructura es esta:
Así es como tengo mi proyecto en estos momentos. Sin embargo para tener dos layouts en una sola pista (recorrido hacia adelante y recorrido hacia atrás) hay que ir cambiando y reorganizando la estructura de la pista de esta manera:
Si examinas las imágenes anteriores verás que solo se trata de alterar un poco los directorios, duplicar ciertos directorios y archivos para crear el segundo layout, cambiar nombres de esos archivos y directorios duplicados, y luego darle un nombre distinto a cada layout en los archivos ui_track.json para que en el menú del juego podamos escoger una trazada u otra. Prueba en el juego:
Ahí está. Solo hay una pista, pero aparecen dos posibles recorridos para la misma. Normal (sentido de las agujas del reloj) y Reverse (sentido contrario).
Cargamos cada una de las opciones, para comprobar que está todo perfecto, que funciona. El coche aparecerá en ambos layouts en la misma posición, pues aún no hemos tocado esa parte.
Bien, como funciona ahora toca mover la posición de los coches en boxes, en parrilla, los marcadores start / finish, etc, solo para el layout de reverse. Para ello tenemos que:
- Duplicar el archivo de posiciones kotarr_dummies_pos_norm.fbx y su .fbx.ini asociado, renombrándolos como kotarr_dummies_pos_rev.fbx y kotarr_dummies_pos_rev.fbx.ini respectivamente.
- Cargar el archivo kotarr_dummies_pos_rev.fbx en 3dSimEd.
- Añadirle el asfalto principal y el pitlane para tener referencias visuales.
- Mover los objetos marcadores hasta las posiciones deseadas.
- Una vez dejado todo como queremos, eliminar el asfalto principal y el pitlane.
- Exportar como kotarr_dummies_pos_rev.fbx, sobreescribiendo archivos existentes.
- Importar kotarr_dummies_pos_rev.fbx en el ksEditor y exportarlo como un nuevo archivo: sc_kotarr_dummies_pos_rev.kn5
- Editar el models.ini correspondiente al layout de reverse, y cambiar sc_kotarr_dummies_pos_norm.kn5 por sc_kotarr_dummies_pos_rev.kn5
- Hacer la prueba ingame.
Recordemos que es muy importante tanto orientar los marcadores hacia el lado correcto, como colocarlos en la posición correcta (start izquierdo debe estar en start izquierdo, el derecho en el derecho, etc). También que siguiendo la trazada vayan en el orden correcto: checkpoint 1 antes que checkpoint 2. No es solo "girar el marcador" y ya está. Si nos equivocamos en esto a la hora de hacer la inteligencia artificial será imposible hacerla bien.
El proceso en imágenes.
Siguiente paso, crear la inteligencia artificial. Recordemos que ahora tenemos dos pistas en una, por lo tanto crearemos dos inteligencias artificiales, una para cada trazada.
Aquí vamos a ver la importancia de subdividir la pista . Abrimos el archivo models.ini que corresponde al layout "normal". Vamos a reordenar todos los párrafos de tal manera que el orden de carga de archivos sea el siguiente:
1- trazada de asfalto principal.
2- pitlane.
3- marcadores de posición.
4- resto de asfalto.
5- terreno.
Salvamos cambios. Y ahora vamos a forzar un fallo en la carga de archivos. Como ya dije la numeración de los modelos deben ser secuencial. Si cambiamos la numeración de los últimos dos párrafos por una no consecutiva no se cargarán. El models.ini lo dejo así:
Siguiente paso. Si no lo hemos hecho ya, hay que habilitar las herramientas de desarrollador que incluye Assetto Corsa. Para eso nos vamos a [directorio del juego] / system / cfg, abrimos el archivo assetto_corsa.ini y buscamos la línea ENABLE_DEV_APPS, cambiando el valor de 0 a 1. Guardamos cambios.
Ejecutamos el juego y cargamos el layout "normal" de nuestra pista. Vamos a ver dos cambios inmediatos: solo veremos el asfalto de la trazada principal y del pitlane, y si desplegamos el menú de las aplicaciones veremos que ahora tenemos un apartado dedicado a las aplicaciones de desarrollador.
Ejecutamos la herramienta AI, que es la que nos permitirá crear la inteligencia artificial.
Primero debemos empezar a grabar desde el pitlane, pulsando el botón "empezar en pits". Dar una vuelta completa, volviendo al punto de boxes.
No tenemos que ir rápido, de hecho es aconsejable ir despacio, pero no debemos salirnos de la pista en ningún momento, esto es muy importante. Si te sales empieza desde cero, cancela partida y vuelve a cargar el layout.
Una vez regresado a boxes pulsamos en "grabando" para parar de grabar y en "GUARDAR IA" para salvar el recorrido realizado. Ahora ponemos el coche en la pista principal, antes de la línea de meta, para empezar a grabar la trazada de la carrera.
Pulsamos en el botón "empezar a grabar" de arriba. Una vez pulsado parpadeará en rojo con la leyenda "grabando" este botón no tiene "stop", seguirá grabando continuamente, por eso es muy importante grabar primero la trazada a boxes. Podemos dar todas las vueltas al circuito que queramos hasta hacer la trazada que más nos guste, solo se grabará la última.
Una vez que completemos una vuelta veremos una línea azul sobre el asfalto. Esa línea representa la trazada de la vuelta que hemos dado para los pits.
Y las vueltas que demos grabando esta trazada se representarán por una línea morada, esta línea solo es de la última vuelta.
Cuando hayamos dado la vuelta perfecta tras cruzar la meta, pulsamos el botón "GUARDAR IA" y cerramos la partida. Seguramente tardará un poco más de lo normal en volver al menú principal, eso es porque está generando la IA de este layout.
Cerramos partida pero no el juego, podemos dejarlo ejecutado en segundo plano. Nos vamos a la capeta de nuestra pista y entramos en el layout y su carpeta ai. En este caso sc_kotarr / sc_kotar_norm / ai, y veremos que se han generado dos archivos.
pit_lane.ai.candidate es la grabación de la vuelta que dimos desde boxes.
fast_lane.ai.candidate es la grabación de la última vuelta que dimos a la pista, sin los boxes.
Hay que renombrar ambos archivos, eliminando la extensión .candidate. Tal que así:
Cargamos el layout "normal" y ya vemos lo cambios.
- Líneas rojas: delimitan los límites del asfalto para la IA. Por eso era importante cargar solo el asfalto de la trazada y del pitlane.
- Línea azul: indica a la IA por dónde deben ir para entrar y salir de boxes.
- Línea morada: indica a la IA por dónde deben ir en carrera. Además más adelante la usaremos para crear las cámaras de repetición, importantísima.
- Flechas en el suelo: representación visual de la trazada de la línea morada.
Ahora solo queda abrir el models.ini del layout "normal" y que los párrafos estén secuenciados correctamente otra vez.
Prueba ingame de que todo está correcto.
Repetimos el proceso pero con el layout "reverse". Como ya tenemos activadas las herramientas de desarrollador ese paso nos lo saltamos. El resto del proceso es igual, pero corriendo en el otro sentido.
Por último quitamos el menú para grabar AI de la pantalla. Tan simple como volver a pinchar en el icono de AI en el menú de apps.
Al hacerlo tampoco podremos ver las líneas, pero siguen ahí, invisibles. Hora de hacer una carrera con adversarios, primero con un layout y luego con el otro.
Todo va perfecto, genial. Otra cosa más hecha.
Con la pista subdividida en varios archivos .kn5 ahora es cuando podemos hacer los layouts (si queremos, hay pistas con un solo layout) y la IA (una IA por cada layout).
Hasta ahora nuestra pista solo tiene un posible recorrido (un solo layout). Para las pistas con un único layout la estructura es esta:
Así es como tengo mi proyecto en estos momentos. Sin embargo para tener dos layouts en una sola pista (recorrido hacia adelante y recorrido hacia atrás) hay que ir cambiando y reorganizando la estructura de la pista de esta manera:
Si examinas las imágenes anteriores verás que solo se trata de alterar un poco los directorios, duplicar ciertos directorios y archivos para crear el segundo layout, cambiar nombres de esos archivos y directorios duplicados, y luego darle un nombre distinto a cada layout en los archivos ui_track.json para que en el menú del juego podamos escoger una trazada u otra. Prueba en el juego:
Ahí está. Solo hay una pista, pero aparecen dos posibles recorridos para la misma. Normal (sentido de las agujas del reloj) y Reverse (sentido contrario).
Cargamos cada una de las opciones, para comprobar que está todo perfecto, que funciona. El coche aparecerá en ambos layouts en la misma posición, pues aún no hemos tocado esa parte.
Bien, como funciona ahora toca mover la posición de los coches en boxes, en parrilla, los marcadores start / finish, etc, solo para el layout de reverse. Para ello tenemos que:
- Duplicar el archivo de posiciones kotarr_dummies_pos_norm.fbx y su .fbx.ini asociado, renombrándolos como kotarr_dummies_pos_rev.fbx y kotarr_dummies_pos_rev.fbx.ini respectivamente.
- Cargar el archivo kotarr_dummies_pos_rev.fbx en 3dSimEd.
- Añadirle el asfalto principal y el pitlane para tener referencias visuales.
- Mover los objetos marcadores hasta las posiciones deseadas.
- Una vez dejado todo como queremos, eliminar el asfalto principal y el pitlane.
- Exportar como kotarr_dummies_pos_rev.fbx, sobreescribiendo archivos existentes.
- Importar kotarr_dummies_pos_rev.fbx en el ksEditor y exportarlo como un nuevo archivo: sc_kotarr_dummies_pos_rev.kn5
- Editar el models.ini correspondiente al layout de reverse, y cambiar sc_kotarr_dummies_pos_norm.kn5 por sc_kotarr_dummies_pos_rev.kn5
- Hacer la prueba ingame.
Recordemos que es muy importante tanto orientar los marcadores hacia el lado correcto, como colocarlos en la posición correcta (start izquierdo debe estar en start izquierdo, el derecho en el derecho, etc). También que siguiendo la trazada vayan en el orden correcto: checkpoint 1 antes que checkpoint 2. No es solo "girar el marcador" y ya está. Si nos equivocamos en esto a la hora de hacer la inteligencia artificial será imposible hacerla bien.
El proceso en imágenes.
Siguiente paso, crear la inteligencia artificial. Recordemos que ahora tenemos dos pistas en una, por lo tanto crearemos dos inteligencias artificiales, una para cada trazada.
Aquí vamos a ver la importancia de subdividir la pista . Abrimos el archivo models.ini que corresponde al layout "normal". Vamos a reordenar todos los párrafos de tal manera que el orden de carga de archivos sea el siguiente:
1- trazada de asfalto principal.
2- pitlane.
3- marcadores de posición.
4- resto de asfalto.
5- terreno.
Salvamos cambios. Y ahora vamos a forzar un fallo en la carga de archivos. Como ya dije la numeración de los modelos deben ser secuencial. Si cambiamos la numeración de los últimos dos párrafos por una no consecutiva no se cargarán. El models.ini lo dejo así:
Siguiente paso. Si no lo hemos hecho ya, hay que habilitar las herramientas de desarrollador que incluye Assetto Corsa. Para eso nos vamos a [directorio del juego] / system / cfg, abrimos el archivo assetto_corsa.ini y buscamos la línea ENABLE_DEV_APPS, cambiando el valor de 0 a 1. Guardamos cambios.
Ejecutamos el juego y cargamos el layout "normal" de nuestra pista. Vamos a ver dos cambios inmediatos: solo veremos el asfalto de la trazada principal y del pitlane, y si desplegamos el menú de las aplicaciones veremos que ahora tenemos un apartado dedicado a las aplicaciones de desarrollador.
Ejecutamos la herramienta AI, que es la que nos permitirá crear la inteligencia artificial.
Primero debemos empezar a grabar desde el pitlane, pulsando el botón "empezar en pits". Dar una vuelta completa, volviendo al punto de boxes.
No tenemos que ir rápido, de hecho es aconsejable ir despacio, pero no debemos salirnos de la pista en ningún momento, esto es muy importante. Si te sales empieza desde cero, cancela partida y vuelve a cargar el layout.
Una vez regresado a boxes pulsamos en "grabando" para parar de grabar y en "GUARDAR IA" para salvar el recorrido realizado. Ahora ponemos el coche en la pista principal, antes de la línea de meta, para empezar a grabar la trazada de la carrera.
Pulsamos en el botón "empezar a grabar" de arriba. Una vez pulsado parpadeará en rojo con la leyenda "grabando" este botón no tiene "stop", seguirá grabando continuamente, por eso es muy importante grabar primero la trazada a boxes. Podemos dar todas las vueltas al circuito que queramos hasta hacer la trazada que más nos guste, solo se grabará la última.
Una vez que completemos una vuelta veremos una línea azul sobre el asfalto. Esa línea representa la trazada de la vuelta que hemos dado para los pits.
Y las vueltas que demos grabando esta trazada se representarán por una línea morada, esta línea solo es de la última vuelta.
Cuando hayamos dado la vuelta perfecta tras cruzar la meta, pulsamos el botón "GUARDAR IA" y cerramos la partida. Seguramente tardará un poco más de lo normal en volver al menú principal, eso es porque está generando la IA de este layout.
Cerramos partida pero no el juego, podemos dejarlo ejecutado en segundo plano. Nos vamos a la capeta de nuestra pista y entramos en el layout y su carpeta ai. En este caso sc_kotarr / sc_kotar_norm / ai, y veremos que se han generado dos archivos.
pit_lane.ai.candidate es la grabación de la vuelta que dimos desde boxes.
fast_lane.ai.candidate es la grabación de la última vuelta que dimos a la pista, sin los boxes.
Hay que renombrar ambos archivos, eliminando la extensión .candidate. Tal que así:
Cargamos el layout "normal" y ya vemos lo cambios.
- Líneas rojas: delimitan los límites del asfalto para la IA. Por eso era importante cargar solo el asfalto de la trazada y del pitlane.
- Línea azul: indica a la IA por dónde deben ir para entrar y salir de boxes.
- Línea morada: indica a la IA por dónde deben ir en carrera. Además más adelante la usaremos para crear las cámaras de repetición, importantísima.
- Flechas en el suelo: representación visual de la trazada de la línea morada.
Ahora solo queda abrir el models.ini del layout "normal" y que los párrafos estén secuenciados correctamente otra vez.
Prueba ingame de que todo está correcto.
Repetimos el proceso pero con el layout "reverse". Como ya tenemos activadas las herramientas de desarrollador ese paso nos lo saltamos. El resto del proceso es igual, pero corriendo en el otro sentido.
Por último quitamos el menú para grabar AI de la pantalla. Tan simple como volver a pinchar en el icono de AI en el menú de apps.
Al hacerlo tampoco podremos ver las líneas, pero siguen ahí, invisibles. Hora de hacer una carrera con adversarios, primero con un layout y luego con el otro.
Todo va perfecto, genial. Otra cosa más hecha.