Calificación:
  • 4 voto(s) - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Diseñando una pista en 3D [+Assetto Corsa +mods +tutorial +hilo de seguimiento]
Buenos días a todos.

Hace unas pocas semanas he terminado dos pistas: Circuito de Choqueiro y Circuito de Jarama.

Las puse de pago (3 euros, de los cuales me quedo euro y medio, el resto se van en comisiones e impuestos). Pero se ve que a nadie le interesa pagar por contenido, aunque sea de calidad y lleve un cojón y parte del otro de trabajo. He recaudado 18 euros en total (brutos). Así pues en las próximas semanas las voy a liberar y dejarlas gratis para todo el mundo.

Os dejo los vídeos de las dos pistas.





Las dos pistas incluyen modo noche, iluminación de farolas, coches aparcados y demás, sonidos ambientales y modo lluvia. También incluyen varios layouts, inteligencia artificial para correr contra adversarios, etc. El Choqueiro está terminado, al Jarama le quiero hacer un par de modificaciones más antes de hacerla pública.

El primer vídeo además incluye instrucciones detalladas sobre cómo instalar un mod para Assetto Corsa. Ambas están hechas con el programa Race Track Builder v14.0.0, que es muy superior al Bob's Track Builder. Seguramente cuando empiece una nueva pista actualice este tema y haga un tutorial sobre cómo usarlo (ya había empezado Kotarr pero tuve que formatear y la perdí, así que más adelante la empezaré de nuevo).

También voy a liberar el Seat 127 de los vídeos. De momento tengo cuatro versiones terminadas: 127 CL, 127 CLX (3 puertas), 127 Abarth (réplica del mío real) y 127 Rallye. Mi intención es, como mínimo, añadir el 127 Grupo 2 y el 127 Grupo 5. También las versiones FIAT. Para esto aún falta, pero cuando esté listo haré vídeo y lo dejaré por aquí con el link de descarga.

Por último decir que estoy rehaciendo completamente la pista de Coruña con el Race Track Builder. Esta sí que va a tardar en estar terminada (mucho, hacer edificios es muchísimo trabajo). Pero cuando esté la conversión hecha dejaré también el link de descarga por aquí, para quien interese. Luego iré subiendo los updates, como ya venía haciendo habitualmente antes.

Lo dicho, mi próximo post en este tema será para poneros los links de descarga del Choqueiro y el Jarama.

Saludos para todos.
Responder
(26-04-2022, 21:27)Alberto_92 escribió: Joder, tiene mucho mérito.

Gracias hombre. De verdad que se agradece.

Creé este hilo a modo de tutorial por si la gente se animaba a hacer sus pinitos. Probablemente sea el hilo en español con más información sobre modding de Assetto. Salvo que haya algo mejor en FC, que no lo sé, no estoy registrado.

¿Cuánto tiempo llevaba sin más respuestas que las mías? ¿Un años? ¿Dos?

¿Le importa a alguien Elrisas ?

Lo mismo que el tuto que hice para crear vídeos. Lo mismo que lo del canal de MotorFAQ. Todo para darle publicidad y movimiento al foro. Todo olvidado y sin utilidad.

Pero el problema es que se haya registrado Roads, que MotorHooligan comparta sus pensamientos o que yo ponga a parir el gobierno. Los problemas somos nosotros que la liamos y no creamos contenido, o al menos lo intentamos Elrisas .

Así que por mi como si mañana chapan el foro.

En fin. De verdad que gracias, el curro de este hilo solo lo sé yo, se agradece que alguien deje una palabra bonita.

Saludos para todos.
Responder
(26-04-2022, 23:43)Alberto_92 escribió: Pues me quedé bastante corto ya que se iba a montar en ese momento un cliente y puse lo más rápido posible el comentario.

Ya te digo, para hacer lo que has hecho es por qué tienes un nivel muy alto.

Yo al que estuve picado muchos años es a otro simulador, completamente diferente, pero muy realista, el City Car Driving.

Te suena?? Es un simulador de conducción realista; algunas situaciones las he solventado bien en parte a muchas horas de ese simulador. Es una ciudad con su parte urbana, circunvalación, carreteras de montaña... todo muy real. Vamos, que no es el típico simulador de autoescuela.

De hecho en ese simulador lo que se hacía y se seguirá haciendo son mods de los coches. Y es acojonante al nivel de detalle (sobretodo interior)

Sí, el City Car Driving es muy famoso. Aunque yo lo pillé cuando empezaba y estaba bastante en pañales. Me acuerdo que había que quitar el freno de mano, usar los intermitentes y esas cosas. Lo utilicé de referencia cuando monté el cockpit, para ver qué tal.

Tal vez cuando acabe mis proyectos de Assetto le eche un vistazo, a ver cómo van.

Saludos para todos.
Responder
Como dije hace unos días estoy rehaciendo la pista de Coruña usando Race Track Builder.

Es increíble lo bien que trabaja este programa. En unas semanas he "trasladado" y mejorado lo ya hecho durante los últimos años. Además he creado dos tres edificios más desde cero. Resumiendo, avanzo muy rápido, pronto alcanzaré el punto donde lo había dejado con el otro programa.

Os dejo unas capturas y las explicaciones oportunas.

[Imagen: j8wget0.jpg]

[Imagen: Xyo3rdZ.jpg]

Lo primero, la zona de boxes ha sido modificada. Siguiendo la trayectoria de la primera imagen, si sigues las flechas del suelo (girando a la derecha) sigues carrera. Si sigues recto entras en la zona de boxes, saliendo de nuevo a carrera por donde las flechas luminosas.

[Imagen: aa6VnTO.jpg]

Vista general de lo que tengo prácticamente terminado.

[Imagen: lNn1N8z.jpg]

La pista de fútbol, terminada.

[Imagen: xvXy98J.jpg]

[Imagen: zr9AEEH.jpg]

El escenario lo he movido justo al lado de la pista de fútbol. También terminado y con todo funcionando (música, animaciones de luces, etc).

[Imagen: Il0NXD3.jpg]

[Imagen: 5JANCEr.jpg]

[Imagen: rE7plrL.jpg]

La gasolinera, terminada. Con los coches aparcados.

[Imagen: SK6uhm6.jpg]

[Imagen: UDpAnw4.jpg]

Nuevo edificio, terminado.

[Imagen: lQSLWr2.jpg]

[Imagen: 8UaeRhL.jpg]

[Imagen: VcRJ1C1.jpg]

Las dos torres contiguas, prácticamente terminadas (falta rematar los bajos comerciales, poner farolas y terminar césped).

[Imagen: FL6EKaq.jpg]

[Imagen: dEuFiSI.jpg]

Las líneas de asfalto de toda esa zona, terminadas. Las texturas del asfalto son provisionales, igual que las del césped. Añadido césped 3D en esa zona y terminado. También he añadido elementos que se pueden "atropellar" (los bancos de madera por ejemplo, los golpeas y salen despedidos).

Modo noche funcionando, iluminación de carteles y farolas funcionando, modo lluvia funcionando.

Dejo las coordenadas gps de google earth por si a alguien le apetece curiosear el lugar real. No seáis muy duros por favor, esto es... jodido de hacer no, lo siguiente. https://www.google.com/maps/@43.3465126,...384!8i8192

Luego hay cosas cambiadas. Los bajos comerciales, he puesto los negocios que me ha dado la gana (y seguiré haciéndolo Sisi1 ). Y la gasolinera, pues ahí hay un túnel de lavado. Son cambios "a mi gusto" ya que, como siempre, las ciudades cambian y para matarme a hacer algo y que luego cuando publique ya no esté, prefiero poner lo que me apetezca.

Y de momento hasta aquí. Si puedo el lunes lo retomo.

Saludos para todos.
Responder
Sin duda, un trabajo de horas y horas el que estás haciendo por amor al arte. Tiene que ser una pasada poder estar en tu ciudad en el entorno de un videojuego, y más habiéndolo modelado tú. Sin duda, para quitarse el sombrero Number1
Responder
(09-05-2022, 09:05)joschelito escribió: Sin duda, un trabajo de horas y horas el que estás haciendo por amor al arte. Tiene que ser una pasada poder estar en tu ciudad en el entorno de un videojuego, y más habiéndolo modelado tú. Sin duda, para quitarse el sombrero Number1

Muchas gracias. La verdad es que es satisfactorio y frustrante a partes iguales. Es divertido correr con tus amigos y echarte unas risas, y es satisfactorio el reconocimiento de éstos, pero es un trabajo árduo y lento.

Los coches aparcados provienen de mods antiguos que hice para las series Need for Speed. Son coches que tuvieron amigos miós o que tuve yo. Y bueno, es un detalle que les gusta por las aventuras vividas.

Me alegra que te guste, saludos para todos.
Responder
No suelo escribir mucho, pero suelo entrar al foro a leer casi todos los dias. Acabo de volver a entrar en la seccion de juegos y he visto que habias actualizado el hilo.

Tengo que felicitarte por el trabajazo que has hecho y estas haciendo y sobretodo por sacar tiempo para compartirlo por aqui con nosotros. Muchas gracias!
Responder
(12-05-2022, 14:54)davidgl escribió: No suelo escribir mucho, pero suelo entrar al foro a leer casi todos los dias. Acabo de volver a entrar en la seccion de juegos y he visto que habias actualizado el hilo.

Tengo que felicitarte por el trabajazo que has hecho y estas haciendo y sobretodo por sacar tiempo para compartirlo por aqui con nosotros. Muchas gracias!

Muchas gracias.

Aquí sigo delante del PC, pero esto va lento. De la pista urbana tengo casi terminados los bloques 1, 2 y 3. También he terminado ya la inteligencia artificial, ahora va correctamente, antes se piraban los adversarios por ahí. Aún le queda un poco para poder subirla pero al menos ya he alcanzado lo que ya tenía hecho, y lo he mejorado.

Cuando considere que esté lista para compartir os la dejo por aquí junto con las otras cosas (coches, otras pistas, etc).

Saludos para todos.
Responder
Bueno, pues a pesar de que aún no he terminado mis proyectos, y por lo tanto no puedo actualizar para compartir con vosotros los mods, voy a continuar con algunas cosas del tutorial.

Queda pendiente hacer tutos de cómo hacer luces ambientales, cómo hacer efecto de lluvia en la pista (suelo, paredes, etc) y cómo hacer las cámaras de repetición. También cómo se utiliza el Race Track Builder, mucho más sencillo de usar que el Bob's Track Builder y con infinitos mejores resultados.

Mi idea es enseñar a hacer todo esto cuando empiece una nueva pista, pues las que estoy haciendo ya tienen estas partes hechas. Así que hoy me voy a centrar en "miscelánea", un conjunto de cosas generales que nos pueden ayudar a dejar el juego a nuestro gusto.


Miscelánea: cositas y truquitos que mejoran nuestra experiencia en Assetto Corsa



Nombres de los rivales en pista

Una de las cosas que me han llamado la atención en muy pocos vídeos es que algunas veces en la carrera encima de cada coche se podía ver el nombre del rival y su nacionalidad. Al estilo de partida online, pero sin conectarse a la red. Me parecía curioso y le daba un toque más actual. Os dejo cómo hacerlo.

Lo primero, tenemos que ir a la carpeta donde está salvada nuestra partida. En la imagen podéis ver que está localizada en el directorio Documentos / Assetto Corsa / cfg.

[Imagen: IWkY4kq.png]

Abrimos el archivo gameplay.ini y buscamos la línea [DRIVER_NAME_DISPLAYER], y cambiamos el estado IS_ACTIVE de 0 a 1.

[Imagen: Mpw8lyW.png]

Salvamos cambios y la próxima vez que iniciemos carrera el juego mostrará los nombres y la nacionalidad de los rivales. Si queremos revertirlo cambiamos de nuevo de 1 a 0, salvamos y listo.

[Imagen: SoDLMci.png]


Desactivar mensaje "Steering wheel is not centered"

Ya que estamos con el gameplay.ini abierto también podemos desactivar este molesto mensaje, que sale cada vez que movemos el volante antes de que el semáforo de pista se ponga en verde. Buscamos [STEERING_CENTERED_NOTIFICATION] y cambiamos el valor de ACTIVE a 0.

[Imagen: 0wql4UA.png]

Salvamos cambios y al iniciar partida ya no volverá a salir el molesto mensaje.

[Imagen: OyIIx6C.png]

Seguiré añadiendo más cosas a esta sección según las vaya descubriendo. Saludos para todos.
Responder
Crear nuevos eventos en el Modo Historia

Assetto Corsa nos permite también crear nuevos eventos, tanto para el Modo Historia como para la sección de Eventos Especiales. Vamos a empezar primero creando un nuevo nivel que contiene pruebas ajenas al progreso del campeonato.


Parte 1: nuevos eventos en el Modo Historia pero sin integrar en el campeonato.


1- Desbloquear todos los niveles en el Modo Historia

Nos vamos a la carpeta Documentos / Assetto Corsa, pero ahora vamos a ir al subdirectorio launcherdata / filestore, donde vamos a abrir el archivo Carreer.ini con el bloc de notas, Wordpad o similar. Ahí copiamos lo que va después del "igual" en la línea INSTALLED y la pegamos después del "igual" de la línea COMPLETE, de tal forma que se vean las dos iguales.

[Imagen: OaOxtG7.png]

Y en CURRENT_SERIES podemos poner la última (serie 100), que sería el final del juego. O la que queramos. Debe quedar así:

[Imagen: mZuYUNe.png]

Con esto habremos desbloqueado todo (que no completado, dentro de cada nivel las pruebas estarán sin hacer y sin puntuar, pero podremos ver de qué va cada una).

[Imagen: jCcZe1q.png]

Como podéis ver en la imagen de arriba tengo cero eventos completados (he creado una partida limpia desde cero para hacer esto), pero están todos los niveles desbloqueados.

La finalidad de esto es poder acceder a todas las partes del Modo Historia para testear los nuevos niveles y pruebas que vayamos añadiendo.


2- Creación de nuevos eventos para el Modo Historia

La idea es crearlos con mods de coches y pistas, de tal forma que queden integrados y perfectamente funcionales en el Modo Historia. Como si, en vez de ser mods, fuesen originales del juego.

¿Dónde se encuentran los eventos del Modo Historia? Tenemos que ir a [Nuestra carpeta del juego] / content / carreer . Ahí se encuentran todos los niveles del Modo Historia. Cada carpeta con el nombre "series" indica un nivel, siendo el 0 la presentación del Modo Historia y el 1 la primera carrera, siguiendo hasta el 28 y habiendo un salto desde este hasta el 100 (siendo 100 el final del juego).

Supongo que todos los números que faltan es para añadir nuevos niveles de DLCs, por lo que en mi caso voy a crear un nuevo evento con el número 10001, con este número aparecerá en el menú de niveles al final de todo. He puesto un número tan alto para no interferir con otros posibles mods de eventos o DLCs (hay mods que reescriben completamente todo el modo historia).

Simplemente creo una carpeta llamada series10001.

[Imagen: fCrom7v.png]

En su interior voy a copiar el contenido de la carpeta series1, quedando mi carpeta de esta manera:

[Imagen: yCOm2Kk.png]

Bueno, en realidad no he copiado todo porque para hacer la prueba solo voy a utilizar dos eventos, de ahí que solo haya las carpetas event1 y event2 mientras que dentro de series1 hay hasta event5. Vamos con los primeros archivos.

Start.png es la imagen que se verá al acceder por primera vez al nivel, podemos reemplazarla por la que queramos siempre que tenga el mismo nombre, las mismas dimensiones (1240x560 píxeles) y el mismo formato de archivo (png).

Start.ogv es el vídeo de presentación que se verá al acceder por primera vez al nivel, podemos reemplazarlo por el que queramos siempre que tenga el mismo nombre, las mismas dimensiones (1920x1080 píxeles) y el mismo formato de archivo (ogv).

El vídeo no es imprescindible, muchos niveles no tienen vídeo, podemos eliminarlo si queremos. De momento, a la espera de hacer un vídeo decente para la intro, dejaré este sin tocarlo.

Preview.png es la imagen del nivel en el menú de selección, podemos reemplazarla por la que queramos siempre que tenga el mismo nombre, las mismas dimensiones (206x206 píxeles) y el mismo formato de archivo (png).

Tanto para start.png como para preview.png lo que voy a hacer es utilizar la imagen del primer skin del coche del mod.

Bien, empezamos a editar. Abrimos el archivo series.ini y cambiamos al gusto los parámetros. Este nivel va a estar dedicado a mi mod del SEAT 127 segunda serie, que es el que voy a usar como ejemplo, y mi pista del Choqueiro, pero vosotros podéis poner lo que os de la gana. Parámetros a editar:

[SERIES]
CODE= nombre que aparecerá en la pantalla general de todos los niveles (corto y en mayúsculas). Puede dejarse en blanco si se desea.
NAME= nombre completo del nivel. Puede ser algo más largo que CODE pero no mucho más.
DESCRIPTION= descripción que aparecerá al desbloquear el nivel (en inglés) cuyos párrafos estarán separados por el código <br/><br/> . Se puede dejar en blanco si se desea.
DESCRIPTION_IT= descripción que aparecerá al desbloquear el nivel (en italiano) cuyos párrafos estarán separados por el código <br/><br/> . Se puede dejar en blanco si se desea.
REQUIRES= requisitos de nivel logrado para desbloquear este nivel (dejar en blanco si no se requiere nivel).
POINTS= puntos que logras al desbloquear este nivel (poner 0 si no se logra ningún punto).
MODEL= nombre de la carpeta del coche que vas a conducir en este nivel.

Después de hacer los cambios en series.ini mi nuevo nivel queda así:

[Imagen: kIjf2HY.png]

También podemos trabajar en el archivo opponents.ini, que viene a ser el nombre "aleatorio" de los pilotos utilizados por la inteligencia artificial en este nivel y el coche que utiliza cada piloto (todo esto solo en el caso de que no se especifiquen en el evento).

[AI...]
NAME= nombre del piloto.
CAR= carpeta del coche que utiliza el piloto.
SKIN= nombre del skin del coche del piloto (poner nombre de la carpeta del skin que queramos utilizar para este piloto).
LEVEL= nivel de habilidad de la inteligencia artificial (de 1 a 100, siendo lo normal por encima de 90).
MODEL_CONFIG= dejar en blanco si el coche del piloto no tiene mejoras, o si las tiene pero no las va a utilizar.

El archivo opponents.ini de mi nuevo nivel queda así:

[Imagen: 5xrn5i3.png]

Bien, vamos con los eventos. Abrimos la carpeta event1 y ahí tenemos dos archivos: event.ini (configuración del evento) y preview.png (vista previa del evento, 250x150 píxeles). La imagen podemos reemplazarla por cualquiera, siempre que tenga el mismo nombre, mismas dimensiones y mismo formato. Para preview.png utilizo una captura en partida del coche del mod, y listo.

Vamos con el archivo event.ini, que es lo realmente importante. Hay varios tipos de pruebas (práctica, calificación, carrera, time attack, drift y drag), tenemos que editar este archivo según la prueba que vayamos a realizar. En este caso es una prueba de time attack, así que si tenemos alguna duda en algún parámetro solo tenemos que buscar otra prueba del juego de time attack y comparar valores. Dejo por aquí las cosas que creo más importantes.

[EVENT]
NAME= nombre del evento que queramos que aparezca (en inglés)
DESCRIPTION= descripción del evento que queramos que aparezca (en inglés), podemos dejarlo en blanco si así lo deseamos.
DESCRIPTION_IT= descripción del evento que queramos que aparezca (en italiano), podemos dejarlo en blanco si así lo deseamos.

[RACE]
TRACK= nombre de la carpeta de la pista.
CONFIG_TRACK= si la pista tiene varias rutas posibles (layout), nombre de la carpeta de ese layout.
RACE_LAPS= número de vueltas (de 1 hasta donde queramos).
PENALTIES= penalizaciones (0 desactivadas, 1 activadas).
DRIFT_MODE= 0 desactivado, 1 activado.
FIXED_SETUP= 0 ni idea de qué es esto, valor por defecto 0, no lo he tocado.
MODEL= nombre de la carpeta del coche que el jugador va a utilizar en este evento.
MODEL_CONFIG= dejar en blanco si el coche del piloto no tiene mejoras, o si las tiene pero no las va a utilizar.
CARS= número de coches, depende del evento. Este evento es time attack, así que 1.
AI_LEVEL= depende del evento, en este no hay rivales, lo dejo en 100

[GHOST_CAR]
Este evento es time attack, lo dejo desactivado que es como viene por defecto y no toco ningún valor.

[LIGHTING]
TIME_MULT= velocidad del tiempo, 1 es el valor por defecto. Útil por ejemplo para cuando queremos hacer un ciclo de 24 horas (carrera de resistencia de 24 horas por ejemplo) en un tiempo muy inferior (el que queramos). Si por ejemplo ponemos 24, en 60 minutos de partida el tiempo del juego completará 1 día entero. Si ponemos 240, en 6 minutos el tiempo del juego completará 1 día entero.

Por ejemplo, para hacer una carrera de 6 horas, pero que transcurra en 15 minutos: 240/6h=40. Es decir, 6 horas del juego pasará en 6 minutos de partida. Luego aplicamos una regla de 3 básica: si 6 minutos da valor 40, entonces 15 da valor X. X=(15*40)/6. X=100. Poniendo el valor 100 tendríamos una carrera de 15 minutos donde en el juego transcurrirían 6 horas.

Es fácil de calcular.

SUN_ANGLE= valor que indica el ángulo de posición del sol. Determina la hora de la carrera. Empieza en -80 (las 8 h de la mañana) y termina en 64 (las 17 h de la tarde), teniendo cada hora un valor de +16. Ejemplos: 64 +16 = 80 (18 h de la tarde); 80 + 16 = 96 (19 h de la tarde); etc. Utilizándolo conjuntamente con TIME_MULT podemos hacer, por ejemplo, que una carrera de 6 horas empiece a las 15 de la tarde y finalice a las 21 horas, empezando con sol y finalizando de noche, encendiéndose las luces del circuito automáticamente, y durando la partida solo 15 minutos.

CLOUD_SPEED= velocidad de las nubes del cielo.

[SESSION_0]
NAME= nombre del evento, le he puesto simplemente Time Attack.
TYPE= valor del 1 al 7 (1 práctica, 2 calificación, 3 carrera, 4 hot lap, 5 time attack, 6 drift y 7 drag).
DURATION_MINUTES= valor de duración del evento, se activa automáticamente si fuese un evento de tiempo determinado (calificación por ejemplo), en los demás queda sin efecto.
SPAWN_SET= punto de inicio de la prueba, START, PIT o HOT_LAP.

Coche del jugador, no tocar nada salvo el skin, poner el nombre de la carpeta del skin a utilizar:

[CAR_0]
SETUP=
MODEL=-
SKIN=01
DRIVER_NAME=
NATIONALITY=
MODEL_CONFIG=

Coches de los adversarios (inteligencia artificial): en este caso no hay por ser time attack.

Recompensas. En este caso al ser time attack tiene al final del documento las siguientes recompensas:

[CONDITION_0]
TYPE=POINTS ; TIME / POINTS / POSITION / AI
OBJECTIVE=200

[CONDITION_1]
TYPE=POINTS ; TIME / POINTS / POSITION / AI
OBJECTIVE=1500

[CONDITION_2]
TYPE=POINTS ; TIME / POINTS / POSITION / AI
OBJECTIVE=2500

Condition 0 = medalla de bronce al conseguir 200 puntos en Time Attack.
Condition 1 = medalla de plata al conseguir 1500 puntos en Time Attack.
Condition 2 = medalla de oro al conseguir 2500 puntos en Time Attack.

Como ya habrás deducido TYPE es en función de la prueba a realizar, al igual que OBJECTIVE. Con lo cual si la prueba fuese carrera habría que poner cosas distintas.

Y una vez terminado, mi documento event.ini queda tal que así:

[Imagen: RnOGglJ.png]

Voy con el segundo evento. Entro en la carpeta event2 y repito la operación: edito todo lo necesario, fijándome si hiciera falta en otros eventos que ya trae el juego, salvo cambios, etc. En este caso es una carrera con oponentes, así que hay algunas diferencias con respecto al anterior evento.

[RACE]
TRACK=sc_choqueiro
CONFIG_TRACK=sc_choqueiro_resistencia_rev
MODEL=sc_seat127_79_abarth
MODEL_CONFIG=
CARS= al ser una carrera con rivales debemos de poner más de 1 (ojo, para poner el número total hay que contar el jugador más los adversarios, y siempre sin rebasar el número máximo de pits de la pista). En este caso jugador + 7 rivales = 8 es la cifra a poner.
AI_LEVEL=90
DRIFT_MODE=0
RACE_LAPS= número de vueltas que queremos que dure la carrera.
FIXED_SETUP=0
PENALTIES=0

[SESSION_0]
STARTING_POSITION= posición en la parrilla para el jugador.
NAME= nombre del evento, en este caso es Race.
TYPE= valor del 1 al 7 (1 práctica, 2 clasificación, 3 carrera, 4 hot lap, 5 time attack, 6 drift y 7 drag).
LAPS= número de vueltas de la carrera.
DURATION_MINUTES= inactivo en este caso.
SPAWN_SET= punto de partida (START, PIT o HOT_LAP), en este caso corresponde START.

Coche del jugador (poner tal cual salvo lo remarcado):

[CAR_0]
SETUP=
MODEL=-
SKIN=default
DRIVER_NAME=
NATIONALITY=
NATION_CODE= nacionalidad que aparecerá en carrera, ESP para España
MODEL_CONFIG=

Coches de los adversarios (inteligencia artificial): en este caso hay siete.

[CAR_...]
MODEL= carpeta del modelo de coche que queremos que use el rival, no tiene que ser el mismo que el del jugador.
MODEL_CONFIG= dejar en blanco si el coche del rival no tiene mejoras, o si las tiene pero no las va a utilizar.
SETUP= no comprobado, setup de carreras específico para un coche y una pista concretos, en este caso queda en blanco.
AI_LEVEL= nivel de la inteligencia artificial, de 1 a 100, recomendable por encima de 90.
SKIN= nombre del skin del coche del rival (poner nombre de la carpeta del skin que queramos utilizar).
DRIVER_NAME= nombre del rival, el que quieras.
NATIONALITY= nacionalidad del rival
NATION_CODE= siglas de la nacionalidad del rival

Así que tras trastear un poco mi archivo queda así:

[Imagen: bzdB8A2.png]

Bueno, he terminado de hacer la primera prueba. Salvo cambios y hago el primer testeo en el juego.

[Imagen: wg3Qogb.png]

Dado que es una partida desde cero se inicia la primera introducción (carpeta series0), puedo saltarla usando la tecla ESC.

Me voy al final de la lista de niveles y aquí está el nuevo nivel "Extra" que he creado. Recordemos que si no nos gusta cómo han quedado las imágenes de presentación siempre podemos volver a cambiarlas, también podemos cambiar el nombre, la descripción, etc.

[Imagen: HcvCoUG.png]

Según entro en el nivel se inicia el vídeo del nuevo nivel. Como digo aún no lo he cambiado, así que se ve el Fiat 500 Abarth.

[Imagen: NM1Y1Yp.png]

Acabado el vídeo se inicia la introducción del nuevo nivel.

[Imagen: lDNGMpt.png]

Inicio el nivel y efectivamente, aquí se ven los dos eventos.

[Imagen: TSeQsKc.png]

Así que inicio el primer evento y compruebo si funciona correctamente.

[Imagen: 0V6OfGr.png]

[Imagen: YcqblZ6.png]

[Imagen: 2RvsKxV.png]

[Imagen: 7fdQuQH.png]

[Imagen: QBL1bn9.png]

Va perfecto. Inicia como debe, donde debe, al nivel que debe, en la hora que debe (aunque en el menú aparece las 08:00h porque solo muestra de 8 a 18, en realidad la hora sería algo más de las 19 h, ya que quería una carrera de noche y con las luces de la pista encendidas automáticamente)... incluso al finalizar la prueba añade los trofeos correctamente. Simplemente genial. Así que toca probar el segundo evento.

[Imagen: vPfstXV.png]

[Imagen: 23we8mU.png]

[Imagen: hOqJOh8.png]

[Imagen: WS83UaC.png]

[Imagen: 6t2h7FP.png]

[Imagen: IXo9Rr1.png]

Igual que el primer evento, va perfecto. Incluso aparecen los nombres que elegí con las banderas de la nacionalidad Elrisas Elrisas Elrisas .

Siguiente paso, modificar el evento 2 de tal forma que haya dos carreras, la primera de clasificación, y la segunda de carrera real. Así que vuelvo a la carpeta event2 y abro el archivo event.ini. Lo primero es duplicar el párrafo [SESSION_0], cambiando el 0 por un 1. Lo que va a hacer es encadenar una carrera con otra. Lo siguiente es hacer las siguientes modificaciones:

[SESSION_0]
STARTING_POSITION= 8 (eliminar esta línea).
NAME=Qualify
TYPE=2 ;Practice 1, Qualify 2, Race 3, Hotlap 4, TimeAttack 5, Drift 6, Drag 7
LAPS=10 (eliminar esta línea).
DURATION_MINUTES=5 (o el tiempo que queramos que dure la ronda de clasificación).
SPAWN_SET=START ;PIT, START, HOTLAP_START (aquí deberíamos poner PIT, pero en muchísimas pistas la IA no se incorpora bien a pista o directamente no se incorporan, si sabes que va bien pon PIT, si no estás seguro pon START).

[SESSION_1]
STARTING_POSITION= 8 (eliminar esta línea).
NAME=Race
TYPE=3 ;Practice 1, Qualify 2, Race 3, Hotlap 4, TimeAttack 5, Drift 6, Drag 7
LAPS=10 (o las vueltas que queramos).
DURATION_MINUTES=0
SPAWN_SET=START ;PIT, START, HOTLAP_START (la carrera empieza siempre desde START).

Después salvo cambios y mi archivo event.ini de la carpeta event2 queda tal que así:

[Imagen: NQoT9LG.png]

Toca iniciar el juego y ver si los cambios han surtido efecto. Primer cambio: la prueba ya aparece como RACE WEEKEND en el menú.

[Imagen: fV6Hr5H.png]

Iniciamos carrera y tal cual, es una carrera de dos sesiones: clasificación y carrera, donde "carrera" hereda el puesto en el que has quedado en "clasificación".

[Imagen: WLxwQrk.png]

Si durante la carrera de clasificación pulsamos ESC ahora en el menú aparece una nueva opción: la de saltarnos la clasificación e ir directamente a la carrera.

[Imagen: hM463Ei.png]

Siguiente, la carrera de verdad. Empezamos en el puesto que hayamos conseguido en la clasificación.

[Imagen: OAvik0W.png]

Aquí termino carrera con solo una vuelta para comprobar si vuelve correctamente al menú, si aparece la tabla de clasificación, etc.

[Imagen: 0gAUTMW.png]

En fin, que funciona todo correctamente.

Un par de apuntes.

- Aunque definimos el coche del jugador, la pista y los adversarios en este nivel a través de los archivos series.ini y opponents.ini, en realidad podemos poner el coche o la pista que nos de la gana en los archivos event.ini. En el event.ini podemos hacer que en cada evento llevemos un coche distinto, corramos en una pista distinta, los adversarios lleven un coche distinto cada uno, etc. Y recordemos que en este ejemplo solo hemos creado dos eventos, pero podemos añadir todos los que queramos al nivel.

- Por lo que he podido ver, en event.ini podemos crear tres sesiones: [SESSION_0], [SESSION_1] y [SESSION_2]. La 0 en teoría es para práctica, la 1 para clasificación y la 2 para carrera, aunque yo he decidido no poner la práctica e ir directamente a clasificación y carrera. Desconozco si se podrían añadir más sesiones consecutivas ([SESSION_3], [SESSION_4], etc). Es algo que aún no he probado. Pero tampoco tiene mucho sentido añadir más sesiones ya que solo podemos cargar una pista en el archivo event.ini.

- Ya hemos visto la descripción en inglés e italiano, que son las del juego por defecto. ¿Donde se ponen los textos en español? En otro archivo que veremos a continuación.

Nos vamos al directorio del juego system / locales / launcher y ahí encontramos el archivo carreer_es.ini, ése es el archivo del idioma español que debemos editar. Lo abrimos con el bloc de notas o similar.

[Imagen: u5mNhOV.png]

La estructura como podéis ver es muy simple. Así que fijándonos en cómo están escritas las demás líneas añado las mías para la serie 10001 y sus eventos 1 y 2, quedando de esta manera:

[Imagen: EOkes5B.png]

Guardo los cambios, inicio el juego y compruebo que efectivamente aparecen los dos nuevos textos.

[Imagen: IiZdv8m.png]

[Imagen: JPjp9f6.png]

Y listo. Todo funciona correctamente. Pero si curioseamos un poco por ahí podemos encontrar más archivos de texto para el idioma español. Es decir, hay partes del juego que no han sido traducidas y aparecen en inglés. Podemos traducir estas partes que faltan de forma manual editando estos archivos:

[Imagen: c9i2JFc.png]

[Imagen: IaXvrd8.png]

[Imagen: hdzWMDv.png]

Tal vez más adelante haga un parche con solo correcciones del idioma, ya veremos. De momento sigo con esto de añadir nuevos eventos al juego.

¿Y qué pasa si quiero añadir al campeonato eventos de Hot Lap, Drift Race o Drag Race? Pues que puedes Sisi1 Sisi1 Sisi1 . Solo hay que fijarse en otros event.ini que tengan estas pruebas, crear nuevos eventos con los parámetros adecuados, y listo. Al final este nivel de prueba tiene 5 eventos, tal que así:

[Imagen: DPBI6bU.png]

En total la lista de eventos es:
- event1: Time Attack.
- event2: Qualify.
- event3: Hot Lap.
- event4: Drift Race.
- event5: Drag Race.

Para hacer la prueba ni me he molestado en editar imágenes o nombres de la prueba. Tan solo he cambiado el coche a utilizar, la pista en la que correr y en algún caso los trofeos. Prueba en el Asseto:

[Imagen: XrQqZvN.png]

[Imagen: xLTUkL6.png]

En el menú salen las cinco pruebas. Inicio Hot Lap (que es dar vueltas al circuito sin límite de tiempo) para batir mi mejor marca, lo consigo y obtengo el trofeo.

[Imagen: j9YzzRb.png]

Siguiente evento, drift. Ya es jodido hacer drift con un puto SEAT 127 eh Elrisas Elrisas Elrisas Elrisas .

[Imagen: JJzaMB6.png]

[Imagen: HvXZ3AR.png]

[Imagen: gdFpLct.png]

Conseguido también. Por último la carrera de drag. Como Choqueiro no es recta, he decidido poner la pista de drag que ya trae el juego, de 400 metros de longitud.

[Imagen: RUGzVMx.png]

[Imagen: sGAaeEo.png]

[Imagen: jJnw18J.png]

[Imagen: UtWOVwK.png]

Y también logrado. Todo funciona correctamente. Por lo que, a falta de pulir detalles como imágenes o textos, doy por finalizada esta prueba y esta parte.


Parte 2: integrar los nuevos eventos dentro del campeonato del Modo Historia.

Bien, lo más difícil está hecho. Como este nivel aparece de último, pero es un nivel con circuitos pequeños y coches de poca potencia, lo quiero poner al principio del Modo Historia, no al final. De hecho quiero ponerlo justo después de la presentación y antes del nivel de novato 1 (Fiat 500 Abarth).

Bueno, pues resulta que el juego no ordena los niveles por secuencia numérica, sino por secuencia alfanumérica. Así que para la prueba he hecho una copia de la carpeta series10001 (el nivel creado en la parte anterior) y la he renombrado como series0b1, quedando por orden alfanúmerico entre la carpeta series0 (presentación) y series1 (nivel 1 con el Fiat 500 Abarth). Tal que así:

[Imagen: ZKqUoxW.png]

Inicio el juego y me aparece lo siguiente:

[Imagen: hKI69Av.png]

[Imagen: G9L5uv8.png]

[Imagen: sSGyR7k.png]

Vamos, que sí, que el menú del Modo Historia ordena las pruebas por orden alfanumérico. Con lo cual podemos intercalar lo que queramos entre los niveles que queramos.

Ahora, hecho esto, lo que quiero es que para hacer el nivel del Fiat 500 Abarth, primero haya que completar el nivel que acabo de crear. Lo primero es ir a Documents, a la partida salvada, y editar el evento carreer.ini de nuevo, esta vez para borrar todo lo que sigue después de COMPLETE=. De esta manera quedarán todos los niveles bloqueados. También cambiaré CURRENTSERIES= y pondré series0, para reiniciar la partida desde el nivel cero (inicio de todo el Modo Historia). Y después de AI_LEVEL=100 borrar absolutamente todo. Así queda una partida en blanco, sin logros, trofeos, niveles... empezar de cero otra vez. El documento queda así:

[Imagen: YbUUUFz.png]

Por último abro la carpeta series1, que es la del Fiat 500 Abarth. Edito el archivo series.ini y donde pone REQUIRES= añado la carpeta de mi serie, la series0b1.

[Imagen: UMe7qzF.png]

Esto hará que para poder acceder al Fiat 500 Abarth primero haya que completar mi nivel. Enciendo el juego otra vez para probar, a ver qué tal.

[Imagen: Bd0plPV.png]

Y ahí lo tenemos. Inicia el vídeo de presentación y todo eso, como si fuera partida nueva, y aparece mi nivel como el primero y el único desbloqueado.

Si intentamos entrar en el Nivel 1 (Fiat 500 Abarth) nos sale el mensajito de "Required series". O lo que es lo mismo, que hasta que completemos el único nivel desbloqueado (0b1) no nos permite acceder al siguiente nivel. Y efectivamente, al superar el nuevo nivel nos sale este mensaje de advertencia:

[Imagen: zbdzyuJ.png]

Así que todo va perfecto, aquí termina este tutorial cómo agregar nuevos niveles y pruebas al Modo Historia. Ahora que ya tengo el nivel creado integrado dentro del campeonato, puedo borrar la carpeta series10001 y dejar solamente la carpeta series0b1. Ojo, no nos olvidemos de que también hay que modificar el archivo del idioma español, o aparecerán todos los mensajes del nivel en inglés.

De momento lo dejo ahí. Saludos para todos.
Responder
Crear nuevos eventos en el apartado de Eventos Especiales

Bien, ya os he mostrado cómo añadir nuevos niveles y eventos al Modo Historia. Con los Eventos Especiales la mecánica es la misma, pero:

- No podemos agregar niveles, solo eventos que aparecerán en la lista de Eventos Especiales.
- Si os fijáis en el Modo Historia, en el evento que sea, siempre el clima es el mismo: despejado. Pero en los Eventos Especiales podemos cambiarlo y poner el que nos apetezca.

Los archivos de los Eventos Especiales se encuentran en dos directorios:

[nuestra carpeta del juego] / content / specialevents
[nuestra carpeta del juego] / system / data / se


[Imagen: 3PcPneb.png]

Como se puede ver en la primera carpeta cada evento está dentro de una carpeta con la denominación SPECIAL_EVENT_[número], y la segunda carpeta es una especie de sistema de seguridad que contiene archivos con la extensión .acd cuya denominación es la misma: SPECIAL_EVENT_[número]. Este tipo de archivo lo usa Assetto Corsa para evitar que se puedan editar ciertas partes del juego. Lo que hace el juego es comparar si los datos de la carpeta special event coinciden con los del archivo .acd y si no coinciden, el juego se cierra.

El sistema de seguridad de los archivos .acd está bien pero tiene un fallo. Ese archivo se puede sustituir por una carpeta con el mismo contenido. Y el contenido del archivo .acd es el mismo que el de la carpeta special event, con lo cual es tan simple como borrar el archivo .acd y que nos interese y copiar en ese directorio la carpeta del evento especial Sisi1 Sisi1 Sisi1 .

Pero yo no quiero editar los archivos originales del juego. Quiero añadir un nuevo evento.

Así que es sencillo. Creo una carpeta llamada SPECIAL_EVENT_1000 en el primer directorio. Y en su interior coloco el archivo preview.png que me interese (es el que aparecerá en el menú de selección) y un archivo event.ini adecuado al tipo de carrera que quiero hacer.

[Imagen: o3pwilu.png]

Después edito el archivo event.ini añadiendo los siguientes párrafos:

[SPECIAL_EVENT]
GUID= identificador del número de evento, debe coincidir con el número de la carpeta, así que pondré 1000.

[WEATHER]
NAME= identificador del clima, debe ponerse el nombre de la carpeta del clima que queramos para este evento.

[Imagen: mFBdKzO.png]

[Imagen: BM8CABo.png]

Si no sabemos cómo se llama la carpeta del clima, podemos encontrarlos todos en este directorio:

[Imagen: phFCImD.png]

El resto puedo dejarlo igual si no quiero cambiar nada (tipo de carrera, pista, coche, número de oponentes, hora del día y esas cosas). Para hacer una prueba bien me vale.

Bien, todo listo. Ahora copio la carpeta del nuevo evento (SPECIAL_EVENT_1000) en el directorio / system / data / se.

[Imagen: sC0CLbJ.png]

Y se acabó. De esta forma tan absurda es cómo nos saltamos la seguridad de los archivos .acd Sisi1 Sisi1 Sisi1 Sisi1 . Recordemos que si queremos también podemos editar el archivo de idioma español para que aparezcan los textos correctos.

[Imagen: F4ghuEH.png]

Hora de hacer una prueba.

[Imagen: qwBpHe3.png]

[Imagen: YjltFYo.png]

[Imagen: 8Q5ezYx.png]

[Imagen: KqZjDV7.png]

[Imagen: gxTSRVJ.png]

[Imagen: UyXovcA.png]

Se inicia el tipo de carrera indicado, con el clima indicado, a la hora indicada, en la pista indicada, con los adversarios indicados, etc. Cancelo carrera y veo que todo va como debe ir, me devuelve al menú de selección.

Y otra cosa más hecha. Podemos añadir todos los nuevos eventos especiales que queramos con mods, no hay límite.

Un apunte. ¿Por qué aparece el nuevo evento como el primero de la lista, si en realidad tiene el último número? Porque el juego siempre prioriza los archivos sin encriptar sobre los encriptados. Dado que todos los eventos especiales del juego están encriptados en formato .acd menos el nuestro, carga primero el nuestro y los demás después.

Saludos para todos.
Responder
Como siempre tarde, mal y a rastras. Pero cumplo. Soy una persona que tarda, pero que siempre cumple lo que promete.

En el post principal tenéis lo siguiente para descargar:

- Circuito del Choqueiro.
- Circuito del Jarama.
- SEAT 127 (CL, Abarth, Rallye, CLX).
- Nuevo nivel para el Modo Historia.
- Nuevo evento para la sección Eventos Especiales.

Aquellos que tengáis las versiones antiguas del Jarama o del SEAT 127, por favor desinstaladlas.

Primero porque esta nueva versión no sobreescribe la versión antigua, así que tendréis el coche duplicado (mod antiguo y mod nuevo), lo mismo para el Jarama. Y segundo porque al ser mods con los mismos nombres, es posible que haya conflictos, crasheos, etc. Lo mejor es eliminar las versiones antiguas. El mod entero ha sido testado por mis colegas y por mi durante el último año y medio (sí, desde que empezó la pandemia), y ha sido pulido y repulido. Aún así perfecto no es, pero espero que os guste.

Saludos para todos.
Responder
Bien. Dije que cuando empezase una nueva pista con el Race Track Builder haría un tutorial, por si a alguien le interesa. Y esta mañana me he animado con el Circuito Kotarr. Razones para escoger esta pista para hacer el tutorial:

- Tiene muy pocas pendientes (cuanto más plana, más fácil de editar).
- Tiene pistas secundarias cruzadas con la trazada de la carrera.
- Es un terreno árido (poco o ningún objeto de césped).
- Es una pista con pocos elementos (un solo edificio que hay que hacer desde cero, muros, pianos, árboles y muy poco más).

Es decir, que como es menos compleja que otras pistas de carreras me parece más adecuada para un tutorial. Aún así va a tener su complicación. Allá vamos.


Parte 1. Race Track Builder: de Google a RTB, y de RTB a Assetto Corsa

Lo primero que necesitamos es la herramienta Race Track Builder, que es de pago o "de pago", como vosotros queráis. La tenéis en Steam para comprar o en páginas "sparrow" para descargar for free. Hay varias versiones, yo estoy utilizando la v.14.0.0.

RTB nos permite o bien crear una pista sobre un terreno plano (inventándonos las pendientes y esas cosas), o bien importar los datos topográficos de Google y crear un mapa lo más parecido posible al real. Esto último es lo que me interesa y es lo que voy a explicar en el tutorial.

Este programa, a pesar de ser del mismo creador que el Bob's Track Builder, funciona a la inversa:

- En BTB creamos una pista a partir de unos datos GPS, y luego creamos todo el terreno que hay alrededor.
- En RTB creamos un terreno a partir del escaneo vía satélite, y luego dentro de ese terreno hacemos la pista.

¿Y de dónde sacamos los escaneos por satélite? Como ya he dicho de Google. Necesitaremos lo que se llama una Google API Key. Se trata de una herramienta para desarrolladores que nos permite descargar datos topográficos de Google. Da igual lo que busquemos: circuito de carreras, ciudad, terreno de montaña, podremos sacarlo de Google. Pero ahora viene el inconveniente.

La Google API Key no es gratis. Bueno, hay un periodo de prueba de 3 meses (o 600$ de datos descargados, lo que antes suceda). Y no, aquí no hay forma de escaquearse, es una aplicación web de Google directamente, para no pagar tendrías que piratear Google Elrisas Elrisas Elrisas Elrisas . Durante ese periodo podemos descargarnos lo que queramos, así que hay que pensar muy bien qué es lo que se quiere hacer antes de registrarse.

En mi caso descargué los siguientes terrenos:

- Zona del Circuito Jarama (Madrid).
- Zona del Circuito Kotarr (Burgos).
- Zona del Circuito FK1 (Valladolid).
- Zona del Circuito Choqueiro (Ourense).
- Zona del Circuito J. Ramón Losada (Coruña).
- Zona de la ciudad de Coruña.
- Zona montañosa extensa del puerto de Pajares (Asturias-León).
- Zona montañosa extensa del Monte Xalo (Coruña).

Me había descargado también Despeñaperros pero se perdió cuando me falló el disco duro, y pensaba que tenía un backup pero no Facepalm Facepalm Facepalm Facepalm . Al menos tengo todo lo de arriba.

Resumiendo, de los 600$ de límite todo eso fueron 598$, me quedé dentro del periodo sin pagar por los pelos Sisi1 Sisi1 Sisi1 . Luego me he descargado más mapas (pagando y muy duro), pero primero tendré que terminar esos antes de hacer cualquier otro circuito, sino nunca se acaba nada.


1- ¿Cómo pasamos de Google API Key a RTB?

No necesitamos descargarnos ningún dato ni ningún mapa de Google, lo hará automáticamente el Race Track Builder.

Lo primero, la Google API Key tiene chorropicientas opciones, pero nosotros solo necesitamos solo dos tipos de datos:

- Static (foto tomada desde el satélite).
- Height (alturas tomadas desde el satélite).

Una vez que tenemos generada nuestra API Key es el momento de ponerla en el RTB. En la página web del Race Track Builder lo explican muy bien, e incluso tiene un videotutorial.

http://www.racetrackbuilder.com/Home/Google

Básicamente una vez que hayamos dado nuestros datos a Google, generado la API Key con los datos Static y Height, etc, abrimos RTB.

[Imagen: TjllEUs.png]

Cerramos la ventana emergente. Nos quedará un fondo azul, sin mapa alguno. Nos vamos File / RTB Settings.

[Imagen: kuMMDgS.png]

Se abre una ventana donde nos da la opción de meter una API de Google. Ahí es donde debemos poner la Google API Key que hemos generado.

[Imagen: LA0chbf.png]

Le damos a OK y automáticamente salvará los datos de la API. Después entramos en Edit / Venue y nos aseguramos de que esté marcada la casilla "use Google to obtein height" Pulsamos OK.

[Imagen: eNV7ICE.png]

Cerramos el programa y lo volvemos a abrir. Ahora tendremos habilitada una casilla en la que antes no podíamos escribir, la casilla para poner las coordenadas del terreno.

[Imagen: uGRUhEC.png]

En mi caso para hacer este tutorial sigue apareciendo en gris, claro, yo quemé todo lo que pude el periodo de prueba, después pagué por los mapas que quería y en estos momentos no tengo ninguna API Key Elrisas Elrisas Elrisas . El caso es ¿de dónde sacamos esas coordenadas del terreno a escanear? Pues del propio Google Sisi1 Sisi1 Sisi1 . Abrimos el navegador, nos vamos al terreno a escanear, y en la propia barra de direcciones nos dan las coordenadas. Lo puedes ver arriba resaltado.

[Imagen: 61Nwyy4.png]

Introducimos esas coordenadas en RTB. Le indicamos la altura desde donde escanear (cuanto más alto más grande será el terreno), la profundidad (cuanto más calidad más datos descargaremos y más nos cobrarán), etc. Le damos a OK y empieza a escanear. Según la calidad que hayamos escogido puede tardar muy pocos minutos o días. Una vez terminado se mostrará el terreno escaneado en RTB.

Y una vez escaneado lo primero es salvar el mapa generado.

[Imagen: sqUoE5X.png]

Listo. Ya tenemos el trozo de terreno que queríamos, con sus pendientes, desniveles, etc. La calidad de la imagen es "de aquella manera", aunque parezca que está cojonuda en realidad estamos viendo un objeto enorme a una distancia larga, en distancias cortas es donde vamos a ver que la imagen estática está muy pixelada.

Bien, hasta aquí cómo crear una llave API, cómo meter los datos en RTB, y cómo descargar un mapa de Google a RTB. Ahora viene lo interesante: de RTB a Assetto Corsa y funcionando en Assetto Corsa en menos de una hora.

Bueno, en menos de una hora... sí, en menos de una hora, incluyendo hacer todas las capturas para esta nueva parte Elrisas Elrisas Elrisas . Podéis comprobarlo vosotros mismos viendo el reloj en la primera captura y en la última. Vamos allá.


2- Edición básica en RTB

Esta mañana a las 14:38 minutos empecé con Kotarr.

[Imagen: DXZki2y.png]

RTB se utiliza prácticamente solo con el ratón, salvo algunas teclas en concreto. Empecemos con lo sencillo:

- Rueda del ratón: alejar/acercar.
- Rueda del ratón + mayúsculas izquierda: alejar/acercar muy rápido.
- Pulsar rueda del ratón/tercer botón del ratón: moverse por el terreno (nos movemos nosotros, no el terreno).
- Botón derecho del ratón: rotar por el terreno (rotamos nosotros, no el terreno).
- Botón izquierdo del ratón: seleccionar algo/ejecutar una acción.
- Mantener pulsada la tecla Y y arrastrar con el ratón: mover el objeto arrastrado solo en vertical (eje Y).
- Mantener pulsada la tecla X y arrastrar con el ratón: mover el objeto arrastrado solo en horizontal (eje X).
- Mantener pulsada la tecla R y arrastrar con el ratón: rotar el objeto sobre la cara en la que hemos pinchado.
- Mantener pulsada la tecla S y arrastrar con el ratón: reescalar el objeto sobre la cara en la que hemos pinchado.
- Seleccionar varios objetos a la vez (si es posible): mantener pulsada mayúsculas izquierda, seleccionar los objetos con el ratón, y arrastrar (se puede combinar con las teclas X e Y).
- Clonar un objeto, etc: pinchar en el objeto, mantener pulsado C, y pinchar donde quieres que aparezca el objeto clonado.
- Añadir un nodo: mantener pulsado Control izquierdo y pinchar donde quieres que aparezca el nuevo nodo.
- Activar / desactivar la maya: pulsar w.
- Control + a (manteniendo pulsadas): seleccionar todos los nodos de un objeto encadenado.
- Mayúsculas izqu + c (mateniendo pulsadas) + arrastrar con el ratón: clonar todo el objeto encadenado (con todos los nodos seleccionados).

Nota: como se puede ver en la imagen de arriba hay un cuadrado rojo en la esquina inferior derecha. Eso significa que el programa está trabajando. Lo mejor cuando aparece es esperar a que desaparezca, antes de seguir haciendo la pista. También es bueno guardar el proyecto cada pocos pasos que hagamos.


Me acerco todo lo posible a la trazada del circuito, viéndose así:

[Imagen: 0NfIa46.png]

Si acercamos el puntero del ratón a la zona superior ya sale un menú emergente.

[Imagen: py2Cpnz.png]

Los primeros botones, de izquierda a derecha, son:

- Terreno: para editar las partes que no son asfalto. Elevar, hundir, colorear, etc.
- Carreteras: para crear las zonas de asfalto. Trazada, ancho, texturas, badenes, etc.
- Objetos: para colocar en nuestro mapa, una vez creados claro (herramienta XPacker, incluida con el RTB, ya os enseñaré cómo usarla). También los hay ya hechos para descargar a nuestro RTB.
- Objetos encadenados: guardaraíles, líneas de cables, líneas de carretera, pianos, etc. Lo mismo que el apartado anterior.
- Muros: de una pieza de ladrillo, de cemento, de bloques apilables... lo mismo que los dos apartados anteriores.
- Grid / Timming: esto sirve para colocar de forma correcta la posición de los coches en el pit, en la parrilla, los checkpoints, etc. Será una de las últimas cosas que os enseñe.

Según pulsemos uno u otro de estos botones, los botones de al lado cambiarán. Para empezar a diseñar las partes de asfalto pulsamos el botón azul (tracks). Al hacerlo aparecerán cuatro botones azules, empezaremos a "dibujar" el asfalto pulsando en "add a new track".

[Imagen: vUUyNHU.png]

Bien. Ahora nos vamos a la línea de salida del circuito. Ahí usando el botón izquierdo del ratón empezamos a "puntear" sobre el centro de la pista, empezando por la línea de salida, de tal manera que vayamos recorriendo toda la trazada principal de la pista (solo la principal, las zonas de asfalto aledañas se harán más tarde). Cada vez que hagamos un clic se genera un "nodo" (una pelota amarilla grande).

[Imagen: sVT27sk.png]

Estos nodos más adelante podremos moverlos, borrarlos, añadir nuevos nodos si hiciera falta, etc. Pero de momento nos vamos a limitar a hacer la trazada. Si pulsamos la tecla w pasaremos al modo malla, que nos permitirá ver los polígonos que estamos creando. Pulsando w de nuevo se desactiva. Esto, que parece una tontería, será muy importante más adelante para ajustar la parte de asfalto lo mejor posible a la trazada real en el circuito.

[Imagen: GUgJMhL.png]

Una vez terminada toda la trazada en la parte de arriba (rodeado en rojo) nos aseguramos de que esté todo tal y como se muestra en la imagen:

[Imagen: sT73aIh.png]

Camber: curvatura de la pista. Conviene dejarla a cero, o tendremos muchísimos baches, rebotes e inclinaciones en Asseto.
Cut Terrain: el asfalto "aplana" el terreno en su recorrido.
Cut Track: esta primera trazada, en caso de cruzarse con otra secundaria, tiene prioridad y le "pasa por encima".

Las demás casillas es mejor dejarlas desmarcadas. Una vez hecho, desactivando la malla se ve así:

[Imagen: 3rtpX9S.png]

Como se puede ver el asfalto que hemos creado es mucho más ancho que el la pista real. Hay que reducirlo. Pero si reducimos el ancho de la pista ¿cómo sabremos si nos salimos de la trazada real o si vamos bien?

Para eso primero cambiamos el color del asfalto que hemos creado, pinchamos en el cuarto botón azul "change materials/colours of the track". Se abrirá un nuevo menú con texturas y materiales.

[Imagen: vaLM6fx.png]

[Imagen: oCORmOr.png]

Pinchamos sobre el asfalto. Aparecerá un cuadrado azul.

[Imagen: AgVmAwb.png]

Eso significa que ya podemos cambiar el color del asfalto. Ahora pinchamos en el botón que pone "use terrain as material". Y el asfalto se mimetizará con el terreno que hemos descargado.

[Imagen: 61HG2cD.png]

¡Ahora no vemos por dónde va la parte de asfalto creada! No, espera, si pulsamos w entramos en el modo malla, y podremos ver por dónde va todo.

[Imagen: VSSzUWW.png]

Ahora vamos ajustar el asfalto creado a la trazada de asfalto creada. Pero lo primero es ir al primer nodo creado. El programa por defecto, al crear el primero nodo, en realidad crea dos (ignoro por qué), deformando el terreno (ver imagen, la línea roja es el borde del asfalto, está cruzada). Tenemos que eliminar uno para que desaparezca esa deformación..

[Imagen: 9sehQjS.png]

Pulsamos en el segundo botón azul para editar los nodos. Pinchamos en el primero y pulsando la tecla supr nos lo cargamos. El resultado es que el principio y el final de la pista ajustan perfectamente, como se puede ver a continuación.

[Imagen: BHSuChX.png]

Movemos el primer y el último nodo de la pista hasta que los cuadrados de la maya encajen a la perfección. Aunque se solape uno un poco encima del otro no importa siempre que queden alineados, es mejor que se solapen a que quede un espacio entre ambos.

Vamos a modificar el ancho de la pista. Pulsamos el tercer botón "edit the cross section of a track".

[Imagen: NEY06J3.png]

Los nodos amarillos desaparecen, en su lugar el final y el principio de la pista aparecen representadas por dos líneas amarillas. Pulsamos en una, da igual, y entramos en la edición de la sección. Veremos lo siguiente:

[Imagen: 5ChdQWa.png]

Los iconos que se ven se mueven usando el ratón y el teclado. A saber:

- Los triángulos amarillos suben y bajan la sección en altura (manteniendo pulsada la tecla Y).
- Los triángulos blancos arrastran el borde de la pista hacia dentro o hacia afuera (manteniendo pulsada la tecla X). Ojo, los exteriores son de los badenes y los interiores del asfalto.
- Los triángulos azules cambian el ancho de la pista en ambos lados (manteniendo pulsada la tecla X).

Nosotros solo vamos a usar los triángulos blancos del interior, para ajustarlos al borde del asfalto. Los demás en esta ocasión no los usaremos. Los arrastramos hacia el centro, ajustándolos al límite del asfalto, y nos queda así:

[Imagen: TeeC3Fc.png]

¿Y el otro borde del asfalto, cómo hacemos que cuadren exactamente igual? Pues los datos del borde que acabamos de dejar listo podemos copiarlos. Pulsamos con el botón derecho en el triángulo blanco y se nos despliega un panel secundario, le damos a "copy".

[Imagen: bUpQmXx.png]

Y luego volvemos a hacer lo mismo, pero esta vez pulsamos en "paste / paste this track".

[Imagen: AStpoyX.png]

El resultado es que todo el ancho de la pista va a ser el mismo. Principio y final, como se puede ver en la siguiente captura:

[Imagen: nm5zwu0.png]

Se pueden hacer secciones donde el ancho del asfalto varíe en una curva, por ejemplo. Pero para este caso no va a ser necesario ya que el ancho de toda la pista real es el mismo. Vista general de cómo queda:

[Imagen: Nba7LV4.png]

[Imagen: uWvZ7az.png]

Ahora hay que "depurar": eliminar todos los nodos posibles, dejando solo los imprescindibles, y colocando los que queden lo mejor posible para que las curvas sean como deben ser. Al final me queda algo así:

[Imagen: YdEL64o.png]

[Imagen: 2g7CsJg.png]

Recordemos que estamos usando para el asfalto la misma textura del terreno. Podemos cambiarla, pero de momento para hacer la primera prueba lo voy a dejar así.


3- De RTB a Assetto Corsa

Primero tenemos que configurar el proyecto para Asseto Corsa. Nos vamos a Edit / Venue. Se abrirá una ventana emergente donde deberemos marcar Coords: Assetto Corsa.

[Imagen: 3Ub4LsK.png]

[Imagen: YUbbuBz.png]

Ya tenemos el proyecto listo para exportar. Clic en File / export, y nos aseguramos de que solo esté marcada la primera casilla del mensaje emergente.

[Imagen: S1VqOUn.png]

[Imagen: WCqMAWj.png]

Podemos cambiar el lugar donde lo va a exportar. Yo recomiendo no usar el lugar por defecto. En su lugar creé una carpeta temporal en el escritorio, ahí es donde lo exporté.

[Imagen: JNtxhp3.png]

Guardamos los cambios, cerramos RTB y nos vamos a la carpeta donde se exportó. Ahí tendremos el proyecto en formato .FBX, que es el formato que usa el editor de Assetto Corsa, un archivo de referencia para los materiales y las texturas (.fbx.ini) y una carpeta con las texturas.

[Imagen: sYBjB17.png]

¿Dónde hay que colocar todo eso? En la pista para el juego. Nos vamos al directorio donde está instalado el juego (lo más fácil es clic con botón derecho sobre el acceso directo, "abrir ubicación del archivo", y entramos en content / tracks, que es donde están todas las pistas del juego.

[Imagen: iWut5qV.png]

[Imagen: Dl0lkEt.png]

Como veis no tengo muchas pistas instaladas. Tenemos que crear una carpeta para nuestra pista, donde copiaremos todo lo generado por RTB. Normas para el nombre de la carpeta:

- Usar minúsculas y números solamente.
- Sin espacios ni símbolos (salvo guión bajo).


Si nos saltamos estas normas el juego no reconocerá la pista o dará problemas. En este caso el nombre elegido es "sc_kotarr". Otra norma muy importante es que todas las texturas de la pista deben estar dentro de la carpeta "TEXTURE".

[Imagen: YYV9Xnc.png]

[Imagen: L4T6N2x.png]

[Imagen: 832EbNk.png]

Abrimos la carpeta sc_kotarr y copiamos en ella todo el contenido generado por RTB.

[Imagen: XD1RdLR.png]

Hay carpetas y archivos que podemos copiar de otras pistas. Yo recomiendo copiarlas de una pista que provenga de un mod, son archivos ya depurados para modding. En este caso usé la pista de imola que ya trae el juego (y luego me dio problemas y tuve que sustituir los archivos por los de otra pista que ya había hecho). La abrí y copié dentro de sc_kotarr lo siguiente:

- Carpeta ai.
- Carpeta data.
- Carpeta ui.
- Archivo map.png
- Archivo models.ini

[Imagen: fXub3CD.png]

[Imagen: 2bLczt0.png]

Ya casi tengo todo lo necesario en mi pista antes del paso final. Lo primero, borrar todo el contenido de mi carpeta ai, dejándola vacía. En esta carpeta está la inteligencia artificial de los oponentes, que obviamente no vale para nuestra pista. Pero la carpeta debe estar ahí o el juego fallará.

[Imagen: BqSZqvq.png]

Siguiente. Entrar en mi carpeta data y borrar todo excepto los archivos que se muestran a continuación:

[Imagen: OGLyDkj.png]

El archivo surfaces.ini es muy importante. Son las superficies por donde debe correr el coche. Lo abrimos y al menos una superficie debe contener el nombre ROAD. Si no fuese así lo editaremos o buscaremos un surfaces.ini de otra pista que nos valga y lo pegaremos en la nuestra (podéis usar los archivos de cualquiera de mis pistas para lo que os haga falta).

[Imagen: zDMnwSv.png]

Ahora entramos en la carpeta ui. El archivo ui_track.json se edita con bloc de notas o similar, es el archivo que da nombre a la pista en el menú del juego, además de otros parámetros que de momento no hace falta tocar. Cambiamos el nombre "imola" por "Kotarr" y guardamos.

[Imagen: pgPVELe.png]

[Imagen: uZnbNR7.png]

Subimos un directorio. Editamos el archivo models.ini, que es el que carga los archivos del juego. Para esta primera prueba solo vamos a tener un archivo, que debe coincidir con el nombre de la carpeta. Así pues sustituimos FILE=imola.kn5 por FILE=sc_kotarr.kn5 en el primer párrafo, y el resto de párrafos los borramos.

[Imagen: ikM1r9C.png]

[Imagen: C9pN381.png]

Salvamos cambios y listo. Solo queda convertir nuestro proyecto .fbx procedente de RTB al formato .kn5 que es el que usa Assetto Corsa. Para eso usaremos el editor que viene con el propio juego, el KSeditor. Abrimos en otra ventana la carpeta del juego, y nos vamos al directorio sdk / editor. Para iniciar el editor ejecutamos kseditor.exe.

[Imagen: 8HSj4LJ.png]

Cargamos en el editor el archivo .fbx generado por RTB. No tiene ningún misterio, pero es posible que tarde un poco (y más adelante, cuantos más elementos tenga la pista, más tardará en cargar).

[Imagen: 0R3Z2jz.png]

[Imagen: uR8KiOx.png]

[Imagen: ZkfDmv9.png]

El editor como se puede ver es muy sencillo, más que un editor es un conversor. Lo primero, en el menú izquierdo podemos ver la estructura de objetos dentro del .fbx, nos aseguramos de que haya una superficie llamada "ROAD" para que nuestro coche pueda correr por ella (coincidiendo con el nombre descrito en surfaces.ini).

[Imagen: kn1VkwB.png]

Y como podéis ver coincide. ¿Por qué lleva un 1 delante? Porque los objetos y las superficies que son sólidos llevan un 1 delante en el juego, los que no son sólidos no llevan nada o llevan un 0. Así que todo correcto. También podemos ver que otras partes se llaman GRASS (con el 1 delante), si en el surfaces.ini está definida entonces también podremos andar por ella. En realidad en surfaces.ini podemos definir multitud de superficies con diferentes agarres para cada una (ROAD, GRASS, SAND, KERB, etc). Luego con tal de que coincidan con las superficies del .fbx todo perfecto.

Las superficies del .fbx pueden a su vez estar subdivididas, de esta manera:

1ROAD_tumadre1
1ROAD_tupadre2
1ROAD_tuhermana10000
etc...

Es decir: número + nombre de la superficie + guión bajo + el sufijo que te apetezca. Mientras no haya dos archivos con el mismo nombre todo OK.

Siguiente paso. Comprobar las texturas. Pinchamos en el recuadro de abajo, los materiales y las texturas deberían estar todas en verde (que todas son correctas) pero hay una en amarillo. Si no está verde es que es un formato que puede dar errores, si está en rojo es que el material no tiene textura asignada. En este caso es una textura en amarillo porque está en formato .jpg, hay que cambiarlo al formato .dds (DXT5 no mip maps).

Entramos en la carpeta textures, buscamos la textura que da problemas, y la convertimos al formato adecuado con Adobe Photoshop (o cualquier otra aplicación que permita convertirla correctamente). Y la guardamos dentro de la carpeta textures.

[Imagen: XaMRl8Q.png]

[Imagen: 111wYtA.png]

[Imagen: HG84PNG.png]

Ahora podemos eliminar la textura en formato .jpg e indicarle al editor cuál es la nueva textura que debe utilizar. Pinchamos en el recuadro de abajo en el material, y arriba en la pestaña materials. Luego en el botón de los tres puntos, y clicamos sobre la nueva textura correcta. El recuadro con el nombre de la textura pasará de rosa a blanco (que indica que está correcto).

[Imagen: fvfOILx.png]

[Imagen: hRje33d.png]

[Imagen: trrg6Gz.png]

Siguiente. Salvar los cambios en el archivo [nombre del archivo fbx].fbx.ini, para ello solo tenemos que dar en File / save persistence. Ese archivo .fbx.ini contiene las referencias de texturas, materiales y shaders para los objetos 3D.

[Imagen: g9ybAWW.png]

[Imagen: jNlp7IC.png]

Todo listo para exportar a Assetto Corsa. Clicamos en File / Save KN5 / Track. Y al archivo le damos el mismo nombre que el de la carpeta, deben coincidir, que a su vez es el que especificamos en el archivo models.ini: sc_kotarr.kn5. Debemos guardarlo dentro de la carpeta sc_kotarr.

[Imagen: DNXGPSL.png]

[Imagen: 5RxHAX7.png]

[Imagen: cGndCFb.png]

Ahora iniciamos el juego para ver si funciona. Iniciamos Práctica (ojo, de momento solo va a funcionar en este modo, si utilizas otro el juego crasheará). Escogemos pista y coche. Y a rular.

[Imagen: 0IfRaYS.png]

[Imagen: aJO33ZP.png]

[Imagen: xesHatl.png]

[Imagen: tuey6AI.png]

[Imagen: C3qqOu3.png]

[Imagen: Db5J3fQ.png]

[Imagen: ejDZxUk.png]

Funciooooonaaaaa Elrisas Elrisas Elrisas Elrisas .

¿Y ya está? Nooooo. Esto es solo la primera parte. Solo hemos puesto un mapa vacío de Google dentro de Assetto Corsa. Quedan muchas más cosas: definir shaders (reflactancia de las superficies), añadir objetos, colocar el coche y los rivales en los lugares correctos, añadir muros...

Por cierto, la última imagen. Mirad el reloj de la captura:

[Imagen: ooHHaJT.png]

59 minutos me llevó hacer la conversión y hacer todas las capturas para este tutorial. Joder, me ha llevado más tiempo escribirlo Elrisas Elrisas Elrisas .

Como veis es muy fácil poner un terreno en AC. De hecho, para quien le valga así, bastaría con colocar correctamente el coche, aunque yo voy a desarrollar el tuto todo lo que pueda.

Otros archivos que de momento no he modificado, pero que podemos retocar a nuestro gusto:

- map.png (minimapa del circuito, imprescindible que esté ahí o el juego fallará, pero podemos retocarlo, yo suelo abrirlo con Photoshop y dejar una textura totalmente transparente).
- outine.png (mapa del circuito en partida, imprescindible que esté ahí o el juego fallará, pero podemos retocarlo, yo suelo abrirlo con Photoshop y dejar una textura totalmente transparente).
- preview.png (imagen para el menú de selección del juego, imprescindible que esté ahí o el juego fallará, pero podemos retocarlo, yo suelo abrirlo con Photoshop y sustituirlo por una imagen a mi gusto).

En cuanto pueda sigo explicando más cositas del RTB.

Saludos para todos.
Responder
Continuamos.

Parte 2. Race Track Builder: en la parrilla de salida correctamente

Antes de empezar un par de apuntes:

- Al menos mi versión de RTB el botón "Grid / Timming Gates" para colocar los coches correctamente en parrilla y boxes falla. Me permite hacerlo una vez, pero una vez salvados los cambios y cerrado el programa, al cargar de nuevo el proyecto me da error al pulsar este botón. Aunque me permite seguir utilizando el resto de las opciones no puedo recolocar los coches. Hay que tenerlo en cuenta.
- Es recomendable hacer una copia de seguridad del proyecto por lo dicho en el punto anterior, antes de usar esta opción. De hecho es algo que voy a hacer varias veces a lo largo del tutorial, según vaya progresando el proyecto.
- Suele ser lo último que se hace del proyecto, salvo que tengamos muy claro dónde va a ir cada cosa. En este caso como no va a haber variación en la colocación de los coches, ni modificación en el recorrido o las superficies, lo voy a hacer ahora.

Ya hemos hecho funcionar el mapa de Kotarr en Assetto Corsa. Pero solo eso, un mapa vacío. Toca antes de nada establecer el punto de partida para nuestro coche, para nuestros rivales, los pit, los puntos de salida / llegada, los puntos de control (checkpoints), etc.

Pero primero vamos a hacer una copia de seguridad de lo que hemos hecho hasta ahora. Motivos: primero que RTB, a medida que se llene de objetos y cosas puede fallar fácilmente, y el segundo que esta parte es la que más falla del programa (ignoro por qué).

Nos vamos a Documentos / Race Track Builder y ahí dentro estarán nuestros proyectos. Duplicamos la carpeta de nuestro proyecto (Kotarr) y la renombramos como "Kotarr - backup" (copia de seguridad de lo que tenemos hecho hasta ahora). De la misma manera también hago una copia más y la llamo "Kotarr - 1DUMMIES_NORM". Dummies = objetos que solo sirven para marcar posición, no se verán en el juego. Norm = indica la dirección de la carrera (sentido de las agujas del reloj). También hago una copia más para el sentido contrario (REV).

[Imagen: qrhz5hG.png]

[Imagen: a2GVQ9n.png]

Una vez tomadas las precauciones necesarias para evitar perder todo enciendo RTB y abro "Kotarr - 1DUMMIES_NORM". Aparecerá nuestro proyecto tal cual lo dejamos ayer.

[Imagen: 4y4t2fd.png]

Para colocar correctamente el coche en el pitlane y en la parrilla de salida pincho sobre el botón morado de arriba "Grid / Timming Gates".

[Imagen: yC1Cjyo.png]

[Imagen: BPFLcjX.png]

[Imagen: 2ewHC92.png]

Bueno. No tiene mucho misterio lo que estamos viendo ¿no? Línea de parrilla, línea de boxes (que está a tomar por culo en medio de la nada), puntos de start / finish, puntos de control, etc. Vamos a editarlos de uno en uno.

Empezamos por la parrilla de salida. El coche amarillo sería el primero de todos. Si lo arrastramos con el puntero del ratón arrastramos también todos los demás. Solo tenemos que hacer clic en ese coche y colocarlo donde queramos (antes de la posición de start y de tal manera que queden todos dentro del asfalto). Todos los demás coches quedarán dentro de la trazada que definimos en la primera parte del tutorial.

[Imagen: VYXFWHP.png]

[Imagen: jgmnDcW.png]

[Imagen: 0rp1yAw.png]

Luego si es necesario colocamos los puntos de start / finish. El de la izquierda se mete en lo que sería en la zona de pit / boxes. Basta con arrastrarlo más hacia el centro alineado con la línea pintada en el suelo. Lo mismo para los checkpoints, en este caso no voy a tocarlos, me gusta dónde están.

[Imagen: D20jezF.png]

[Imagen: xqBx9Rp.png]

[Imagen: 06oWKqM.png]

Posición de los coches en los pits / boxes. Es la línea de coches azul claro. Solo tenemos que arrastrar el primero, de color morado, hasta donde queramos, y repetir con el último (también de color morado). Los coloco correctamente en la zona de boxes.

[Imagen: IMEq2QW.png]

Último. La posición para Time Attack y Hotlap es el coche naranja. Lo mismo, arrastrar y colocar antes de la línea de meta, donde queramos.

[Imagen: EeEGSCF.png]

Un apunte. En este caso estamos hablando de un circuito, de dar vueltas, etc. Pero si quisiéramos hacer una pista sin vueltas (una ruta que empieza en el punto A y termina en el punto B) también podemos. En el menú hay una casilla que pone "for rally", si la marcamos cambiarían todos estos iconos. Esto sería adecuado por ejemplo para una carrera de tipo drag. Volviendo a nuestra pista, en ese mismo menú podemos establecer el número de filas, el número total de coches posibles en carrera, etc. Yo lo voy a dejar por defecto, me parece más que suficiente.

[Imagen: KdZszyI.png]

Salvo cambios. Pero antes de exportar el proyecto a .fbx primero voy a depurar un poco más los nodos. Y también voy a cambiar la textura de la pista, en vez que sea el escaneo del terreno voy a usar una textura de asfalto, ya hemos visto cómo hacer todo esto en la primera parte. Y una vez hecho entonces exporto, salvo cambios y cierro RTB.

[Imagen: XrSApT2.png]

[Imagen: UGDkRiJ.png]

[Imagen: Z7kNF47.png]

Como hemos cambiado el nombre del proyecto también habrá cambiado el nombre de los archivos resultantes. No importa. Simplemente los renombramos, poniéndoles el nombre correcto, y los copiamos dentro del juego, dentro de la carpeta de la pista (sc_kotarr), sobreescribiendo archivos existentes.

[Imagen: I9paylX.png]

[Imagen: i8mP3TZ.png]

[Imagen: z5D6oxZ.png]

[Imagen: 2VbbL9G.png]

Bien, ya hemos reemplazado los archivos antiguos por los nuevos. Ahora toca abrir el KSeditor, cargar el archivo .fbx, comprobar que todas las texturas estén en verde, que no haya materiales en rojo, etc. Hacer todo lo necesario para que quede todo correcto, salvar persistence, etc. Ya lo hemos hecho en la parte 1, es fácil, pero ahora tendremos más materiales y más texturas. Y a medida que hagamos más cosas en la pista la lista se hará más grande.

[Imagen: tRJ3t0q.png]

[Imagen: KO8Sc73.png]

[Imagen: 4jtfYbW.png]

[Imagen: NkbOOoV.png]

Una vez todo hecho exportamos en formato KN5, reemplazando el antiguo existente.

[Imagen: QZskrZH.png]

Listo para la primera prueba. Deberíamos ver los siguientes cambios:

- Nueva posición para el coche (al correr en Práctica debería ser el pitlane en la primera posición).
- Nueva textura para el asfalto.
- Recorrido del asfalto más depurado (menos baches, más preciso).
- Tiempos parciales reflejados en partida al pasar por cada checkpoint.
- Recuento del número de vueltas cada vez que pasemos por meta (si hemos pasado correctamente por los dos checkpoints).

En imágenes:

[Imagen: Rve41So.png]

[Imagen: lRsbE4J.png]

[Imagen: GQTX5iA.png]

[Imagen: GuBRHhM.png]

[Imagen: By3ABE5.png]

Todo correcto.

¿Podemos correr ya en algún modo que no sea solamente práctica?

No, aún no. No hemos creado la inteligencia artificial de la pista. La IA es lo que le indica a los coches rivales por dónde deben ir, por dónde no, qué margen tienen para salirse de la trazada, etc. Y es algo complicado. Más adelante.

Saludos para todos.
Responder
Parte 3. Race Track Builder: pistas adyacentes, cruces, nivelación, y empiezo con los Shaders.

Kotarr tiene varias trazadas posibles. En las dos partes anteriores hemos creado el recorrido de la carrera, la pista principal. En esta parte toca crear las intersecciones de asfalto que se cruzan con la trazada principal y nivelarlas.

Lo primero, hacer una copia de seguridad de lo que tenemos hecho hasta ahora. Esta copia con nombre distintos será la que carguemos para hacer los cruces.

[Imagen: aZzzxiB.png]

Abrimos RTB y cargamos la copia del proyecto. Pinchamos en Tracks y en el tercer botón, que nos permitirá editar las intersecciones. De momento solo tenemos dos: principio y final de la trazada principal. Que deben ser iguales.

[Imagen: 8cbDVVR.png]

Pinchamos en uno (da igual cual). Si nos fijamos la línea de la intersección de la pista tiene una ligera curvatura hacia el centro, lo hace el programa por defecto. Lo primero es nivelarla y dejarla totalmente plana, esto nos va a ahorrar muchísimos quebraderos de cabeza cuando hagamos el resto de las pistas secundarias. Pinchamos en el borde del asfalto, debajo del cono blanco, en el globo naranja. Ahí nos da dos valores. El de la derecha es la altura, como vemos pone 0,02.

[Imagen: R3CFecu.png]

Todos esos globos naranjas deben tener ese mismo valor. Así que es sencillo: vamos pinchando de uno en uno y arrastrándolo cuidadosamente arriba o abajo, manteniendo pulsada la tecla Y, hasta que todos tengan el valor 0,02. Así conseguiremos una pista 100% plana.

[Imagen: e3YxSpy.png]

[Imagen: aCt7b8k.png]

[Imagen: 8D1xTwg.png]

Una vez hecho solo tenemos que pulsar en un nodo naranja con el botón derecho del ratón, copiar, y pegar al resto de la pista. Ambos extremos quedarán iguales.

[Imagen: iIgviIW.png]

[Imagen: cSEnc6p.png]

[Imagen: RUNYJPZ.png]

Bien, vamos con los badenes. Si mantenemos pulsada la tecla Control y pinchamos con el ratón sobre la línea, añadiremos más nodos. Esto es importante en la pista principal pues los badenes se adaptan al terreno, cuantos más nodos añadamos mejor se adaptará (menos angulosa quedará). Pero si añadimos demasiados la carga poligonal será excesiva, así que en su justa medida.

[Imagen: 4c4PpyP.png]

[Imagen: yxun49t.png]

[Imagen: 4A2vpBl.png]

[Imagen: S9tTn1Z.png]

El aumento de líneas en los badenes o la calzada se aplica a toda la pista, por lo que no hay que copiar ni pegar nada.

Esta intersección, una vez terminada, será la que usemos de referencia para todas las intersecciones, por lo que no la volveremos a modificar más.

Bien, vamos a crear las pistas adyacentes. Así que pulsamos en el primer botón para crear una nueva pista. Y punteamos con el botón izquierdo del ratón en el lugar donde queremos crearla. Una vez creada arriba debemos marcar:

- Cut terrain.
- Cut by track.
- Terrain normal.
- Camber: 0,00


[Imagen: wZFlJS4.png]

[Imagen: AS8KYqZ.png]

[Imagen: yA4ICBH.png]

La pista creada es más grande que la de verdad, como la primera vez. Para darle el mismo ancho exacto solo tenemos que copiar ya intersección de la pista principal y pegarla en la intersección de esta pista secundaria, aplicándola a toda esta pista (solo esta).

[Imagen: 8vlercT.png]

[Imagen: 7oJ1uYD.png]

[Imagen: QQ9ECXr.png]

Pero esta pista secundaria es más ancha en los bordes y más estrecha en el centro. Las intersecciones no son solamente en los bordes, podemos crearlas donde queramos. Además se puede ver que esta pista queda más alta, hace como un escalón a la altura de la trazada principal. Hay que corregirlo.

Tirando del cono amarillo (cualquiera de los dos) manteniendo la tecla Y pulsada podemos ajustar la pista secundaria a la altura de la principal. No importa que no cuadre exactamente, eso lo ajustaremos después.

[Imagen: hP8VKAZ.png]

[Imagen: Pf5JDB0.png]

Como podemos ver los badenes de la pista principal tapan la pista secundaria. Para corregirlo copiamos una de las intersecciones primarias. Y luego, pulsando C, las copiamos en la pista principal a la altura de la pista secundaria. Cuatro veces. De tal forma que dos hagan "pasillo" a la altura de la pista secundaria, y luego una más a cada lado.

[Imagen: eCEZVKZ.png]

[Imagen: YP4N0gI.png]

Bien. Ahora lo que hay que hacer es "bajar" el badén de la pista principal en esa intersección, de tal forma que el badén de la pista principal quede por debajo del asfalto de la pista secundaria. Se hace tirando de los conos blancos de los extremos, manteniendo la tecla Y pulsada. Lo haremos solo don las dos intersecciones centrales, dejando las dos de cada extremo intactas.

[Imagen: 1NxYphL.png]

Lo último. Pinchamos en la pista secundaria y creamos más intersecciones en la pista, ajustándola al ancho de la pista real (tirando de los conos blancos y manteniendo pulsado X). Luego hacemos un ajuste perfecto a la pista principal.

[Imagen: BlInWL4.png]

[Imagen: suRWY6q.png]

[Imagen: qGRF3dB.png]

[Imagen: 9WUHofd.png]

El resultado es una pista secundaria totalmente ajustada a la pista principal. Si corremos por la secundaria no habrá "baches" ni "rebotes". También se verá cuando añadamos adelante otros elementos (pianos, filas de neumáticos, etc, ajustará todo a nivel, no se verán "escalones"). Repetimos con las demás pistas secundarias del circuito. Y tras colorear la trazada principal, las pistas secundarias, las zona de pitlane, las pistas de servicio y público, etcétera, el resultado es este:

[Imagen: 3y0u31y.png]

Ojo. Cuando coloreemos una pista hay que verificar que esté marcada la casilla "track" y no "global" para que el pintado sea correcto, o se verá muy mal.

Hora de hacer un testeo. Ya hemos visto cómo poner la pista en el juego, así que no es más que exportar, copiar todo en la carpeta de la pista sobreescribiendo archivos, importar en KSeditor, y reemplazar archivos existentes. Pero en KSeditor vamos a empezar con los Shaders, en concreto con los shaders del asfalto.

¿Qué son los Shaders? Traducido suena algo así como "sombreadores" (que suena bastante mal). Digamos que es la tonalidad y refractancia que pueden tener los objetos, pistas, terrenos, etc. Por ejemplo, un cromado tiene distintos reflejos de un plástico, por lo tanto el shader de cada uno tendrá valores distintos. En esta ocasión solo voy a retocar el asfalto, y para ello voy a utilizar de guía otra pista creada por mi, el Jarama. Bueno, al ser creada por mi no necesitaría hacer esto ya que tengo guardado todo lo necesario, pero lo he hecho así para que veáis como funciona.

El juego tiene una aplicación llamada "Object Inspector". Esta aplicación nos permite, pulsando la tecla ALT y pinchando sobre un objeto, inspeccionar todo de ese objeto: nombre de la geometría, nombre del material, tipo de shader, valores del shader, texturas, etc.

[Imagen: TgmmOR8.png]

[Imagen: wgbsmZd.png]

[Imagen: vol0YQo.png]

[Imagen: ejeFVkp.png]

Podemos extraer las texturas de esa pista, si fuese necesario, con la aplicación 3DSimEd, pero como digo en mi caso no es necesario pues ya las tengo, la pista que he inspeccionado es de mi creación. Simplemente copio esas texturas en la carpeta TEXTURE de la pista, abro KSeditor, y aplico el shader adecuado al asfalto (en realidad a los varios tipos de asfalto: uno para la trazada principal y las pistas adyacentes, otras texturas distintas para la zona de boxes, etc).

[Imagen: I7YNeNy.png]

[Imagen: lce1ths.png]

[Imagen: 3cPddBC.png]

[Imagen: SHBKoQ3.png]

La diferencia es palpable e instantánea. El asfalto se vuelve mucho más realista. Resultado ingame:

[Imagen: jsKb2Bf.png]

[Imagen: l9x5lFa.png]

[Imagen: el9EUCU.png]

[Imagen: Enmuhpb.png]

¿Vamos a tener que definir todos los shaders uno a uno? ¿qué pasará cuando tengamos un millón de objetos en la pista?

Lo ideal es usar los menos materiales posibles y por lo tanto los menos shaders posibles. Por ejemplo, en una farola, no tendría sentido poner un material para la bombilla, otro para el tubo, otro para la portezuela de mantenimiento, otro para la cerradura de la portezuela, etc. Lo lógico sería dejar un material para la parte que se ilumina (si queremos que se encienda de noche) y un material para todo lo demás. Eso hace que no tengamos que editar tantos shaders.

Luego hay que tener en cuenta que si un objeto lo repetimos, todos ellos usarán el mismo material. En el ejemplo de la farola, si ponemos 1 o 100 da igual, al ser iguales usarán el mismo shader, por lo que al definirlo definimos todas las farolas a la vez.

De todas maneras el KSeditor, como veremos más adelante, tiene una función de copiar y pegar materiales. Normalmente los shaders más usados son:

- ksPerPixel (shader por defecto).
- ksPerPixel_AT (igual que el anterior, pero para objetos con transparencias).
- ksPerPixel_NM (igual que el primero, pero para objetos con "normales" o sensación de profundidad).

Los valores que suelo utilizar para todos los shaders son:

- ksAmbient: 0.2
- ksDiffuse: 0.2
- ksSpecular: 0 (reflactancia de la luz del sol en el objeto, cero normalmente, sube según se trate de un plástico, un cristal, un cromado, etc)
- ksSpecular_EXP: 10
- ksEmissive: 0 0 0
- ksAlpha_Ref: 0.3 (en caso de haber transparencias, valor que indica la calidad de las sombras, 0 inexistente, 1 exagerado, el valor recomendado por Kunos es 0.3).

En el caso del asfalto se trata de un shader multitextura, se entremezclan varias texturas a la vez en el asfalto y el resultado es una sensación de rugosidad, secciones con partes distintas (socavones, irregularidades, etc). Por lo tanto defino el shader de una textura de asfalto y puedo copiar y pegar los valores de ese shader en otros asfaltos. El resultado final, más realista que como estaba al principio.

En breve la siguiente parte. Saludos.
Responder
Parte 4. Subdividir la pista en varios archivos con el programa 3dSimEd.

A muchos autores no les gusta que su pista tenga varios archivos .kn5 porque consideran que, cuantos más archivos .kn5 tengan, peor optimizada está. Pero si echamos un vistazo a las pistas que trae el juego por defecto veremos que todas están subdividas en varios archivos .kn5. Subdividir la pista no hará que tenga una peor optimización y la carga sea más pesada o lenta, al contrario, y además:

- Es esencial para que la IA funcione correctamente.
- Es más fácil editar cada parte individualmente que todo el proyecto en conjunto (menor carga de trabajo para el PC y los programas de edición como RTB, 3dSimEd, etc).
- Nos facilitará el trabajo a la hora de crear varios layouts (trazadas de la carrera, esta va a tener una trazada en sentido de las agujas del reloj y otra en sentido contrario).
- Por lo dicho en el punto anterior, ocupará mucho menos espacio en el disco duro del PC.

Pero ojo, solo subdividiremos la pista cuando todas las superficies estén perfectamente ajustadas, nunca antes. Si subdividimos sin estar todo ajustado lo que haremos será cagarla, tendremos muchísimos problemas de cara al futuro, así que tómate tu tiempo y solo da este paso cuando estés seguro de que no vas a modificar más ninguna superficie. Lo que quiero hacer es dividir el proyecto en los siguientes archivos .kn5:

- Uno solo para el asfalto de la trazada de la carrera. Será el archivo sc_kotarr.kn5. Recordemos que al menos un archivo .kn5 debe llamarse como la carpeta de la pista. Que ese archivo sea el que contiene solamente el asfalto de la trazada principal tiene que ver con hacer la IA correctamente, lo desarrollaré más adelante.
- Otro solo para la zona de boxes y sus accesos. Será el archivo sc_kotarr_pitlane.kn5.
- Otro solo para los objetos marcadores de posición (para los coches en parrilla, en boxes, puntos de checkpoint, etc). Será el archivo sc_kotarr_dummies_pos_norm.kn5.
- Otro para todas las demás pistas de asfalto, tierra, etc, secundarias. Será el archivo sc_kotarr_asphalt.kn5.
- El último solo para el terreno. Será el archivo sc_kotarr_terrain.kn5.

Para ello necesitamos el programa 3dSimEd. Este programa no permite diseñar en 3D, pero sí editar, eliminar o añadir elementos, y exportar en formato .fbx que es justamente lo que necesitamos. Así que cargo el proyecto entero en el programa pulsando en "importar" y seleccionando ".fbx" en el tipo de archivo.

[Imagen: kOjv9CZ.png]

[Imagen: 7nJWQsf.png]

[Imagen: TKkJBSw.png]

El proyecto aparece de color rosa porque no están definidas las texturas para 3dSimEd. No importa. De momento solo queremos eliminar ciertas partes, nos da igual que no esté "bonito".

Pinchamos en "Objects by name". Seleccionamos uno. Y se abrirá un menú en el lado derecho. Si pulsamos en la X borraremos ese objeto. Y repetimos con todos hasta dejar solo la parte o las partes que nos interesan. En este caso será solo la pista principal, la trazada de la carrera.

[Imagen: 3OCdgiY.png]

[Imagen: MphCqam.png]

[Imagen: bvnZFse.png]

[Imagen: duHsgKU.png]

[Imagen: 6dJrGS0.png]

Una vez listo exportamos en formato .fbx, sobreescribiendo el archivo kotarr.fbx, que es el que hemos designado para solo la trazada de asfalto de la carrera.

[Imagen: FXKBVG5.png]

Muy importante: fijaros en las opciones marcadas para exportar, son las que debemos usar siempre para todas las partes de nuestro proyecto.

[Imagen: mjZzyJh.png]

Toca convertir el archivo kotarr.fbx en el archivo sc_kotarr.kn5. Para esto abrimos el KSeditor, cargamos kotarr.fbx, revisamos que las texturas y los shaders estén correctamente, salvamos persistencia y exportamos. Ya lo hemos hecho anteriormente, no tiene misterio.

[Imagen: 3Oud40M.png]

[Imagen: 4cxXFGO.png]

[Imagen: idF22jY.png]

Recordemos que todas las superficies deben llevar un 1 delante para que el juego las reconozcan como sólidas, esto es importante tenerlo siempre presente.

Ahora sc_kotarr.kn5 contiene solo el asfalto de la pista principal. Hay que repetir el proceso con las demás partes, tal y como he descrito al principio de esta parte. Resultado:

[Imagen: CjmzPoW.png]

Y por el camino hice cambios. En el caso del pitlane, en 3dSimEd cambié el nombre "1road" de la superficie por "1pitlane". En la parte de tierra cambié "1road" por "1sand", etc.

Último paso. Editar el archivo models.ini y agregar todos estos nuevos archivos .kn5, de forma que la numeración sea consecutiva ([model_0], [model_1], [model_2], etc). Y salvar cambios.

[Imagen: GBTpC0S.png]

Recordemos que los nombres de las superficies deben siempre coincidir con los nombres descritos en el archivo surfaces.ini. Sino el coche atravesará la superficie y caerá al vacío.

[Imagen: UoBSycx.png]

Testeo ingame.

[Imagen: CiCVuLV.png]

[Imagen: N0SRBWD.png]

Primer cambio: las luces de emergencia del coche se encienden. En este coche está hecho para que se enciendan solo si estás en el pitlane. Osea, que está correcto.

[Imagen: 1nWfMza.png]

[Imagen: t40tdMH.png]

Compruebo todas las superficies pasando por ellas con el coche. Todas van perfectas.
Responder
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:

[Imagen: 21v9TZ2.png]

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:

[Imagen: re6fuGX.png]

[Imagen: cbTaz3D.png]

[Imagen: 1Oz9nNk.png]

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:

[Imagen: t5Wp0py.png]

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.

[Imagen: N4SNZwF.png]

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.

[Imagen: fvf8mkZ.png]

[Imagen: 4kzosZD.png]

[Imagen: JyanCCr.png]

[Imagen: mromg3D.png]

[Imagen: y8C2Dv0.png]

[Imagen: mx8N0rd.png]

[Imagen: xB0J08V.png]

[Imagen: BpsQOdY.png]

[Imagen: Zi9Mm8q.png]

[Imagen: 2jjTlr2.png]

[Imagen: gUgVyHX.png]

[Imagen: 50E1vHM.png]

[Imagen: Wnu1EqT.png]

[Imagen: LsCFyhg.png]

[Imagen: fxrZOHR.png]

[Imagen: swUmcmf.png]

[Imagen: OfrOMlo.png]

[Imagen: cPlkeQl.png]

[Imagen: UOE15c0.png]

[Imagen: Df49Wpm.png]

[Imagen: VIy2qpE.png]

[Imagen: kZo1FHh.png]

[Imagen: rVE4e2a.png]

[Imagen: 42yEU16.png]

[Imagen: ZPkq64r.png]

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 Smile . 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.

[Imagen: MiHydV8.png]

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í:

[Imagen: 9B7gBVY.png]

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.

[Imagen: FZziCva.png]

[Imagen: kRGB81i.png]

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.

[Imagen: 50gAcIs.png]

[Imagen: S9iPP3t.png]

Ejecutamos la herramienta AI, que es la que nos permitirá crear la inteligencia artificial.

[Imagen: fLEob7V.png]

Primero debemos empezar a grabar desde el pitlane, pulsando el botón "empezar en pits". Dar una vuelta completa, volviendo al punto de boxes.

[Imagen: mWPGU6M.png]

[Imagen: 4yGwj8y.png]

[Imagen: DnIEmWJ.png]

[Imagen: 93og8Xp.png]

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.

[Imagen: 8QMjY8i.png]

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.

[Imagen: tMYAsAB.png]

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.

[Imagen: Gw2MVJB.png]

[Imagen: Y5SNwrK.png]

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.

[Imagen: KBjrxYl.png]

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.

[Imagen: fX7BpJu.png]

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.

[Imagen: JHGUshH.png]

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í:

[Imagen: RNzk5SO.png]

Cargamos el layout "normal" y ya vemos lo cambios.

[Imagen: 59VkhtA.png]

- 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.

[Imagen: vLrZDta.png]

Prueba ingame de que todo está correcto.

[Imagen: u7L2xQv.png]

[Imagen: oai2BYh.png]

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.

[Imagen: Rje5bQQ.png]

[Imagen: 9yhu7xe.png]

[Imagen: 3t7tDaf.png]

[Imagen: 0aL2i2n.png]

[Imagen: 1fFllX4.png]

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.

[Imagen: a5wgjQh.png]

[Imagen: 7UpC3cV.png]

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.

[Imagen: W6QGYkJ.png]

[Imagen: yQWSOhm.png]

[Imagen: bpT1XGC.png]

[Imagen: tW7qF0m.png]

[Imagen: 7jnNCGb.png]

[Imagen: Zq6GAIi.png]

Todo va perfecto, genial. Otra cosa más hecha.
Responder
Parte 6. Race Track Builder: Creando muros para nuestra pista.

Ya hemos visto cómo crear el terreno, la pista de asfalto principal, la zona del pitlane, las pistas secundarias, etc. Es hora de añadir contenido a nuestra pista.

RTB tiene otros tres botones principales que aún no hemos usado. Objetos (rojo), objetos encadenados (naranja) y muros (rosa). Cada uno de estos botones a su vez tiene otras funciones. Para esta parte voy a empezar por los muros. Como siempre primero hacemos una copia del proyecto, la renombramos y la cargamos en RTB para trabajar.

[Imagen: y9usNsU.png]

[Imagen: WrpgG6o.png]

Después hay que buscar en la red vídeos, imágenes, etc, que nos indiquen por dónde van a ir los elementos de la pista.

[Imagen: oYbDAon.png]

[Imagen: H9zK56e.png]

En base a esto vamos a trabajar en RTB. Si bien hay que hacer que las cosas esenciales sean idénticas a la pista real (por dónde va cada muro por ejemplo), en otras cosas nos podemos tomar licencias (color del asfalto, colocación de farolas, carteles de publicidad, etc). Hay que entender que los elementos de los circuitos van cambiando y renovándose en la vida real, así que podemos jugar un poco con esos elementos y dejarlos a nuestro gusto. Pero de momento voy con los muros.

Voy a empezar con la zona del pitlane. Para ello cambio la textura del asfalto del pitlane poniéndole la del terreno. Eso me va a permitir ver por dónde tengo que hacer el muro.

[Imagen: Dx2LLmU.png]

Luego pincho en el botón "Walls" y al lado aparecerán otros botones del mismo color, si nos fijamos son las mismas opciones que en el botón "Tracks". Además nos aparece otro menú más a la derecha que nos permite seleccionar el tipo de muro que vamos a poner en el proyecto.

[Imagen: nU87nXZ.png]

La mecánica de trabajo va a ser la misma que con "tracks": vamos pinchando sobre el terreno, dibujando la trazada del muro, y éste se irá construyendo. Marco en el menú de la derecha el tipo de muro que quiero hacer, luego en el botón para añadir un muro, y voy pinchando sobre la línea del muro. Se crearán nodos naranjas a lo largo del muro.

[Imagen: pw6HvTa.png]

Igual que con "tracks". Si pincho en el segundo botón ("move") puedo mover todos esos nodos hasta dejarlos alineados. Si pincho un nodo y luego la tecla Supr, se elimina. Si mantengo pulsada la tecla Control y pincho entre dos nodos, se crea uno nuevo. Si mantengo pulsada la tecla Mayúsculas izquierda y pincho en varios nodos, se seleccionan esos nodos a la vez. Etc.

[Imagen: 0JuABqx.png]

Recordemos que el primer nodo del muro, al igual que con tracks, aparecerá duplicado. Debemos eliminar uno para que el muro no se deforme erróneamente.

[Imagen: aZM3vRl.png]

[Imagen: tv0JPPM.png]

Resultado tras alinear todos los nodos a la línea que quiero hacer:

[Imagen: qEQZuww.png]

El tercer botón, que en "tracks" nos permite editar una intersección, aquí nos permite editar otras cosas como el ancho del muro, la inclinación, etc. El funcionamiento es exactamente igual: podemos añadir más intersecciones para hacer distintas alturas, añadir más nodos, aplicar un cambio a todo el muro o solo a parte de él, etc.

[Imagen: 4uwkZSC.png]

[Imagen: Z9JDEOR.png]

[Imagen: KrXYiL7.png]

[Imagen: eeejPHf.png]

[Imagen: HlxNOoj.png]

Bastante fácil, ya sabemos cómo funciona. A la derecha de todo ahora tenemos un botón que con track no teníamos, "properties". Si pulsamos este botón se abre un menú al acercar el puntero del ratón. Son opciones especiales. En el caso del muro podemos por ejemplo curvarlo o dejarlo anguloso pulsando los botones respectivos.

[Imagen: u4ikJdj.png]

[Imagen: MPhVRyb.png]

Incluso podemos "despegarlo" del suelo, todo el muro o solo una parte. Podemos jugar con todas estas opciones hasta hacerlo a nuestro gusto. Recordemos que siempre que movamos un nodo debemos bloquear el eje que queremos mover, manteniendo pulsado Y si queremos moverlo en altura o manteniendo pulsado X si queremos moverlo en horizontal. Incluso podemos clonar el muro entero, primero seleccionando todos los nodos (control + a para seleccionarlos todos de golpe) y luego arrastrando (mayúsculas izquierda + c + arrastrar con el ratón).

[Imagen: ltnBbsG.png]

[Imagen: BecjsVk.png]

[Imagen: grQCCcd.png]

Cambio de tipo de muro, ahora quiero añadir unos muros de neumáticos. Para esta ocasión me voy al botón de objetos encadenados. Selecciono el muro de neumáticos, punteo por donde quiero que vaya, elimino el primer nodo duplicado, etc.

[Imagen: zaMpgmf.png]

[Imagen: MpY5OfC.png]

En esta ocasión si pinchamos en "propierties" nos aparecerán otras opciones distintas para estos neumáticos. Hacer que estén colocados de manera aleatoria, incluyendo la inclinación hacia un lado u otro, la altura mínima y máxima de cada columna de neumáticos, etc. Podemos hacer que parezcan colocados de cualquier manera, pero siguiendo la línea que hemos trazado.

[Imagen: cAlCXt5.png]

Resultado tras dejar la fila de neumáticos al gusto y clonarla, teniendo dos hileras de neumáticos:

[Imagen: Uy2ZnhD.png]

Seguimos creando muros de todo tipo (alambradas, cemento, cemento pintado, etc) y más hileras de neumáticos, muchas veces estas cosas se utilizan para tapar fallos del diseño del asfalto sobre el terreno.

[Imagen: t2H2Mds.png]

Resultado:

[Imagen: oBYghjx.png]

Hora de meter los muros en nuestra pista. Pero antes hay que tener en cuenta una cosa.

- RTB nombra los muros como "walls".
- RTB nombra los objetos encadenados como "sobject"
- RTB nombra los objetos como "obj".
- Assetto Corsa identifica los objetos sólidos como 1wall + guión bajo + el nombre que sea.

Es decir, que todos los objetos creados en RTB hay que renombrarlos. O al menos aquellos que queramos que sean sólidos. Es decir, muros y objetos con los que podamos colisionar. Aquellos que estén fuera de nuestro alcance no hace falta renombrarlos.

Procedimiento:

- Exportar el proyecto de RTB (formato .fbx).
- Importar el archivo .fbx en 3dSimEd.
- Exportar todos los objetos en formato .mts a una carpeta temporal.
- Eliminar las partes que ya tenemos listas (roads, grass, sand, marcadores, etc), quedándonos solo con los muros y los objetos encadenados.
- Renombrar las partes que queremos que sean sólidas, bastará con añadirle al principio del nombre "1wall_".
- Importar todas las partes conservadas en 3dSimEd.
- Exportar un nuevo .fbx que contenga solo estas partes. Copiar el .fbx.ini del proyecto completo para indicarle a KSeditor las texturas que corresponden a cada material y shader, poniéndole el mismo nombre de este nuevo .fbx.
- Importar el nuevo .fbx al KSeditor.
- Asignar shaders correctamente (transparencias, rugosidades, etc), salvar persistence, etc.
- Exportar un nuevo .kn5.
- Añadir este nuevo .kn5 a la lista de archivos que carga models.ini, de ambos layouts.

Puede parecer un coñazo, aunque en realidad nos llevará poco tiempo. Es lo mismo que ya hemos hecho, pero añadiendo un paso intermedio. Pero volvemos a lo mismo. Una vez hecho ya no tendremos que tocar más esta parte, todos los muros quedarán hechos y sólidos. El proceso en imágenes:

[Imagen: zL3NBJf.png]

[Imagen: OWNLgJ5.png]

[Imagen: OWNLgJ5.png]

[Imagen: QXhUuzN.png]

[Imagen: fqxudVx.png]

[Imagen: B5d9n6O.png]

[Imagen: COfEunC.png]

[Imagen: Fu7p9wY.png]

[Imagen: 1OFJ3sf.png]

[Imagen: xLT5A2u.png]

[Imagen: 4gAnYFw.png]

[Imagen: 21poPQl.png]

[Imagen: 7yxYsNx.png]

[Imagen: FGl632Z.png]

[Imagen: jGKeAZb.png]

[Imagen: lvnPSp7.png]

[Imagen: iPutjK4.png]

[Imagen: p6omPNT.png]

[Imagen: C1m7XyW.png]

[Imagen: 1YpROr9.png]

[Imagen: BKOVV1a.png]

[Imagen: nl0TMwY.png]

[Imagen: 7qAH4RR.png]

[Imagen: yRvk3hA.png]

[Imagen: Grqopct.png]

[Imagen: h59xN9u.png]

[Imagen: O7HMLa5.png]

[Imagen: x66sxuR.png]

[Imagen: 3zrvyai.png]

[Imagen: H8tkKBc.png]

[Imagen: nRQ0rUn.png]

[Imagen: xGR3q74.png]

[Imagen: rwPXzLi.png]

[Imagen: x2GGmMf.png]

[Imagen: 2iC0tMi.png]

[Imagen: DZtr5vD.png]

[Imagen: ItKQC4u.png]

[Imagen: dMFf36S.png]

[Imagen: BKA3mbc.png]

[Imagen: y4EMCms.png]

Todos los muros de la pista listos. A partir de ahora en RTB siempre haremos copia de esta parte para añadirle cosas (césped, objetos varios, árboles, etc). En breve la siguiente parte.
Responder
Parte 7. Race Track Builder: Pianos y líneas pintadas en el asfalto.

Bien. Comenzamos a trabajar a partir de una copia del proyecto con los muros, esta copia es la que cargaré en RTB para hacer los pianos y las líneas del asfalto.

[Imagen: G9qiSwZ.png]

Empiezo por los pianos. Estos los podemos encontrar en el menú de Objetos Encadenados, desplegando el menú y seleccionando "rumble strip". Luego pincho en el que más se asemeje al que tiene el circuito en la vida real. Ya hemos visto cómo se colocan objetos encadenados en la pista, repito la operación: punteo allí donde quiero hacer el piano.

[Imagen: pEPXqQt.png]

[Imagen: crrDEsD.png]

Luego pinchando en el botón "move" puedo alinear los nodos del piano, para que estén rectos. Pero además si pinchamos en "properties", a la derecha del todo, ahí se nos desplegará el menú con las opciones especiales. Para los pianos podemos redimensionarlos a nuestro gusto, también cambiar la orientación, "despegarlo" del suelo al seleccionar todos los nodos y desmarcar la casilla "rest node on ground", o hacer que no asienten sobre el suelo (que puede tener inclinaciones) sino sobre el plano horizontal. Solo tenemos que pinchar en "pattern" por ejemplo y poner los valores que deseemos.

[Imagen: kYPvdWh.png]

[Imagen: iw1Lv1u.png]

[Imagen: CK3kFmz.png]

[Imagen: tXHnfTT.png]

Después de dejar ese piano totalmente a nuestro gusto seleccionamos todos los nodos a la vez (control + a)...

[Imagen: WVbyiGa.png]

...y mateniendo pulsado mayúsculas izquierda + c, arrastramos con el ratón, creando una copia del piano que acabamos de hacer. Haciéndolo así y no a través del menú nos ahorramos tener que ajustar cosas de nuevo (dimensiones de las piezas del piano, por ejemplo).

[Imagen: esoFBoH.png]

De nuevo alineamos los elementos del piano al borde del asfalto. En este caso, al tener la orientación contraria al otro piano, hay que girar 180 grados las piezas para que queden orientadas correctamente.

[Imagen: nPlbwcX.png]

[Imagen: TjLbXi8.png]

Bien. Hay una parte del piano que no ajusta correctamente. ¿Por qué? Porque está anclado al terreno (casilla "rest node on ground"). Para corregirlo seleccionamos todos los nodos y desmarcamos la casilla. También, en Grounding, cambiamos en el menú de "objects sits on the spline" a "vertices lowered on the ground". El resultado es que ahora podemos mover el nodo verticalmente (manteniendo Y pulsada), por lo que podemos ajustar el borde del piano a la superficie del asfalto.

[Imagen: gnpOtrQ.png]

[Imagen: IWZRk7t.png]

Y listo. Así que ahora hay que hacer todos los pianos de la pista. Clonar, alinear nodos, rotar si hace falta, subir o bajar en altura nodos si hace falta, etc. Hasta que todos queden lo más perfectos posible.

[Imagen: MhmouEL.png]

[Imagen: irgwnUl.png]

[Imagen: K1NozhY.png]

[Imagen: zP8lvq0.png]

No está mal. Ahora sí que ya empieza a tener un aspecto interesante. Vamos con las líneas pintadas en el asfalto.

Lo primero es cargar los otros Xpacks que vienen incluidos en el RTB. Son solo tres, uno para hacer pistas, otro para hacer caminos, y el tercero para hacer ciudades. Justo lo que hemos seleccionado cuando iniciamos este proyecto. Lo que tenemos que hacer es ir a edit / Xpacks y marcar la casilla de aquellos que queramos cargar. Lógicamente tengo muchos más aparte de esos tres Xpacks básicos, pero de momento solo voy a cargar los que trae el programa por defecto, solo estos.

[Imagen: RoAs4y4.png]

[Imagen: ffypn4S.png]

Ahora, si desplegamos el menú de objetos encadenados, aparecerá una nueva categoría: paint lines. Debemos pinchar ahí.

[Imagen: Xzeu1X3.png]

[Imagen: wu0gFLg.png]

Y el mecanismo es el mismo que hasta ahora: escoger el tipo de línea que queremos hacer, puntear describiendo el recorrido que queremos que haga, eliminar el primer nodo duplicado, ajustar, etc. Podemos cambiar el ancho, el largo, si es una línea discontinua variar el espacio entre cada línea, etc. Escogí el color amarillo para la zona de boxes, el blanco para toda la pista, y el rojo para la línea de meta.

[Imagen: VKvolwc.png]

[Imagen: Qqiuh9o.png]

[Imagen: 2SueQHH.png]

Resultado final, con todas las líneas de la pista ya terminadas.

[Imagen: DFX9AlN.png]

[Imagen: SiftBFe.png]

[Imagen: JanJby3.png]

[Imagen: G1UOY0L.png]

Hecho. Ahora ya sabemos lo que toca ¿no?

- Exportar en formato .fbx
- Copiar los archivos y las carpetas dentro de la carpeta de nuestra pista.
- Extraer las partes que hay dentro del archivo .fbx con 3dSimEd, exportar esas partes en formato .mts, eliminar las partes que no nos interesan, renombrar las partes que nos quedamos.
- Importar todas esas partes en 3dSimEd, y crear un nuevo .fbx, además de copiar el .fbx.ini del .fbx con todo el proyecto y renombrarlo como el nuevo .fbx.
- Importar el nuevo .fbx en KSeditor.
- Definir shaders, salvar persistence, y crear un nuevo .kn5.
- Añadir el nuevo .kn5 a la lista de los model.ini de los dos layouts.

O también podemos incluir todas estas partes nuevas dentro del archivo sc_kotarr_walls.kn5, que es la opción que finalmente he tomado. Solo tengo que añadir los archivos .mts a los que ya tenía el archivo kotarr_walls.fbx, exportar el nuevo .fbx sobreescribiendo el existente, y trabajar en KSeditor.

Una cosa a tener en cuenta. Hay que renombrar las partes según lo definido en surfaces.ini, es decir, los pianos llevarán el nombre 1kerb_loquesea, las líneas 1line_loquesea, etc, así podemos poner definir adherencias de neumáticos según por donde rodemos.

[Imagen: Lus39sg.png]

[Imagen: TJuAdaM.png]

Bien, un cambio a realizar mientras usamos el KSeditor. Los pianos del RTB son rosas y amarillos, pero los reales son rojos y blancos. Abro la textura de los pianos con Adobe Photoshop, la edito con los colores adecuados, guardo los cambios en una nueva textura DDS DXT5 no mip maps (guardando la nueva textura dentro de la carpeta TEXTURE de nuestra pista, ojo con esto, todas las texturas deben estar ahí sí o sí), y cargo esta nueva textura en el KSeditor.

[Imagen: HgCCt9f.png]

[Imagen: N1zQqpN.png]

[Imagen: sInKGsH.png]

[Imagen: lCFVQLq.png]

Salvo persistence y exporto el archivo .kn5, como en este caso lo que he hecho es "actualizar" el archivo walls añadiéndole más elementos, sobreescribo el archivo ya existente.

[Imagen: 3VKzySg.png]

Testeo ingame.

[Imagen: pgR6quZ.png]

[Imagen: DRmPmyc.png]

[Imagen: vOAnnNS.png]

Ahora sí que empieza a tomar un aspecto muy interesante. Pronto, la siguiente parte.

Saludos para todos.
Responder
Parte 8. Race Track Builder: Xpacks, Xpacker y nuevos objetos para el proyecto.

Bueno pues se está acercando el momento de dejar aparcado el RTB. De hecho esta parte del tutorial no está terminada, pero seguramente será la última donde tenga que usar RTB para esta pista.

Hora de "llenar" de objetos nuestro proyecto. Como ya dije no tiene que ser estrictamente igual a la realidad pues con el tiempo todos inmuebles y dependencias se renuevan, cambian, etc, así que podemos dejarlo un poco a nuestro gusto.

¿De dónde sacamos los objetos? de los Xpacks. Los descargamos, los instalamos en nuestro RTB, y ya podemos usarlos en el proyecto. El problema es que hay muy pocos Xpacks. La gente o no los comparte o pide dinero por ellos (y es normal, los paquetes de objetos cuesta tiempo y a veces dinero crearlos). Pero también podemos crear nuestros propios Xpacks con la aplicación Xpacker que incluye el propio RTB. Esto es lo que vamos a hacer ahora.


- Xpacker: cómo crear nuestros propios Xpacks y añadirlos a nuestro proyecto de RTB.

Premisas:

- Xpacker es solo un conversor, no crea objetos 3d. Es decir, debemos haberlos creado previamente o haberlos descargado de algún sitio.
- Las geometrías deben estar en formato .FBX y escaladas.
- Las texturas deben estar en formato .DDS DXT5 no mip maps.
- Los iconos de los objetos a añadir deben estar en formato .jpg.
- Respetar estos formatos es importante. Si intentamos crear un Xpack con formatos distintos, el programa se cerrará y el Xpack quedará corrupto e inservible, habrá que empezar de nuevo.
- A la hora de crear un Xpack hay que pensar lo que queramos que incluya. Después no debemos modificarlo (podemos pero corremos el riesgo de cargarnos todo el proyecto).
- Si luego queremos incluir más cosas siempre podemos crear otro Xpack nuevo que añada esas cosas al RTB. No hay límite de Xpacks a cargar en RTB.

Para iniciar Xpacker primero debemos iniciar RTB. Cerramos la ventana emergente, sin cargar ningún proyecto, y minimizamos RTB. Ahora es cuando podemos iniciar Xpacker, solo si RTB está trabajando en segundo plano.

[Imagen: qJqMrj7.png]

[Imagen: pH62vYu.png]

[Imagen: wmmLkWV.png]

[Imagen: Rg4P1q2.png]

Ya tenemos Xpacker abierto. Bien, voy a abrir un proyecto que tengo hecho con el programa Zanoza Modeler v.107b, en concreto un árbol.

[Imagen: kgOEVqJ.png]

Como se ve en la imagen el objeto debe estar correctamente centrado en sus ejes, como si estuviera en el suelo. Incluso, al ser un árbol, no importa que quede un poco enterrado, podemos bajarlo un poco en altura, eso al gusto. Voy a exportarlo en formato .mts para poder cargar el objeto en el 3dSimEd.

[Imagen: gJrXBCf.png]

[Imagen: IXXRZX0.png]

[Imagen: 76cNG8A.png]

[Imagen: M6A3bZ2.png]

Lo siguiente es asignar al material la textura adecuada. Es decir, la textura en formato .DDS DXT5 no mip maps, que luego cargará el Xpacker.

[Imagen: nMKcRKp.png]

[Imagen: tHVdVva.png]

Listo. Podemos hacer una captura de pantalla usando la tecla Impr Pant y usar el programa Paint, por ejemplo, para crear el icono que usaremos en Xpacker. Hecho esto exporto en formato .fbx.

[Imagen: fiVFdGw.png]

[Imagen: CDjoQuF.png]

[Imagen: alCgRjQ.png]

[Imagen: j6vQaHB.png]

Como se puede ver la textura y el material tienen el mismo nombre. Así no me rompo la cabeza a la hora de cuadrar qué textura corresponde a qué material. Y para el objeto lo mismo, un nombre parecido para poder identificarlo con facilidad.

Ya tengo la textura dds, el objeto fbx, el icono jpg y el archivo mts (este último ya no lo necesitaremos). Todo listo. Hora de utilizar el Xpacker.

[Imagen: CDarV0Z.png]

Primero, ponerle un nombre al paquete y luego pinchar en el botón "Create empty Xpack".

[Imagen: qVw6pob.png]

Después añadir el nombre del autor (moi) y pinchar en el botón "Save".

[Imagen: OTwTpQ1.png]

Cambiamos de pestaña. Pincho en la pestaña "Objects" pues lo que quiero es añadir cinco nuevo tipos de árboles. Abajo a la izquierda hay un botón que pone "Add". Pincho ahí.

[Imagen: aURuRb8.png]

Me va a pedir que seleccione el archivo a añadir. Selecciono el objeto .fbx del árbol que acabo de crear.

[Imagen: P3806XE.png]

Al añadirlo me va a preguntar "Scale by 0.01?". Esto es solo para objetos creados desde Blender sin escalar, así que debo pinchar en el botón de "NO". Y después el objeto que hemos seleccionado se habrá añadido a la lista.

[Imagen: EUf3Ztt.png]

[Imagen: DgHLphD.png]

Pincho en la lista sobre el objeto que acabo de añadir. Y en el panel de la derecha debo configurar lo siguiente:

- Group: nombre con el que quiero que aparezcan estos árboles en el menú de escoger objetos, en RTB.
- Load Icon: pulsando este botón selecciono el archivo .jpg que he creado.

El resto de las opciones del panel no debemos tocarlas. Después pincho en Save. Hay que hacerlo sí o sí antes de cambiar de pestaña, o no se guardarán los cambios. No, no guarda automáticamente lo que hemos hecho, hay que recordarlo.

[Imagen: dHWumax.png]

[Imagen: XR4gfmm.png]

Una vez guardados los cambios nos vamos a la pestaña de "Materials". Ahí solo debemos tocar una cosa. Como se trata de un árbol y no es una figura opaca (tiene transparencias) para que aparezca correctamente en RTB hay que cambiar la transparencia. Pinchamos en la pestaña "Assetto Corsa" y en el desplegable "transparency:" seleccionamos "Alpha Test".

[Imagen: ewDDsga.png]

Por supuesto, dado que no guarda los cambios automáticamente, antes de seguir haciendo cosas pulsamos en el botón "Save".

Bien, dejo Xpacker en segundo plano y convierto a .fbx el resto de objetos 3d, a .dds dxt5 no mip map el resto de texturas, y a .jpg el resto de iconos. Y repito este proceso con todos y cada uno de ellos. Al final las listas de objetos y de materiales quedan tal que así.

[Imagen: HTRJ3xN.png]

[Imagen: 9soz9zL.png]

Listo. Para instalar este proyecto de XPacker en Race Track Builder solo tenemos que clicar en File / Zip to RTB... y automáticamente generará un archivo zip con todo este Xpack dentro de la carpeta Xpacks del Race Track Builder. Si queremos compartir este paquete de objetos solo tenemos que compartir ese archivo zip, y listo.

[Imagen: xmtpZGI.png]

[Imagen: Z6yPB3r.png]

Hecho. Cerramos todo (RTB y Xpacker) y abrimos de nuevo RTB. Creo y cargo una copia de la pista con los muros, las líneas y los pianos.

[Imagen: ruWyGiW.png]

[Imagen: GJSNlHa.png]

Hecho esto me voy a Edit / Xpacks y cargo en el proyecto el Xpack que acabo de crear.

[Imagen: NJpkvnP.png]

[Imagen: 4WENPGP.png]

Si busco en el menú de objetos (desplegando la pestaña y buscando el nombre que le di al grupo de objetos) encontraré fácilmente los cinco nuevos árboles. Luego es sencillo: cargar un árbol, "plantarlo" en la pista, y otro, y otro... hacer para el horizonte grupos de árboles, etc.

[Imagen: cniMhhv.png]

[Imagen: zyIcCFY.png]

[Imagen: Db6Z0wy.png]

[Imagen: 5PMfppf.png]

[Imagen: g6NNvrH.png]

[Imagen: Gq5WAVe.png]

[Imagen: Gl7taGN.png]

Hay que curiosear un poco las opciones que nos ofrece RTB. Podemos "plantar" los árboles con rotación e inclinación aleatoria. Podemos variar la altura de los mismos para que parezca que crecen de manera distinta. Podemos... mil cosas, depende de la curiosidad y de las ganas de trabajar.

Una vez colocados todos los objetos los seleccionaremos todos a la vez, pincharemos en "Properties" y nos aseguraremos de que está desmarcada la casilla "collide". Si la casilla está en gris significa que algunos tienen esta característica marcada y otros no, debemos dejar la casilla en blanco.

Collide es una función que "encierra" el objeto dentro de un cubo, el cual hará de colisionador. Esto, que en principio parece buena idea, en realidad no lo es. Porque si se lo aplicamos por ejemplo a un árbol, el cubo encerrará todo el objeto, lo que significa que si nos acercamos al tronco del árbol colisionaremos con un "muro invisible" ya que la parte más grande es la copa con las ramas y las hojas. Y así con todos y cada uno de los objetos. Collide hará, por ejemplo, que transitar por el césped sea imposible. Por lo tanto lo mejor es demarcar esta casilla en todos los objetos.

NOTA IMPORTANTE. 3dSimEd nos permite guardar el proyecto, y como más adelante voy a tener que agregar los edificios, lo guardo (formato .3SE). Cuando haga los edificios solo tengo que abrir el proyecto ya hecho y agregarlos, lo veremos en el último apartado de esta parte.

Una vez hecho ya sabemos lo que toca ¿no?

- Exportar el proyecto en formato .fbx.
- Copiar los archivos y carpetas resultantes dentro de la carpeta de la pista, sobreescribiendo si hace falta.
- Importar en 3dSimEd.
- Eliminar las partes que no nos interesan. Si es necesario, renombrar las partes que van a ser sólidas poniendo delante "1wall_" (no necesario en este caso ya que los árboles están todos fuera de la pista).
- Exportar el nuevo .fbx, copiar el .fbx.ini de todo el proyecto y renombrarlo como el nuevo .fbx.
- Importar el nuevo .fbx en el KSeditor.
- Definir shaders correctamente, exportar como un nuevo archivo .kn5.
- Añadir este nuevo archivo .kn5 a la lista de archivos especificados en los models.ini de los dos layouts.
- Testear.

Voy a poner pocas capturas porque ya sabemos de qué va la película.

[Imagen: MKiyMJj.png]

[Imagen: 8XHDuPG.png]

[Imagen: jNX0cZI.png]

[Imagen: FlYV1AV.png]

Para los árboles he creado un nuevo archivo, sc_kotarr_trees.kn5. El resto de los objetos del proyecto se van a dividir en:

- Césped (sc_kotarr_grass.kn5, objetos no sólidos).
- Vallas, coches, edificios, etc (sc_kotarr_objects.kn5, algunos objetos sólidos y otros no).
- Conos y demás objetos "atropellables" (sc_kotarr_pobjects.kn5, esto requiere algo de trabajo y alguna explicación detallada).

Consideración especial a tener en cuenta cuando diseñamos un objeto 3d.

Si el objeto 3d tiene partes que se iluminan (bombilla de una farola, faros de un coche, etc), cuando estemos diseñando ese objeto debemos especificar un material en concreto para la parte que se ilumina. En el ejemplo, una farola donde hay un material para el cuerpo, y otro para la parte de los focos (especificada como "glow"
y representada de color rojo en las siguientes imágenes).

[Imagen: V3u7R4j.png]

[Imagen: E9Faf91.png]

Sigo. Cargo en RTB una copia del proyecto con los muros y los pianos (sin los árboles). Cargo los Xpacks que me interesan, como podéis ver ya he hecho un huevo de ellos. Y empiezo a "plantar" objetos en el proyecto.

[Imagen: hXBDDLy.png]

Exporto. Cargo en 3dSimEd. Depuro, me quedo solo con lo que necesito, y renombro los objetos colisionables como "1wall_loquesea". Exporto, creando un nuevo .fbx. Cargo el nuevo .fbx en el KSEditor, afino los shaders, exporto el nuevo archivo, sc_kotarr_objects.kn5, y lo añado a la lista de los dos models.ini. El resultado:

[Imagen: fuy7PYU.jpg]

[Imagen: dJoEwgj.jpg]

[Imagen: ZoDS7k8.jpg]

[Imagen: 4UvTOJ1.jpg]

[Imagen: 3kFzctf.jpg]

[Imagen: bIUDChW.jpg]

[Imagen: yg58Pyi.jpg]

Y hasta aquí llegué ayer. No está pero que nada mal para una semana y pico de trabajo.

En lo relativo al RTB y a la parte gráfica de la pista me quedaría solo hacer los edificios, añadirlos al proyecto, y también los pobjects (objetos que podemos atropellar y arrastrar tales como conos). Cuando lo haga editaré este post y lo añadiré a continuación. Saludos para todos.



25/06/2022. Continuamos.

- Pobjects, los objetos que podemos atropellar, golpear, arrastrar y lanzar por los aires.

Ya sabemos utilizar XPacker, cómo crear nuevos paquetes de objetos y colocarlos en el proyecto. También sabemos cómo hacer para que unos objetos sean sólidos y otros no. Es hora de los Pobjects (conos, barreras y cualquier cosa que queramos derribar con el coche).

Para esta ocasión voy a convertir una barrera que ya tenía creada en tres colores (naranja con flechas, roja y blanca). De Zanoza Modeller a mts, de mts a fbx usando 3dSimEd, y de fbx al XPacker. El proceso, que ya sabéis cómo es, en imágenes.

[Imagen: N1LSbjz.png]

[Imagen: h3CM0TT.png]

[Imagen: RplAg38.png]

[Imagen: KIhtykb.png]

Una vez creado el Xpack creo una copia de nuestro proyecto con todo hecho pero sin ningún objeto, y lo cargo en RTB.

[Imagen: ZD5fjfI.png]

[Imagen: wYX9V8i.png]

Y después le cargamos el nuevo Xpack, seleccionamos el objeto a colocar, y empezamos a "plantarlo" por toda la pista.

[Imagen: GU4T9MN.png]

[Imagen: SKUmGl8.png]

[Imagen: a1KEah0.png]

[Imagen: HKE4H0V.png]

[Imagen: phglspb.png]

Listo. Seleccionamos todos los objetos a la vez (están solo los "objetos atropellables"), y en "properties" marcamos la casilla "moveable". Esto es lo que convertirá el objeto estándar en un pobject.

Exportamos en formato fbx y lo cargamos en 3dSimEd.

[Imagen: yQZBwER.png]

Una vez cargado el proyecto borramos todo excepto los pobjects.

[Imagen: Wk0aXTq.png]

[Imagen: zp9Ez91.png]

Exportamos creando un nuevo fbx y lo cargamos en el KSeditor.

[Imagen: Uu5uQhh.png]

[Imagen: qJl1QXr.png]

Bien, conseguido. Pero se ve "raro". Eso es porque el objeto (la barrera de flechas) está encerrado dentro de otro objeto que ha generado RTB automáticamente (un colisionador con forma de cubo). Tenemos que hacer que ese cubo se vuelva invisible.

En la pestaña "scene" tocamos un objeto, y desplegamos el árbol. El primer objeto corresponde al cubo, el segundo a la barrera, tocamos en el primero. Y en el recuadro de abajo a la izquierda cambiamos "Is Transparent" de "true" a "false". "Is Rendeable" también de "true" a "false". Y el cubo desaparecerá, dejando a la vista la barrera.

[Imagen: RwyNztt.png]

[Imagen: oLCyLSF.png]

[Imagen: sumMW3j.png]

Si hace falta (que seguramente sí) también retocamos el shader para dejar el aspecto del objeto a nuestro gusto.

Salvamos persistence, y repetimos con todos los demás pobjects. Después exportamos en formato kn5 y lo agregamos a la lista del archivo models.ini.

Pero ojo. Yo escogí la barrera con flechas. Eso significa que habrá que hacer dos kn5, uno para cada sentido. Si fueran conos, barerras sin flechas, etc, no haría falta, pero en este caso sí.

[Imagen: XeDq4ba.png]

[Imagen: 9nQ3vSF.png]

[Imagen: oTf3qEE.png]

Resultado en partida:

[Imagen: puYzMeB.png]

[Imagen: upD3nH5.jpg]

[Imagen: fn4koNO.png]


- Plantando césped.

Hay una opción de Assetto Corsa llamada "3D grass" que nos permite crear césped en 3D para la pista, es necesario tener instalado el Custom Shader Patch. Pero yo no lo suelo usar, el resultado es discutible y además en pistas como estas, donde la mayor parte del terreno es tierra y solo hay matorrales de vegetación, es recomendable simplemente "plantar" objetos 3d de césped.

RTB nos trae de fábrica varios objetos de vegetación para el proyecto, pero a mi no me gustan por lo que creé mis propios objetos de césped, matorrales, vegetación, etc.

Es recomendable que la vegetación se haga en un archivo aparte, como con los árboles: consumen muchos recursos del PC y puede dar error si nos pasamos en el número de objetos. De hecho para el Jarama hice cuatro archivos kn5 de vegetación, porque si no subdividía en varios kn5 tanto el editor como el juego colapsaban. Así que en Kotarr me toca al menos añadir un kn5 más, solo para la vegetación.

El proceso es el mismo que ya hemos hecho: crear una copia del proyecto solo para la vegetación (con el terreno, el asfalto y los pianos solamente), "plantar" el césped usando la función "lasso", exportar en fbx, limpiar todo menos los objetos en 3dSimEd, exportar en un nuevo fbx, cargarlo en KSeditor para crear el kn5, y añadir la línea con el nuevo kn5 a los archivos model.ini.

[Imagen: 8v0t3y7.png]

La función "lasso" es dibujar el área donde queremos plantar el césped. Podemos elegir la densidad, la rotación, la separación entre objetos, etc.

[Imagen: SwmUHul.png]

[Imagen: ThkUG9Y.png]

[Imagen: A2vPiVE.png]

Fijaros en la cantidad de objetos (marcados en amarillo al seleccionarlos todos a la vez). Son muchísimos. Por eso es recomendable ir haciendo pruebas. Termino 1/3 del circuito y exporto. Si el programa no colapsa sigo. Y así hasta que o bien colapse (y entonces ya sé hasta dónde puedo hacer para cada kn5) o bien esté todo hecho (y entonces tendré un solo kn5 con el césped).

[Imagen: uYrchmA.png]

[Imagen: sEGme7J.png]

[Imagen: ceriLn8.png]

Bueno. Como es un circuito pequeño no colapsó. Hora de exportar, pasarlo a fbx con el 3dSimEd, depurar, y luego a KSeditor.

[Imagen: 0SVI2KB.png]

[Imagen: z0MYHQI.png]

[Imagen: aUrRCKi.png]

[Imagen: wZhCcVt.png]

Todo bien. Después de añadir el nuevo kn5 a los model.ini toca una prueba en partida.

[Imagen: TXvgSWO.png]

[Imagen: vIJIPa9.png]

[Imagen: QAgD2e3.png]

[Imagen: 8Mxyv8a.png]

Y listo. Nos acercamos al final del apartado gráfico.

Nota. Límite de imágenes alcanzado, continúo en el siguiente post.
Responder
(11-06-2022, 00:38)Alberto_92 escribió: Mañana lo leo más detenidamente.

Con lo poco que se de informática me quito el sombrero ante el nivel que tienes.

Para mí sencillamente... fascinante. Y aunque como digo... no se mucho y hay conceptos que no comprendo bien es todo un deleite ver los conocimientos que posees.

Gracias Mola . No quiero que pienses que peco de falsa modestia, sé que mis resultados están bastante bien, pero también sé que palidecen ante el trabajo de otros. Hay verdaderos artistas por el mundo adelante.

El tutorial está a medio camino. Aún me quedan cosas que enseñar. Y cuando esté terminado pondré tanto la pista para descargar, para que la gente la use de plantilla para hacer sus propias pistas, como todas las herramientas que he enseñado aquí. Luego es lo de siempre, quien quiera intentar hacer algo que tenga paciencia, despacito y buena letra. Nadie nace aprendido, a nadie le sale un trabajo que te cagas en su primer diseño. Es cuestión de intentarlo y paciencia. Y al tiempo sale. Así es como aprendí yo.

Ahora estoy liado con los Pobjects (objetos que podemos atropellar y mandar a tomar por culo, como conos, barreras de plástico, etc). En cuanto los termine publico el siguiente episodio del tutorial.

Saludos para todos.
Responder
Sigo trabajando y haciendo capturas. Césped terminado, como es un terreno bastante árido he puesto más matorrales que césped en sí. Objetos "atropellables" terminados. Realmente del apartado gráfico ya solo me queda hacer los edificios (que tengo que hacerlos desde cero), y "remendar" unos detalles de la textura del terreno. Pero todo esto ya me va a llevar unos días.

De momento dejo unas capturas. Saludos para todos.

[Imagen: 51l28RE.jpg]

[Imagen: LmyXSeB.jpg]

[Imagen: niaWm5q.jpg]

[Imagen: 0iPCHkR.jpg]

[Imagen: PPL4f29.jpg]

[Imagen: Dow7eNU.jpg]

Cuando termine lo pendiente actualizaré la Parte 8 de este tutorial, y seguiré con el resto: cámaras de repetición, efectos de sonido ambientales, efectos de luces (modo noche) y efecto de lluvia (rain_fx). Realmente es lo que queda por explicar.

Saludos para todos.
Responder
Me quito el sombrero... no, lo siguiente.

Me he comido el post de arriba abajo, y es acojonante.... Enhorabuena por tener dicha destreza en realizar estos mods, es increíble...
Responder
(15-06-2022, 20:11)Pedro-127 escribió: Me quito el sombrero... no, lo siguiente.

Me he comido el post de arriba abajo, y es acojonante.... Enhorabuena por tener dicha destreza en realizar estos mods, es increíble...

¡Gracias meu, un abrazo muy fuerte!!!
Responder
Que maravilla de tutorial, menudo trabajazo, ya no solo el hacer el mod, sino explicarlo con tanto detalle y para "dummies". Dan ganas de ponerse manos a la obra a crear algun circuito/carretera de confianza Sisi1

Muchisimas gracias por compartirlo!
Responder
(23-06-2022, 10:24)davidgl escribió: Que maravilla de tutorial, menudo trabajazo, ya no solo el hacer el mod, sino explicarlo con tanto detalle y para "dummies". Dan ganas de ponerse manos a la obra a crear algun circuito/carretera de confianza Sisi1

Muchisimas gracias por compartirlo!

Pues esa es la idea. Ahora mismo estoy terminando el apartado gráfico de Kotarr, estoy haciendo el edificio de torre de control y boxes. Después de eso puedo seguir con las partes que quedan del tuto y subir la pista para que la disfrutéis.

Después si no hay novedades empezaré / continuaré otros proyectos para AC.

Saludos para todos.
Responder
Parte 9. Race Track Builder: últimos objetos y finalización del apartado gráfico.


Continúo aquí porque llegué al tope de imágenes por mensaje en la anterior parte. Como en esta pista hay muy pocas edificaciones las he dejado para el final. Y para ello tenemos varias opciones.

1- Diseñar los edificios, crear un nuevo fbx, crear un nuevo kn5 con KSeditor y agregarlo a la lista de los model.ini.
2- Diseñar los edificios, agregarlos al proyecto de objetos en 3dSimEd, y crear un nuevo kn5 con Kseditor reemplazando el existente.
3- Diseñar los edificios, convertirlos con XPacker, agregarlos a RTB, exportar los nuevos objetos (mts), agregarlos al proyecto de objetos en 3dSimEd, y crear un nuevo kn5 con KSeditor reemplazando el existente.

¿Y cuál elegimos?

Pues La opción 1 es diseñarlo en la posición final ya ajustado y exportarlo sin más. Pero agrandamos la lista de archivos kn5.
La opción 2 igual que la 1 pero integrando el edificio en un archivo ya existente.
Y la opción 3, al colocar el edificio dentro de RTB, nos permite añadirle cosas. Como lo voy a hacer con las zonas de boxes abiertas puedo añadir en el interior de cada box coches aparcados, herramientas, público, etc. También porque quiero colocar en el techo del edificio espectadores. Por lo tanto voy a tirar por esta opción.

Lo primero, crear el edificio. Ya hay un post en este tema que explica cómo hacerlos con Zanoza Modeller, para quien quiera consultarlo. Recordemos que hay que crearlo separando de forma independiente los elementos que más tarde queremos que se iluminen: focos, ventanas, etc.

El proceso en imágenes:

[Imagen: 9IGHx7l.png]

[Imagen: jgrtMqE.png]

[Imagen: 2GZRJdD.png]

[Imagen: dGytBBC.png]

[Imagen: lWenZLq.png]

[Imagen: H0mArgt.png]

[Imagen: ne5dYJY.png]

[Imagen: mzds5Hv.png]

[Imagen: 624Q5nk.png]

[Imagen: vIceoBn.png]

[Imagen: 4uDtW1E.png]

Sí, también le he hecho el suelo y la acera, ya que mi intención es colocarle cosas dentro. Hecho el edificio y exportado a fbx (totalmente centrado), lo importo con Xpacker.

[Imagen: 2oxTrrT.png]

[Imagen: aV8DVes.png]

Cargo el nuevo Xpack en RTB y lo coloco correctamente. Después le agrego todo lo que quiero al interior.

[Imagen: dqpxzvr.png]

[Imagen: wS1XlCe.png]

[Imagen: TbjiHKu.png]

[Imagen: g09WWdW.png]

[Imagen: uPmhDgJ.png]

Hecho esto exporto en un nuevo fbx, depuro con 3dSimEd, dejando solo los objetos que quiero: edificio, y coches, herramientas y personas dentro de los boxes, también el público del tejado. Exporto en mts estos objetos. Los renombro con el nombre "1wall_loquesea" (recordemos esto que siempre es importante, o serán objetos intangibles). Abro el proyecto 3SE de los objetos, y le agrego los nuevos objetos pinchando en "Primitives / add object".

[Imagen: jaD2Mi8.png]

[Imagen: TJnAIvl.png]

[Imagen: FmQx93X.png]

Una vez hecho exporto el fbx reemplazando el fbx de los objetos ya existente. Lo cargo en KSeditor, asigno shaders, etc.

[Imagen: Wj1P3CG.png]

Y exporto en formato kn5, reemplazando el kn5 de los objetos ya existente. El resultado ingame...

[Imagen: 0x2Vlrh.jpg]

[Imagen: nHCO4YP.jpg]

[Imagen: wNFQP2R.jpg]

[Imagen: 7cTm6PD.jpg]

[Imagen: 560FAPL.jpg]

[Imagen: 786iQC5.jpg]

[Imagen: sCqzzFH.jpg]

Los últimos retoques. La imagen de fondo de Google. Pues nos deja sombras, borrones, etc. Siempre podemos editarla con Adobe Photoshop, abrir el terreno con KSeditor, y cargar la nueva textura editada. Esto nos permitirá por ejemplo perfilar mejor el asfalto sobre el terreno y rematar el aspecto.

[Imagen: 9t8HFcP.png]

Resultado ingame.

[Imagen: AnqM7ht.jpg]

[Imagen: 8xLRVj4.jpg]

[Imagen: 0bdZFwf.jpg]

[Imagen: boc0I6C.jpg]

Y con esto se termina RTB y el apartado gráfico. He dejado el proyecto exactamente como quiero, por lo que no necesitaré ningún programa más de diseño en 3d. Cuando el apartado gráfico está totalmente terminado es cuando hay que pasar a la siguiente fase. Y ahí solo usaré el KSeditor ya que voy a crear las cámaras de repetición. Son partes ligeras, dependiendo de lo que me dejen tranquilo en casa acabaré pronto o muy pronto.

Saludos para todos.
Responder
Parte 10. Cámaras de repetición.


En Assetto Corsa después de correr en una carrera podemos guardar la carrera y cargarla, poniendo varias vistas. Una de ellas es la cámara exterior de la pista, como si fuese una retransmisión de televisión. Esta vista es la vamos a crear en el tutorial de hoy.

Lo primero, se hace una cámara de repetición por layout. Voy a empezar con el layout "normal" y una vez hecho repetiré la operación con el layout "reverse". Para hacer las cámaras de repetición es imprescindible:

- Haber terminado totalmente la superficie del trazado de la carrera.
- Haber grabado la IA definitiva.

La cámara de repetición se hace utilizando estas dos cosas, por lo que si hacemos las cámaras de repetición y luego modificamos la superficie o la IA, la cámara no funcionará correctamente. Se moverá de sitio, apuntará hacia el lugar equivocado, etc.

Bien, vamos con el layout "normal". Para ello nos vamos a la carpeta "data" del layout, en este caso la ruta es (carpeta del juego) / content / tracks / sc_kotarr / sc_kotarr_norm / data. Allí abrimos el archivo cameras.ini con bloc de notas o similar.

[Imagen: NzshJie.png]

Nos aparecen un montón de cosas, porque son las cámaras de repetición de la pista que usé como base para hacer la mía, al principio de todo el tutorial. Borramos todo el contenido del documento, dejándolo en blanco, y guardamos.

[Imagen: WNJe747.png]

Listo. Ahora es cuando podemos crear nuestras propias cámaras de repetición. Abrimos KSeditor. Y cargamos el .fbx correspondiente a la trazada de la carrera. Solo ese archivo.

[Imagen: ul2Ljc6.png]

[Imagen: nDe2Jzn.png]

Nos vamos a la pestaña "AI Spline" y cargamos la inteligencia artificial correspondiente a la carrera, sin pasar por boxes, de este layout. Para ello pinchamos en "Load", entramos en la carpeta "ai" del layout, y seleccionamos el archivo "fast_lane.ai". Si lo hemos hecho bien se cargará una línea morada, igual que veíamos en el capítulo para crear la inteligencia artificial del juego.

[Imagen: 25GnArq.png]

[Imagen: ykcOjOD.png]

[Imagen: RhGgJue.png]

Bien. Con el ratón y las teclas del cursor movemos la vista, lo que estamos viendo es lo que se verá en la cámara de repetición. Nos orientamos hacia el punto de salida / meta de la carrera, y nos colocamos hacia donde queremos que mire la primera cámara de repetición. Una vez hecho nos vamos al recuadro de abajo, pinchamos en la pestaña "Track cameras" y por último pinchamos en el botón "Add here". Se añadirá la primera cámara con el nombre "UNNAMED".

[Imagen: 6VWiyZq.png]

[Imagen: 9N7sduX.png]

Pinchamos en "UNNAMED" y como podéis ver arriba el recuadro en blanco se rellenará con varios parámetros. Para indicarle que queremos que esta primera cámara se vea tal cual se ve en la vista previa pinchamos en "Set from here".

Ahora vamos a establecer en qué punto del recorrido entra esta cámara. Los puntos donde entran y salen las cámaras se representan numéricamente, donde 0 sería el punto de partida y 1 el punto de llegada. Como es la primera cámara donde pone "InPoint = -1" editamos manualmente y escribimos el valor "0.01".

[Imagen: ZdY8FlN.png]

[Imagen: aeGSQCu.png]

Bien, punto de entrada de la cámara establecido. Ahora nos vamos al valor de salida. Movemos la cámara hacia donde queremos que termine esta cámara, como ya establecimos la posición y la orientación pulsando en "set from here" podemos moverla libremente. Pero tampoco conviene movernos mucho del punto, más bien solo la giramos con el ratón.

Y una vez orientada hacia donde queremos que se corte la cámara, pinchamos con el botón derecho del ratón sobre la línea morada, justo donde queremos que la cámara se corte.

[Imagen: FHJggK7.png]

[Imagen: ye6uRJv.png]

Como vemos aparece una línea vertical amarilla. Esta línea es el punto de referencia. Si pinchamos en el botón "Set OUT" lo que hará será añadir el valor que representa esa línea vertical al parámetro "OutPoint".

[Imagen: YrIXcwU.png]

[Imagen: 2RW8pwl.png]

Si os fijáis un pedazo de la línea morada se ha vuelto azul. Ese fragmento azul sería el recorrido de la cámara, dónde entra (principio de la línea azul) y donde termina (final). Nos sirve de referencia para hacernos una idea.

Primera cámara lista. Ahora pinchamos en "Name / UNNAMED" del recuadro blanco, y le ponemos el nombre que queramos. Yo le he puesto "START".

[Imagen: BLacuqX.png]

Después pinchamos en el botón "refresh". Esto es muy importante, guardará todos los parámetros que hemos metido. Al hacerlo veremos que ya cambia el nombre de la cámara en la lista de la izquierda, de UNNAMED a START.

[Imagen: A4Cr1DW.png]

Último paso. Guardar la cámara que hemos creado. Nos vamos a la pestaña superior "Track Cameras", pinchamos en "Save", y seleccionamos el archivo "cameras.ini" que habíamos dejado previamente en blanco.

[Imagen: oUKgSPl.png]

[Imagen: kkl1HgK.png]

[Imagen: pCMlnAR.png]

Primera cámara lista y guardada. Vamos con la segunda. La idea es que la segunda cámara empiece justo donde acaba o corta la primera.

Repetimos el proceso exactamente igual. Primero nos movemos hacia donde queremos que esté posicionada la segunda cámara.

[Imagen: j7dQlXu.png]

Una vez posicionada, pinchamos en "Add here" para crear la nueva cámara. En la lista de cámaras, abajo a la izquierda, aparecerá una nueva cámara llamada "UNNAMED". Pinchamos sobre ella.

[Imagen: 8H9wHU8.png]

Pinchamos en "Set from here" para decirle a la nueva cámara dónde estará posicionada y su orientación.

[Imagen: TCOoP3h.png]

Establecemos el punto donde va a empezar la cámara, que será el mismo de salida de la cámara anterior (cámaras encadenadas, cuando termina una empieza la otra). Y como tenemos ya el marcador donde termina la otra cámara (línea vertical amarilla) nos limitamos a pinchar en "Set IN". Automáticamente se añadirá el valor a la casilla "InPoint".

[Imagen: ew2RSEA.png]

Si miráis las imágenes anteriores, el valor de InPoint de esta segunda cámara es el mismo valor de OutPoint de la cámara anterior. Si coinciden es que lo hemos hecho bien, donde termina una empieza la otra, encadenándose.

Giramos la vista hacia donde queremos que la cámara se corte. Pinchamos con el botón derecho del ratón sobre la línea malva exactamente donde queremos que termine esta cámara. Y el marcador (línea amarilla) habrá cambiado de posición.

Pinchamos en "Set OUT" y el valor del marcador se agregará a la casilla "OutPoint".

[Imagen: Nn99fvl.png]

[Imagen: zN0A73S.png]

Últimos pasos. Cambiar el nombre. Pinchar en el botón "refresh". Y guardar los cambios en el archivo cameras.ini.

[Imagen: wMZGaJD.png]

[Imagen: pAZs0Ag.png]

[Imagen: rCEXai7.png]

La mecánica es sencilla. Repetiremos la operación para crear la cámara 3, la cámara 4, etc, todas las que queramos. Siempre el OutPoint de una cámara es el InPoint de la siguiente cámara, para conseguir el efecto encadenado. La excepción es la primera cámara (valor de InPoint = 0.01) y la última (valor de OutPoint = 0.99), que introduciremos manualmente. Se hace así para que coincidan con la línea de salida / meta. Captura de la última cámara:

[Imagen: OLaJ6e3.png]

Testeo ingame. Simplemente cargo una carrera guardada y le doy al botón de "replay" para ver si las cámaras están a mi gusto.

[Imagen: l3hkWaa.png]

[Imagen: 51ZSAtR.jpg]

[Imagen: J1GOhfx.jpg]

[Imagen: Wgt5ihp.jpg]

[Imagen: 2KY6poo.jpg]

[Imagen: AwhASen.jpg]

[Imagen: gFgjDIP.jpg]

¿Y después de cerrar KSeditor se puede modificar algo? Sí, claro. Iniciamos KSeditor. Cargamos el .fbx con la trazada. Cargamos la inteligencia artificial. Luego en la pestaña superior "Track Cameras" pinchamos en "Open", cargamos el archivo "cameras.ini" y aparecerán todas las cámaras que hemos creado.

Nota. Es posible que aparezca la vista emborronada después de cargar todo. Si pinchamos sobre la pista con el botón derecho aparecerá la línea vertical amarilla y la vista se enfocará correctamente. Es defecto del editor.

Si algo no nos gusta (colocación de la cámara, punto de entrada, punto de salida, lo que sea), lo modificamos y listo. Pero si modificamos un punto de entrada o de salida, hay que recordar que las cámaras son encadenadas, tendremos que modificar también la cámara que corresponda (la anterior si modificamos el punto de entrada, la posterior si modificamos el punto de salida). Podemos hacer la modificación que queramos, pinchar en "refresh" y salvar los cambios, sobreescribiendo el archivo existente.

No tiene mucho misterio, la verdad. Recordemos que hemos creado las cámaras de un solo layout, tenemos que repetir la operación con los siguientes si los hubiera.

Otras cosas que podemos hacer:

- Abrir manualmente el cameras.ini y ponerle el nombre que nos de la gana en la cabecera. Esto se verá en el juego al cargar una repetición.
- Crear varios cameras.ini, podremos cargarlos en la repetición (cameras.ini, cameras2.ini, cameras3.ini, etc).
- Cambiar más valores, de forma manual (editando con bloc de notas el archivo cameras.ini) o a través de KSeditor:
  • Fixed: false por defecto (la cámara sigue al coche) o true (la cámara está fija en una posición).
  • FOV: valores de apertura (número alto plano muy abierto, se ve todo el escenario, número bajo la cámara enfoca solo el coche). Sin efecto zoom los valores de Minimun y Maximun deben ser el mismo, para hacer efecto zoom ponemos valores distintos (según lo que queramos hacer).

Truco: cuando el layout "normal" y el layout "reverse" es el mismo, pero cambiando la dirección de la carrera (este caso).

- Copiamos el cameras.ini del layout "normal" y lo pegamos en el layout "reverse", sobreescribiendo el archivo existente.
- Editamos el cameras.ini del layout "reverse" con bloc de notas, y reordenamos las cámaras, de tal forma que la primera sea la última, y la ultima la primera (editando también el parámetro [CAMERA_número de orden], de tal forma que todas queden ordenadas y numeradas secuencialmente).
- Abrimos KSeditor. Cargamos la trazada (.fbx). Cargamos la IA del layout "reverse". Cargamos el cameras.ini del layout "reverse". Y tendremos todas las cámaras en posición, solo tendremos que poner nuevos puntos de entrada y de salida para cada cámara. Si tenemos dudas de dónde entra y sale cada cámara, podemos abrir el KSeditor dos veces a la vez, en uno con el layout "reverse" que es el que estamos haciendo, y el otro el layout "normal" para ver dónde entra y sale cada cámara. Pinchando en cada cámara de la lista, la vista se pondrá en posición y aparecerá la línea azul, marcando dónde entra y dónde sale esa cámara, nos vale de guía para el layout que estamos trabajando.
OJO. Al estar trabajando con dos KSeditors abiertos a la vez, hay que fijarse muy bien que estemos guardando los datos en el cameras.ini del layout correcto.
- Una vez editados todos los puntos de entrada y salida de las cámaras del layout "reverse", guardamos el cameras.ini sobreescribiendo, y cerramos todo. Listo. Ya podemos hacer un testeo ingame.

Y aquí se termina la parte de las cámaras. En el capítulo siguiente ya entramos en los efectos que podemos añadir gracias al modding (CSP, SOL y CM).

Saludos para todos.
Responder
Parte 11. Custom Shader Patch (CSP), SOL y Content Manager (CM): iluminación nocturna, lluvia, sonidos ambientales, etc.


Assetto Corsa se estuvo desarrollando desde el año 2010 hasta 2020, publicándose diversas actualizaciones desde la "early access" hasta la última versión (v.1.16.3). Entre medias los jugadores demandaban más opciones para el juego, pero la empresa desarrolladora (Kunos Simulazioni) se negaba alegando que no era posible, que el motor gráfico (Unreal Engine 4) no lo soportaría.

El porqué no se sabe (¿ya ganaban bastante con el juego tal y como estaba?), pero sí es posible. Un usuario llamado Ilja, conocido como X4fab, desarrolló el Custom Shader Patch (CSP), que agrega nuevos shaders y por lo tanto nuevas opciones de iluminación, reflejos y demás. Se desarrolló conjuntamente con Peter Boose el SOL, un parche que agrega nuevas climatologías. El resultado es que podemos agregar nuevas opciones al juego: correr de noche con iluminación en el circuito, correr con lluvia, correr en realidad virtual (VR)... un montón de cosas. También creó el Content Manager (CM), un gestor del juego que podemos usar opcionalmente.

Todo esto funciona como una extensión del juego original, añade más opciones sin modificar el contenido original. Hasta la parte 10 del tutorial he hecho todo lo que se puede hacer con el juego de serie. A partir de aquí es necesario CSP, SOL y CM si queremos agregar todas estas opciones a nuestra pista.


- Preparando la extensión para nuestra pista.

La extensión se aplica a todos los layouts y todos los modos de juego de la pista, salvo que lo especifiquemos.

Abrimos la carpeta de nuestra pista y creamos una nueva carpeta llamada "extension".

[Imagen: jD89Yfx.png]

[Imagen: HylNvZq.png]

Entramos en la carpeta creada y creamos el archivo "ext_config.ini".

[Imagen: lxdPzxj.png]

Es en este archivo donde hay que "programar" todas las nuevas funciones de la pista. Iluminación, modo lluvia y nuevos sonidos, hasta el momento. En el futuro es posible que se añadan más efectos, no se sabe, eso dependerá del desarrollador.

¿De dónde sacamos todas estas líneas de programación? De otra pista que ya tenga estas líneas. Copiar, pegar, y cambiar algunos parámetros para adaptarlos a nuestra pista. Empiezo con la iluminación.


- Iluminación nocturna.

Aquí es donde va a cobrar importancia el haber separado los materiales que se iluminan de los que no, y las geometrías de los objetos que iluminan de los que no.

Lo primero, la iluminación en el juego no funciona como en la vida real. Si tú enciendes una bombilla, esa bombilla emite luz que se refleja en la superficie. En el juego son dos cosas separadas: la parte incandescente del foco (yo lo llamo GLOW) y la parte que emite la luz (la llamo EMISSIVE). Se utiliza material para glow (por ejemplo, de una farola solo el material de la bombilla) y para emissive el objeto (uno solo, en una farola toda ella si fuese objeto de una pieza).

¿Por qué así? Pues porque si selecciono glow para un objeto, veremos todo el objeto brillando, como si fuese todo bombilla. En el ejemplo de la farola veríamos todo el metal brillando. Por eso separo materiales: uno para la parte que brilla y otro para la que no, aunque sea un único objeto.

Los objetos más complejos, por ejemplo coches aparcados, igual. Suelen tener múltiples materiales y partes. Asigno glow blanco para faros delanteros, glow rojo para luces traseras, y si tuviera más elementos que se iluminan (sirenas), otro glow para cada uno de ellos.

Resumiendo. Podemos hacer que un foco se encienda y brille, pero que no ilumine. O un objeto que no brille, pero que emita luz y se refleje en las superficies. Es decir, que van por separado, y que por lo tanto si queremos que la bombilla de un foco brille y emita luz tendremos que hacer dos operaciones. Esto es bueno, nos permite que un único emissive ilumine un área entera, pero que dentro de esa área haya varios glows. Esto reduce muchísimo la carga en el procesador sin quitarle realismo, además no tiene sentido que varios emissive se solapen.

Vamos allá. Abrimos nuestro ext_config.ini y paralelamente abrimos el de otra pista que tenga estos efectos. Vamos a copiar partes de esa pista terminada y pegarlas en la pista que estamos desarrollando.

Empezamos por copiar:

Cita:[LIGHTING]
LIT_MULT = 1

[INCLUDE]
INCLUDE=common/conditions.ini, common/conditions_blm.ini

[CONDITION_30]
; turns lights on a little earlier (5° above horizon). used for indoor lights, windows, etc.
NAME = SMOOTHSUNA
INPUT = SUN
LUT = (|0=0|85=0|85=1|180=1)
LAG = 0.97

Y pegarlo en nuestro archivo ext_config.ini

Los primeros párrafos indican que aparte de estos efectos hay que incluir los que trae el juego originalmente, el último párrafo establece que las iluminación de la pista se encenderá automáticamente cuando esté amaneciendo, anocheciendo o sea de noche.

[Imagen: vVq0mR5.png]

Ahora, justo encima del último párrafo, iremos copiando y pegando todo lo que necesitamos.

Iniciamos el juego. Seleccionamos la pista en modo. Le ponemos de clima "Night Dark" y las 18h. Iniciamos partida en modo Práctica.

[Imagen: XR9qY7e.png]

[Imagen: PKfWioy.png]

Se trata de editar el ext_config.ini con el juego encendido de fondo. En el menú de apps encendemos el "Objects Inspector". Esta herramienta es muy útil. Además, según vayamos editando nuestro ext_config.ini y salvando, iremos viendo los cambios en tiempo real.

[Imagen: iu6vh7P.png]

Como bien pone ahí mantenemos pulsada la tecla Alt y pinchamos en el objeto que queremos que se ilumine. Podemos usar el Objects Inspector en la cámara de repetición, para movernos libremente.

[Imagen: Lh8tO7j.png]

Mantengo pulsada la tecla Alt y pincho en la bombilla del foco que hay justo en la pared de boxes. El objeto seleccionado se marcará de color azul.

[Imagen: pi9X1H9.png]

Ahora Objects Inspector nos está dando unos valores. Nombre del material, nombre del objeto, etc. Esto es lo que necesito.

Lo primero, busco en el ex_config.ini de la pista terminada el párrafo que necesito. Las líneas que establecen las bombillas brillantes en blanco. Y lo pego en mi ext_config, justo encima del párrafo [CONDITION_30].

En nuestro ext_config.ini donde pone "MATERIAL_ADJUSTMENT_elnumeroquesea" debe ir, como siempre, por riguroso orden númerico. En este caso ambos coinciden (primer material) con lo cual no hace falta cambiar nada, solo copiar y pegar.

[Imagen: qUmuj0Y.png]

Pichamos en el juego, que está en segundo plano. En la ventana de Objects Inspector pinchamos en el nombre del material, y automáticamente se copiará al portapapeles.

[Imagen: mwkYOxt.png]

Ahora vamos a nuestro config_ext.ini y donde pone MATERIALS= borramos lo que pone, pegando el que copiamos de Objects Inspector.

[Imagen: NQdrSwH.png]

En cuanto guardemos los cambios del config_ext.ini, automáticamente veremos el cambio en el juego. Y así lo hacemos. Resultado:

[Imagen: FNLZzxr.png]

Siguiente paso, luz reflejada en el suelo (emissive). Lo mismo, copio el párrafo que nos interesa de la otra pista y lo copio en nuestro ext_config.ini

[Imagen: 0L4F7jg.png]

En Objects Inspector pincho sobre el objeto que queremos que emita luz, y copio lo que pone en Mesh.

[Imagen: 3dIRdR7.png]

En nuestro ext_config.ini, donde pone pone MESHES= añado a continuación lo copiado desde Objects Inspector.

[Imagen: 1NsAn3l.png]

Salvo cambios y automáticamente vemos los cambios en el escenario.

[Imagen: Tp969hz.png]

Bien, "progresa adecuadamente" como nos ponían en la EGB Elrisas . Ahora quiero al primer ajuste de materiales añadir los faros delanteros de los coches. Pero solo esto, sin que emitan luz para no sobrecargar la pista (cuantos más efectos añadamos más se ralentizará el juego).

¿Hay que copiar un párrafo para cada material que querramos añadir? No. Podemos usar un párrafo para varios materiales, solo los añadimos a continuación, separados por una coma y un espacio. Ejemplo, voy a añadir los faros delanteros de uno de los coches aparcados.

[Imagen: JEI40MA.png]

[Imagen: gH8IgAB.png]

Y así repetimos con todos los objetos que nos interesan iluminar. Por eso era importante durante el diseño de cada objeto separar en distintos materiales las partes que se iluminan. Yo suelo separar de la siguiente manera:

- Faros delanteros de coche aparcado / bombillas de farolas = material glow blanco.
- Faros traseros de coche aparcado = material glow rojo.
- Ventanas de edificios (interior con luces encendidas) = material glow blanco pero muy atenuado.
- Luces verdes de semáforo = material glow verde.
- Luces parpadeantes = material / objeto blink (el que corresponda, sirena azul de ambulancia, sirena verde de coche de la guardia civil, flechas de indicación en pista, etc).
- Luces reflejadas en superficie = objeto emissive (el que corresponda: objetos de farola, objetos de apliques de pared, etc).

En cada uno de los párrafos se establece los parámetros de la luz como color (RGB), intensidad, orientación, extensión (cuanto más arriba esté situado el objeto que emite luz, más área iluminará)... en fin, mil cosas. En la línea CONDITION de cada tipo de luz se establece cómo se comporta esa luz, remitiéndonos al nombre del párrafo donde se marcan los párametros ([utilizo el nombre b]BLINK[/b] para parpadeos, con el número que corresponda, y SMOOTHSUNA es para que se enciendan solo de noche, si lo dejamos en blanco estarán encendidas día y noche).

Podéis usar cualquiera de mis pistas como base para hacer la vuestra, es copiar y pegar, y luego sustituir los nombres de los materiales o de los objetos por los de vuestra pista. Incluso podéis copiar directamente el ext_config.ini de una de mis pistas a la vuestra, luego es solo cambiar materiales y objetos en las líneas MATERIALS y MESHES, según sea un glow o un emissive. Y por último, si queréis cambiar algo, es jugar con los parámetros de cada luz (más intensidad, distinto color, parpadeo, o lo que queráis) hasta dejarlos totalmente a vuestro gusto.

Resultado:

[Imagen: smYgvZM.jpg]

Luces parpadeantes de las sirenas de policías, ambulancias, etc, (glow) funcionando. Luces de las ventanas de la torre de control (glow) funcionando. Iluminación de la zona de boxes (emissive) funcionando.

[Imagen: aIAEYMN.jpg]

[Imagen: aS08cye.jpg]

Luces verdes de start / meta (glow + emissive) funcionando.

[Imagen: ZmzaGm3.jpg]

Luces glow de coches aparcados (blanco y rojo) funcionando.

[Imagen: ofcMjIH.jpg]

[Imagen: EeMZeMV.jpg]

[Imagen: HsI10v8.jpg]

Iluminación general de la pista (emissive) funcionando.

[Imagen: jR7zoTR.jpg]

Como siempre todo en esta vida es mejorable, me he inventado la luminaria de Kotarr porque nunca he visto una carrera de noche en esta pista. Por otro lado esto es un juego, podemos "mejorar" la realidad como hice en el circuito de Jarama, que en la vida real tiene una luminaria claramente insuficiente, y en el juego podemos correr con claridad.

La primera prueba de luz está casi perfecta. Probablemente añada un par de farolas donde los espectadores, para iluminar más área. Tal vez sustituya algún par de luces blancas por amarillas.


- Efecto de lluvia (RAIN_FX).

El efecto de lluvia es una parte del CSP que aún está en desarrollo. De momento solo incluye efectos visuales, pero está proyectado que en el futuro incluya efectos físicos: banda de rodadura "seca" sobre el asfalto, cambio de agarre según ruedes sobre seco o mojado, etc.

El autor del CSP, viendo la demanda, ofrece el parche CSP gratis excepto el efecto lluvia, que hay que pagarlo en su Patreon aparte. Para hacer las pistas estoy usando la versión 176-preview-full-4.

Para añadir el efecto lluvia utilizamos la misma mecánica de trabajo que para los efectos de iluminación. Abrimos nuestro ext_config.ini para añadirle las líneas necesarias de otra pista.

[Imagen: UxOSODV.png]

[Imagen: CzSFWuM.png]

[Imagen: 5ziCaFM.png]

Después borramos las referencias a los materiales de la otra pista, para poner los nuestros.

[Imagen: 42X2ySv.png]

Aquí lo importante son las siguientes líneas:

- PUDDLES_MATERIALS = y SOAKING_MATERIALS = : se refieren a superficies horizontales (suelos). Asfalto, pianos, líneas pintadas, tierra, césped, etc. Ojo, no incluir la vegetación (árboles, objetos de césped, matorrales, etc). Son charcos de agua sobre la superficie. Estas dos líneas deben ser exactamente iguales.
- SMOOTH_MATERIALS = : se refieren a superficies verticales (paredes) y objetos bajo la lluvia (coches, neumáticos, cristales, lo que sea). Lo mismo, no se incluye la vegetación. Son gotas sobre superficie que "corren" hacia abajo.

Como ya dice la propia nomenclatura lo que vamos a añadir son los materiales de los objetos. No hace falta añadirlos todos, por ejemplo las banderas son objetos en movimiento y no se van a apreciar las gotas en superficie. Tampoco aquellas zonas que estén fuera del alcance visual. Incluir lo que no es necesario, como siempre, solo aumentará la carga sobre el motor gráfico.

Solo necesitaremos el párrafo de las imágenes e ir añadiendo los materiales, nada más. Los iremos añadiendo exactamente igual que hicimos con las luces, separados por una coma y un espacio, mientras tenemos el juego en segundo plano.

Bien. Ahora cargamos el juego. Iniciamos carrera en práctica, a una hora diurna, y con el clima RAIN.

[Imagen: xdxQiek.png]

Y repetimos el proceso. Abrimos Objects Inspector, mantenemos pulsada la tecla ALT sobre la superficie horizontal a mojar, y la añadimos a las líneas que correspondan. Veremos los cambios en tiempo real al guardar el archivo.

[Imagen: BdCOSTZ.png]

[Imagen: ET5CRJt.png]

[Imagen: eiSubjC.png]

[Imagen: XMvy237.png]

[Imagen: FkgJrWR.jpg]

Primer material de superficie horizontal añadido. El cambio es evidente. Seguimos con las demás.

[Imagen: 6khatP0.png]

[Imagen: XsCJNyh.png]

[Imagen: 5BpPERU.png]

[Imagen: Dwok121.jpg]

Ojo. Hay que añadir los materiales de todas las superficies horizontales. Todas. Sino puedes encontrarte con zonas totalmente secas y otras mojadas.

Terminadas las superficies horizontales nos vamos a la tercera línea (SMOOTH_MATERIALS), para las superficies verticales y los objetos bajo la lluvia. Y añadimos los materiales que nos interesen.

[Imagen: qNyPPga.png]

[Imagen: 66f6uRo.jpg]

[Imagen: VJsQLLB.jpg]

[Imagen: LN1f7Lw.jpg]

[Imagen: fekpz1l.jpg]

[Imagen: 345bsmL.jpg]

[Imagen: 5zxJTFz.jpg]

El resultado final es bastante bueno. Toca iniciar una partida, de noche (luces encendidas) y con lluvia.

[Imagen: 9X9iAuv.jpg]

[Imagen: IjNdnqx.jpg]

[Imagen: Vws5cnF.jpg]

Reflejo de la luminaria sobre las superficies horizontales, cambio de efectos de partículas (ya no hay humo o polvo al derrapar, ahora son salpicaduras de agua), etc. Por estas cosas Assetto Corsa sigue siendo increíble, a pesar de que su primera salida a mercado fue en el año 2010.

¿Y qué hay de las otras líneas del párrafo que hemos añadido a nuestro ext_config.ini? Pues son otras funciones que sobrecargan el juego y que realmente no aportan nada a una carrera, como por ejemplo "cortinas de agua". Así que por mi parte las dejo en blanco.


- Grass_FX.

Grass_FX es un efecto que nos permite que determinadas áreas planas de la pista, por arte de magia, se conviertan en 3D. Lo que peor queda en todos los juegos es un césped plano (una textura pegada sobre una superficie plana). En todas mis pistas y como hemos podido ver a lo largo de este tutorial, siempre coloco geometrías 3D de césped encima de la superficie plana. Si bien queda aceptable no es perfecto, así que CPS incluye esta función de Grass_FX, que añadiremos a nuestro ext_config.ini.

Al final del archivo añadiremos las siguientes líneas:

[GRASS_FX] ; https://github.com/ac-custom-shaders-pat...3-Grass-FX
; Spawning areas
GRASS_MATERIALS = materiales encima de los cuales aparecerá el césped 3D.
GRASS_MESHES = objetos / superficies encima de los cuales aparecerá el césped 3D.
OCCLUDING_MATERIALS = materiales que pasan por encima del césped 3D, tapándolo (asfalto y esas cosas).
OCCLUDING_MESHES = objetos/superficies que pasan por encima del césped 3D, tapándolo (asfalto y esas cosas).
OCCLUDING_MATERIALS_ALPHA = mezcla de materiales de césped 3D y otros (arena y césped, por ejemplo).
OCCLUDING_MESHES_ALPHA = mezcla de objetos / superficies de césped 3D y otros (arena y césped, por ejemplo).
ORIGINAL_GRASS_MATERIALS = para tapar el césped original si césped 3D está activo (yo no lo uso, para mi no tiene sentido).
; NOTE: if you want to keep original 3dgrass (using ksGrass shader), then use an
; EMPTY line above with NO NAME after the "=" !!!

MASK_MAIN_THRESHOLD = -1
MASK_RED_THRESHOLD = 0
MASK_MIN_LUMINANCE = -1
MASK_MAX_LUMINANCE = 1

SHAPE_SIZE = 3.0 ; general size
SHAPE_TIDY = 0.1 ; how tidy grass is (untidy grass in uneven, tilted more)
SHAPE_CUT = 0.0 ; how cut grass is
SHAPE_WIDTH = 1.3 ; grass width relative to its height

Si tenemos muchos archivos de un solo tipo (1ROAD_1, 1ROAD_2, etc) podemos seleccionarlos todos sustituyendo el guión y el sufijo por un interrogante (1ROAD?).

Resumiendo, mi archivo ext_config.ini queda así:

[Imagen: uf98OhG.png]

Resultado ingame:

[Imagen: qiW1uEo.jpg]

[Imagen: 9sYHflG.jpg]

[Imagen: GuXAruH.jpg]

[Imagen: tamdNxo.jpg]

[Imagen: Jcy9BUd.jpg]

[Imagen: ZMxsW1i.jpg]

Como se puede ver el efecto utiliza la textura del terreno para darle la apariencia al césped. Es decir, modificando esa textura podemos hacerlo más verde, más seco, más oscuro, lo que queramos. En el caso de Kotarr y Choqueiro tuve suerte y las geometrías encajaban perfectamente con el efecto Grass_FX. En el caso de Jarama no. Tengo que separar una zona del terreno (que está cementada, la zona del karting) para que no le "crezca" el césped encima, hacer un nuevo KN5 con esa parte modificada, y entonces sí, ya quedaría listo.

Este efecto es especialmente importante para hacer pistas de mundo abierto, o que abarquen un área de terreno rural grande, ya que nos ahorra una barbaridad de trabajo. Para mi ha sido un gran descubrimiento, me facilita muchísimo el trabajo en varios mapas ajenos a los circuitos que estoy haciendo.


- Efectos de sonidos ambientales.

Podemos añadir a nuestro juego sonidos ambientales, de tal manera que al pasar por un determinado lugar suene un determinado sonido, y que desaparezca al alejarse. Ideal para poner sonidos de semáforos, de sirenas, de aplausos, etc.

Lo primero es crear un paquete de sonidos con la extensión .bank, que es la que utiliza AC. Pero si ya tenemos una que nos puede valer, como es mi caso, podemos "trasplantar" este archivo y sus archivos asociados a nuestra pista.

Abrimos la carpeta "extension" de una pista que tenga efectos de sonidos ambientales. Lo primero que vamos a ver es que, además del archivo ext_config.ini, hay una carpeta llamada "sfx" que no tenemos en nuestra pista. Es en esa carpeta donde se encuentran los archivos de sonido, así que la copiamos y la pegamos dentro de la carpeta "extension" de nuestra pista.

[Imagen: s1IBm85.png]

[Imagen: 3QCh9Jn.png]

Cerramos la carpeta de la pista desde la que hemos copiado, y abrimos la carpeta "sfx" de nuestra pista. Ahí veremos un archivo .bank que se llama igual que la otra pista. Lo renombramos como el nombre de nuestra pista, "sc_kotarr.bank".

[Imagen: 6vPtsnX.png]

[Imagen: PPGlhNM.png]

Ahora tenemos que cambiar las rutas del archivo GUID.txt, para que el juego sepa dónde está cada archivo de sonido dentro del archivo .bank. Abrimos GUID.txt con bloc de notas o similar, y cambiamos "sc_coruna" por el nombre de nuestra pista, "sc_kotarr", en todas las líneas.

[Imagen: afhJbXc.png]

[Imagen: paSBsnp.png]

Salvamos cambios. Ya solo queda indicarle al juego en qué lugar exacto de la pista debe reproducir cada sonido. Para ello abrimos de nuevo nuestro archivo ext_config.ini y el mismo archivo de la pista a la que le hemos copiado la carpeta "sfx".

[Imagen: oSc3imI.png]

Al final de nuestro ext_config.ini pegamos todo el apartado relativo a los sonidos, desde el ext_config.ini de la pista "donante".

[Imagen: 8Mrw1ck.png]

[Imagen: TgOCNcM.png]

Una vez más debemos cambiar las referencias de nuestro ext_config.ini, de "sc_coruna" a "sc_kotarr" en este caso.

[Imagen: 6F0DLYo.png]

[Imagen: 2Cu3A6r.png]

CASI listo.

Lo primero, los puntos de sonido van determinados por párrafos numerados [EVENT_0], [EVENT_1], [EVENT_2], etc. A diferencia de otros apartados de este tutorial no tienen por qué ser secuenciales, pero sí continuados (podemos saltar números pero deben estar por orden). Esto significa que podemos borrar de la lista los párrafos de los sonidos que no vayamos a utilizar, sin más. En este caso sonidos de semáforos y del concierto de Queen no van a ser utilizados. Se borran esos párrafos y listo.

Para los demás párrafos de eventos, solo debemos cambiar la posición donde se reproduce el sonido.

Y volveremos a utlizar la misma mecánica de trabajo: abrir el juego, con la aplicación Objects Inspector funcionando, copiar los valores necesarios y pegarlos en nuestro archivo ext_config.ini, salvando cambios y viendo el resultado en tiempo real.

[Imagen: PZdN2oO.png]

Pinchamos en donde queremos que se reproduzca el sonido. Y en Objects Inspector, en "clicked at" nos dará las coordenadas. Pinchando en ellas, en una esquina, se pondrá todo el recuadro en rojo y lo copiará al portapapeles.

[Imagen: sgFynb3.png]

Y lo pegamos en nuestro ext_config.ini. Buscamos el párrafo con el sonido que nos interesa para ese sitio, y en donde pone POSITION, borramos los valores que tenga y pegamos los que hemos copiado.

[Imagen: riVvwSD.png]

[Imagen: tajcgBI.png]

Bueno, esto es un tutorial de imágenes, aquí no hay sonido Elrisas Elrisas Elrisas . Pero si lo hubiera podríais oír cómo suena el archivo escogido en el lugar que hemos determinado.

Ahora solo queda repetir y repetir la operación, hasta colocar todos los sonidos en los lugares que queramos.

[Imagen: soRbhki.png]

[Imagen: 87gyLbh.png]

Lo último. Podemos regular el volumen de cada sonido, cambiando el valor VOLUME de cada párrafo. Incluso, si queremos, podemos determinar el volumen con el que se oirá cada efecto desde el interior del coche o desde la cámara de repetición. Vamos, que podemos hilar muy fino si queremos, eso ya es cosa de cada uno.

[Imagen: qXJDZdT.png]

Hasta aquí el apartado de sonido. El último apartado estará dedicado a Content Manager, que aunque no es algo que sirva para crear cosas para nuestra pista, sí permite activar o desactivar multitud de opciones del juego de forma cómoda. También es un poco puñetero, hay una especie de relación amor-odio con este programa.

Saludos para todos.
Responder
Parte 12. Últimos detalles y uploading.


Toda la parte "técnica" está lista, solo queda rematar los últimos detallitos y compartir la pista.


- map.png y outline.png

Estos archivos corresponden a la trazada en menú de carga y en partida. Por mi parte suelo abrirlos con Adobe Photoshop y borrar el contenido, dejando una imagen totalmente transparente.


- preview.png

Imagen que corresponde a la vista previa de la pista en el menú. Una por cada layout. Suelo poner una foto satélite del terreno y arreando, cada uno que ponga lo que quiera.

[Imagen: ZBUXmta.png]


- ui_track.json

El archivo que indica las características de la pista en el menú de selección, uno por layout. Si no lo hemos hecho antes lo editamos con bloc de notas o similar para dejar los datos correctos.

[Imagen: WsIa2Yn.png]


- Imágenes de carga.

Dentro de la ruta [nuestra pista] / ui / [layout] podemos colocar imágenes que se cargarán aleatoriamente de fondo, mientras se cargan los archivos para la carrera. Deben estar en formato .jpg y llevar la nomenclatura "bgr" seguido de un número.

Podemos por ejemplo hacer capturas de pantalla de una carrera y añadirle un logotipo.

[Imagen: znTxFex.png]

[Imagen: vwelz53.png]

[Imagen: O6MII7b.png]


- Uploading.

Finalizado absolutamente todo y hecho el testeo durante innumerables horas de juego, es hora de subir la pista a la red. Lo primero, depurar, eliminando aquello que no sea necesario para compartir la pista. Ojo, recomiendo dejar una copia con todo en el disco duro, a efectos de futuras posibles mejoras o rectificaciones. Elimino:

- carpeta textures.
- carpeta de geometrías .mts (en mi caso #MTS).
- archivos .3SE (de 3dSimEd).
- archivos .fbx (geometrías 3d).
- archivos .fbx.ini (configuración de shaders para archivos .fbx).

Lo demás lo dejo tal y como está.

[Imagen: 9QvW4SY.png]

[Imagen: nufJJgF.png]

[Imagen: mqTzYRf.png]

Compruebo que la pista funciona correctamente con todo lo que le he quitado, sin iniciar partida, y si todo va bien es el momento de comprimirla para compartir. Si queremos que nuestra pista funcione directamente en gestores de archivos como Content Manager o Generic Mod Enabler, hay que seguir la siguiente estructura:

[Imagen: dVJeJbD.png]

Luego es comprimir en ZIP y compartir el archivo resultante.

[Imagen: 6iLH2QF.png]

[Imagen: D2N3I0V.png]

Nota. Con cada pista que hago suelo incluir opciones de configuración adicionales y filtros, de ahí que haya más carpetas aparte de la pista. Pero esto es una particularidad mía, obviamente no es necesario para vosotros.





Finalizado el tutorial.

Y hasta aquí. Dejo el último apunte, para quien interese.

Diseñar en 3D solo es necesario para crear objetos nuevos (edificios reales y esas cosas). No necesitáis saber diseñar en 3D para hacer pistas de montaña, tramos de rally, circuitos ficticios (estoy trabajando paralalelamente en un circuito ficticio exclusivo de drift)... en fin, se pueden hacer mil cosas. Solo necesitáis Race Track Builder y los Xpacks, estos últimos también los compartiré.

Tenéis toda la información aquí mismo, y crear pistas tampoco es tanto trabajo. Empecé Kotarr el día 4 de este mes de junio, y se puede dar por terminada hoy mismo, día 28. Menos de un mes, haciendo esta pista y a la par el tutorial (casi me ha dado más trabajo hacer capturas y escribir explicaciones que hacer la propia pista) y otros proyectos. Y por supuesto he estado haciendo mi vida durante el proceso, todo lo que me permite mi actual estado de salud. Es un programa sencillo de usar.

Así que los que estéis pensándoos crear algo, adelante. En pocos días tendréis todas las herramientas necesarias para descargar aquí mismo y en el post principal.

Saludos para todos.
Responder


Salto de foro: