03-11-2020, 11:14
(Última modificación: 03-11-2020, 17:52 por Stig's Cousin.)
Nuevo episodio del tutorial. Esta vez va sobre algo que me traía un poco de cabeza, de lo que apenas hay información, y que al final ha sido más fácil de lo que pensaba.
Sonidos ambientales: semáforos, aplausos, etc
Hay dos tipos de sonidos para las pistas, los de superficie (al pasar por el césped, por las aceras, por la arena, etc), y los de posición (que al pasar por un determinado sitio se reproduzca un sonido concreto).
Los primeros son muy fáciles, se definen <nuestra pista>\ data \ surfaces.ini , donde a una determinada superficie le asignamos un sonido predefinido por el juego y listo.
Los segundos ya son más complicados. Voy a empezar por esta parte:
Así es, quiero que al pasar cerca del escenario suene música. De la misma manera quiero que al pasar cerca de un semáforo este haga el sonido típico, al pasar cerca de un coche de policía o una ambulancia suene la sirena, y por último que al pasar cerca del público se oigan aplausos.
1- Conseguir los archivos de audio
Esta parte no debería ser complicada. Podemos valernos de YouTube, páginas web, etc. Nos descargamos los audios (da igual el formato pues luego tendremos que convertirlo)...
... y luego los renombramos todos a nuestro gusto y los guardamos dentro del juego. ¿Dónde? Pues vamos a la carpeta del juego \ sdk \ audio \ ac_fmod_sdk_1_9 \ assets, creamos una carpeta llamada mp3 y los copiamos ahí dentro.
2- Convertirlos a .wav
El único formato de audio que admite Assetto Corsa es .wav a 44.1 hz y 16 bits, cualquier otro tipo de formato dará error. No uséis conversores online, pues o usan frecuencias distintas o pierden muchísima calidad, no valen. Hay programas de audio profesionales para eso, pero se puede hacer de otras formas. Yo he usado el Adobe Premiere CC, el mismo que uso para hacer vídeos. Simplemente añadí el audio a la línea de tiempo, hice los cambios que estimé oportunos en el audio (cortar zonas sin sonido por ejemplo) y a la hora de exportar medios cambié la configuración de esta manera:
¿Dónde colocamos los archivos de audio .wav? en la carpeta del juego \ sdk \ audio \ ac_fmod_sdk_1_9 \ assets.
3- Compilando a .bank
Bien, el juego reproduce los audios .wav de la pista pero no directamente, no de uno en uno, sino en un archivo único que los contiene todos. Como si fuera un archivo comprimido .zip o similar. El propio juego tiene un documento pdf que explica esto, llamado AC Audio Pipeline 1.9.pdf que podemos encontrar en el propio editor. Pero ese archivo solo explica cómo hacer sonidos para coches, no para pistas, de ahí la necesidad de este tutorial.
Lo primero es descargar e instalar FMod Studio, el programa que permite crear archivos .bank. Ojo, en la página web hay montones de versiones, deberéis descargar e instalar la versión 1.08.12 para 64 bits. Esto es importante, debe ser esa versión pues es la que usaron los desarrolladores de Assetto Corsa, cualquier otra hará que el juego falle o que los sonidos no se oigan. La descarga es gratuita pero hay que registrarse con una dirección de email.
El editor de audio de Assetto Corsa incorpora un archivo de prueba que podemos utilizar para compilar el .bank de nuestra pista. En la carpeta del juego \ sdk \ audio \ ac_fmod_sdk_1_9 encontraremos el archivo ac_fmod_sdk_1_9.fspro que abriremos con FMod.
Una vez abierto creamos nuestro propio proyecto, al cual le daremos en nombre de nuestra pista (el mismo nombre del archivo KN5, es el que usaremos siempre a partir de ahora).
En la pestaña Events tenemos varias varias carpetas (cars, common, etc). Debajo de esas carpetas, justo a continuación, le damos al botón derecho del ratón y seleccionamos "New folder". Y le ponemos el nombre de nuestra pista.
Hacemos lo mismo con "New Event", y le ponemos el mismo nombre exacto del archivo de audio que vamos a utilizar.
Este nuevo evento no está asignado a ningún .bank porque aún no lo hemos creado. Nos vamos a la pestaña Banks para crear el evento de nuestra pista. Mismo procedimiento: botón derecho del ratón debajo de los banks que aparecen listados, "New bank" y le ponemos el nombre de nuestra pista.
Listo. Esta parte no tendremos que repetirla pues todos los audios que vayamos agregando los asignaremos a este bank. Volvemos a la pestaña Events y asignamos el evento queen al bank motorfaq1.
La marca "#unassigned" debe haber desaparecido. Ahora movemos el evento queen dentro de la carpeta motorfaq 1.
Ya casi hemos terminado con este audio. Tenemos la estructura del bank, eventos y carpetas creada, es hora de asignarle el sonido wav.
Lo primero es abrir el audio bin (la lista de audios que están en la carpeta Assets).
Solo tenemos que arrastrar el wav al timeline y listo. Ojo, ajustándolo bien al principio de todo.
Último paso. Asignar el loop, es decir, definir el recorrido del audio y dejarlo en bucle. Botón derecho sobre el timeline y seleccionamos New Loop Region.
Si os fijáis justo encima de la pista del timeline ahora hay una barra azul, es la que indica el recorrido del audio. Podemos dejarla como está, acortarla, etc. También podemos jugar con parámetros como el volumen, aunque esto lo considero innecesario pues luego podemos retocarlo dentro del propio juego. Salvamos nuestro proyecto y repetimos la operación con el siguiente audio. Como ya tenemos el bank y la estructura de carpetas creadas solo hay que crear el evento, asignarlo al bank, moverlo a la carpeta de la pista, poner el wav en el timeline y hacer el loop.
Si queremos meter en pista muchos audios pues puede volverse un poco monótono. Pero una vez creado el bank ya no tendremos que hacerlo más. Como mucho añadir al proyecto más audios si queremos.
Mi proyecto después de meter todos los audios que quiero se ve tal que así:
Creamos nuestro bank...
En realidad se habrán creado varios archivos bank, pero a nosotros solo nos interesa uno. Los podemos encontrar en la carpeta de nuestro juego \ sdk \ audio \ nombre de nuestra pista \ Build \ Desktop
Solo nos interesa el que tiene el nombre de nuestra pista, los demás los podemos borrar. Lo copiamos en la carpeta de nuestro juego \ content \ tracks \ nombre de nuestra pista \ extension \ sfx
Sí, tendremos que crear esos directorios manualmente.
Volvemos a Fmod. Hay que crear un GUI que le diga al juego dentro del archivo bank dónde encontrar cada audio wav. Tan simple como exportarlo de nuestro proyecto...
... copiar ese GUI.txt desde \ sdk \ audio \ nombre de nuestra pista \ Build (sin entrar en la carpeta Desktop) a \ content \ tracks \ nombre de nuestra pista \ extension \ sfx ...
... y editar ese archivo de texto, dejando solo las líneas que contengan el nombre nuestra pista.
Hemos terminado con FMod, podemos cerrarlo. Solo nos queda por decirle al juego dónde se va a reproducir cada sonido (posición) y en qué condiciones (volumen de cámara exterior, volumen de cámara interior, volumen de repeticiones, etc).
4- El último paso
Bien, lo más complicado está hecho. Ahora en nuestra pista vamos a crear un .ini que le diga al juego las condiciones para cada sonido, crearemos el archivo ext_config.ini en el directorio \ content \ tracks \ nombre de nuestra pista \ extension (sin entrar en la carpeta sfx).
Vamos a empezar con el primer audio, el del concierto de Queen. Lo abrimos y en él pegamos los siguientes datos:
[SOUNDBANK_0]
BANK=sfx/motorfaq1.bank
GUIDS=sfx/GUIDs.txt
[EVENT_0]
ID=motorfaq1/Queen
REVERB_RESPONSE = 1
POSITION = 0, 0, 0
DIRECTION = 0, 0, 1
VOLUME = 3.5
CAMERA_INTERIOR_MULT = 0.35
CAMERA_EXTERIOR_MULT = 2
CAMERA_TRACK_MULT = 0.1
En negrita está remarcado lo importante.
- BANK indica al juego la localización del archivo .bank a usar en esta pista.
- GUIDs indica dónde se encuentra la guía de los audios que tiene el archivo .bank.
- EVENT_número indica al juego el número de evento.
- ID indica al juego qué archivo de audio hay que reproducir.
- POSITION indica al juego el stio donde se debe reproducir el archivo de audio.
Resumiendo. Lo que dice ahí es que al acercarse al punto 0,0,0 de la pista se produce el evento 0 y que debe oírse el audio Queen. ¿Dónde está ese punto? Pues depende de cómo hayas construido tu pista, en mi caso coincide casi con el punto de partida. Es tan simple como abrirla con 3DSimEd y ver dónde se unen los tres ejes x,y,z. Después es tan simple como guardar el ini, ejecutar el juego y probar a ver si se oye.
Y como el audio no se puede plasmar en imágenes, pues no puedo enseñaros nada . Pero vamos, que sí, que funcionó, y podréis comprobarlo por vosotros mismos cuando actualice el link de descarga de esta pista .
Vale, funciona. Pero el audio no debe reproducirse en el punto 0,0,0 sino al lado del escenario. ¿Cómo averiguo qué valores ponerle?
Pues es tan simple como en el 3DSimEd mover un objeto (mismamente uno de los dummys que valen para iniciar la carrera) hacia dónde quieres que suene el audio, copiar los valores en el archivo ext_config.ini y listo.
Ojo, hay que fijarse bien en las imágenes. El 3DSimEd nos da los datos de posición en formato x, y, z pero en el .ini los datos se copian x, z, -y. Si nos equivocamos al escribirlos el audio sonará en un lugar distinto.
Inicio el juego, compruebo que el audio de Queen suena donde yo quiero, y paso al siguiente con la misma técnica. Nota: podemos poner el mismo evento de audio varias veces en varios sitios distintos. Por ejemplo el sonido del semáforo que es un único archivo de audio pero que suena en varios semáforos. Tan solo hay que respetar la secuencia [event_0], [event_1], [event_2], [event_3], etc.
Entonces ¿por qué he puesto varios audios de aplausos, de sirenas, etc? Pues por "variar", que no se oiga siempre el mismo sonido de sirena ni de aplausos. Eso sí, cada uno de esos eventos también está repetido varias veces, así nos podemos encontrar esos audios en diferentes sitios y secuencias. Y después de mucho "jugar" con la posición del dummy en 3DSimEd (en el cual no salvaré cambios) me queda un archivo .ini con un montón de eventos.
Y listo.
Detalles a tener en cuenta en los eventos del ini:
VOLUME = es el volumen maestro del sonido. No es lo mismo una persona hablando, que una sirena, que unos altavoces a todo volumen.
CAMERA_INTERIOR_MULT = es el volumen del sonido en partida dentro del coche. 1 sería igual que en VOLUME, a partir de ahí o incrementas o disminuyes.
CAMERA_EXTERIOR_MULT = lo mismo que el anterior pero fuera del coche.
CAMERA_TRACK_MULT = este es el volumen pero con las cámaras de repetición. Ojo, que según la posición de la cámara será más intenso o menos, yo iría probando cada evento con respecto a este apartado.
Este último apartado yo solo lo modificaría una vez terminadas las cámaras de repetición definitivas.
Y se acabó esta parte del tutorial. En teoría solo me quedaría enseñaros a crear luces nocturnas y cámaras de repetición. Si me entero, tengo tiempo para probar y lo logro, tal vez haga animaciones en pista (gente aplaudiendo por ejemplo). Aunque esto último es muy complicado.
Saludos para todos.
Sonidos ambientales: semáforos, aplausos, etc
Hay dos tipos de sonidos para las pistas, los de superficie (al pasar por el césped, por las aceras, por la arena, etc), y los de posición (que al pasar por un determinado sitio se reproduzca un sonido concreto).
Los primeros son muy fáciles, se definen <nuestra pista>\ data \ surfaces.ini , donde a una determinada superficie le asignamos un sonido predefinido por el juego y listo.
Los segundos ya son más complicados. Voy a empezar por esta parte:
Así es, quiero que al pasar cerca del escenario suene música. De la misma manera quiero que al pasar cerca de un semáforo este haga el sonido típico, al pasar cerca de un coche de policía o una ambulancia suene la sirena, y por último que al pasar cerca del público se oigan aplausos.
1- Conseguir los archivos de audio
Esta parte no debería ser complicada. Podemos valernos de YouTube, páginas web, etc. Nos descargamos los audios (da igual el formato pues luego tendremos que convertirlo)...
... y luego los renombramos todos a nuestro gusto y los guardamos dentro del juego. ¿Dónde? Pues vamos a la carpeta del juego \ sdk \ audio \ ac_fmod_sdk_1_9 \ assets, creamos una carpeta llamada mp3 y los copiamos ahí dentro.
2- Convertirlos a .wav
El único formato de audio que admite Assetto Corsa es .wav a 44.1 hz y 16 bits, cualquier otro tipo de formato dará error. No uséis conversores online, pues o usan frecuencias distintas o pierden muchísima calidad, no valen. Hay programas de audio profesionales para eso, pero se puede hacer de otras formas. Yo he usado el Adobe Premiere CC, el mismo que uso para hacer vídeos. Simplemente añadí el audio a la línea de tiempo, hice los cambios que estimé oportunos en el audio (cortar zonas sin sonido por ejemplo) y a la hora de exportar medios cambié la configuración de esta manera:
¿Dónde colocamos los archivos de audio .wav? en la carpeta del juego \ sdk \ audio \ ac_fmod_sdk_1_9 \ assets.
3- Compilando a .bank
Bien, el juego reproduce los audios .wav de la pista pero no directamente, no de uno en uno, sino en un archivo único que los contiene todos. Como si fuera un archivo comprimido .zip o similar. El propio juego tiene un documento pdf que explica esto, llamado AC Audio Pipeline 1.9.pdf que podemos encontrar en el propio editor. Pero ese archivo solo explica cómo hacer sonidos para coches, no para pistas, de ahí la necesidad de este tutorial.
Lo primero es descargar e instalar FMod Studio, el programa que permite crear archivos .bank. Ojo, en la página web hay montones de versiones, deberéis descargar e instalar la versión 1.08.12 para 64 bits. Esto es importante, debe ser esa versión pues es la que usaron los desarrolladores de Assetto Corsa, cualquier otra hará que el juego falle o que los sonidos no se oigan. La descarga es gratuita pero hay que registrarse con una dirección de email.
El editor de audio de Assetto Corsa incorpora un archivo de prueba que podemos utilizar para compilar el .bank de nuestra pista. En la carpeta del juego \ sdk \ audio \ ac_fmod_sdk_1_9 encontraremos el archivo ac_fmod_sdk_1_9.fspro que abriremos con FMod.
Una vez abierto creamos nuestro propio proyecto, al cual le daremos en nombre de nuestra pista (el mismo nombre del archivo KN5, es el que usaremos siempre a partir de ahora).
En la pestaña Events tenemos varias varias carpetas (cars, common, etc). Debajo de esas carpetas, justo a continuación, le damos al botón derecho del ratón y seleccionamos "New folder". Y le ponemos el nombre de nuestra pista.
Hacemos lo mismo con "New Event", y le ponemos el mismo nombre exacto del archivo de audio que vamos a utilizar.
Este nuevo evento no está asignado a ningún .bank porque aún no lo hemos creado. Nos vamos a la pestaña Banks para crear el evento de nuestra pista. Mismo procedimiento: botón derecho del ratón debajo de los banks que aparecen listados, "New bank" y le ponemos el nombre de nuestra pista.
Listo. Esta parte no tendremos que repetirla pues todos los audios que vayamos agregando los asignaremos a este bank. Volvemos a la pestaña Events y asignamos el evento queen al bank motorfaq1.
La marca "#unassigned" debe haber desaparecido. Ahora movemos el evento queen dentro de la carpeta motorfaq 1.
Ya casi hemos terminado con este audio. Tenemos la estructura del bank, eventos y carpetas creada, es hora de asignarle el sonido wav.
Lo primero es abrir el audio bin (la lista de audios que están en la carpeta Assets).
Solo tenemos que arrastrar el wav al timeline y listo. Ojo, ajustándolo bien al principio de todo.
Último paso. Asignar el loop, es decir, definir el recorrido del audio y dejarlo en bucle. Botón derecho sobre el timeline y seleccionamos New Loop Region.
Si os fijáis justo encima de la pista del timeline ahora hay una barra azul, es la que indica el recorrido del audio. Podemos dejarla como está, acortarla, etc. También podemos jugar con parámetros como el volumen, aunque esto lo considero innecesario pues luego podemos retocarlo dentro del propio juego. Salvamos nuestro proyecto y repetimos la operación con el siguiente audio. Como ya tenemos el bank y la estructura de carpetas creadas solo hay que crear el evento, asignarlo al bank, moverlo a la carpeta de la pista, poner el wav en el timeline y hacer el loop.
Si queremos meter en pista muchos audios pues puede volverse un poco monótono. Pero una vez creado el bank ya no tendremos que hacerlo más. Como mucho añadir al proyecto más audios si queremos.
Mi proyecto después de meter todos los audios que quiero se ve tal que así:
Creamos nuestro bank...
En realidad se habrán creado varios archivos bank, pero a nosotros solo nos interesa uno. Los podemos encontrar en la carpeta de nuestro juego \ sdk \ audio \ nombre de nuestra pista \ Build \ Desktop
Solo nos interesa el que tiene el nombre de nuestra pista, los demás los podemos borrar. Lo copiamos en la carpeta de nuestro juego \ content \ tracks \ nombre de nuestra pista \ extension \ sfx
Sí, tendremos que crear esos directorios manualmente.
Volvemos a Fmod. Hay que crear un GUI que le diga al juego dentro del archivo bank dónde encontrar cada audio wav. Tan simple como exportarlo de nuestro proyecto...
... copiar ese GUI.txt desde \ sdk \ audio \ nombre de nuestra pista \ Build (sin entrar en la carpeta Desktop) a \ content \ tracks \ nombre de nuestra pista \ extension \ sfx ...
... y editar ese archivo de texto, dejando solo las líneas que contengan el nombre nuestra pista.
Hemos terminado con FMod, podemos cerrarlo. Solo nos queda por decirle al juego dónde se va a reproducir cada sonido (posición) y en qué condiciones (volumen de cámara exterior, volumen de cámara interior, volumen de repeticiones, etc).
4- El último paso
Bien, lo más complicado está hecho. Ahora en nuestra pista vamos a crear un .ini que le diga al juego las condiciones para cada sonido, crearemos el archivo ext_config.ini en el directorio \ content \ tracks \ nombre de nuestra pista \ extension (sin entrar en la carpeta sfx).
Vamos a empezar con el primer audio, el del concierto de Queen. Lo abrimos y en él pegamos los siguientes datos:
[SOUNDBANK_0]
BANK=sfx/motorfaq1.bank
GUIDS=sfx/GUIDs.txt
[EVENT_0]
ID=motorfaq1/Queen
REVERB_RESPONSE = 1
POSITION = 0, 0, 0
DIRECTION = 0, 0, 1
VOLUME = 3.5
CAMERA_INTERIOR_MULT = 0.35
CAMERA_EXTERIOR_MULT = 2
CAMERA_TRACK_MULT = 0.1
En negrita está remarcado lo importante.
- BANK indica al juego la localización del archivo .bank a usar en esta pista.
- GUIDs indica dónde se encuentra la guía de los audios que tiene el archivo .bank.
- EVENT_número indica al juego el número de evento.
- ID indica al juego qué archivo de audio hay que reproducir.
- POSITION indica al juego el stio donde se debe reproducir el archivo de audio.
Resumiendo. Lo que dice ahí es que al acercarse al punto 0,0,0 de la pista se produce el evento 0 y que debe oírse el audio Queen. ¿Dónde está ese punto? Pues depende de cómo hayas construido tu pista, en mi caso coincide casi con el punto de partida. Es tan simple como abrirla con 3DSimEd y ver dónde se unen los tres ejes x,y,z. Después es tan simple como guardar el ini, ejecutar el juego y probar a ver si se oye.
Y como el audio no se puede plasmar en imágenes, pues no puedo enseñaros nada . Pero vamos, que sí, que funcionó, y podréis comprobarlo por vosotros mismos cuando actualice el link de descarga de esta pista .
Vale, funciona. Pero el audio no debe reproducirse en el punto 0,0,0 sino al lado del escenario. ¿Cómo averiguo qué valores ponerle?
Pues es tan simple como en el 3DSimEd mover un objeto (mismamente uno de los dummys que valen para iniciar la carrera) hacia dónde quieres que suene el audio, copiar los valores en el archivo ext_config.ini y listo.
Ojo, hay que fijarse bien en las imágenes. El 3DSimEd nos da los datos de posición en formato x, y, z pero en el .ini los datos se copian x, z, -y. Si nos equivocamos al escribirlos el audio sonará en un lugar distinto.
Inicio el juego, compruebo que el audio de Queen suena donde yo quiero, y paso al siguiente con la misma técnica. Nota: podemos poner el mismo evento de audio varias veces en varios sitios distintos. Por ejemplo el sonido del semáforo que es un único archivo de audio pero que suena en varios semáforos. Tan solo hay que respetar la secuencia [event_0], [event_1], [event_2], [event_3], etc.
Entonces ¿por qué he puesto varios audios de aplausos, de sirenas, etc? Pues por "variar", que no se oiga siempre el mismo sonido de sirena ni de aplausos. Eso sí, cada uno de esos eventos también está repetido varias veces, así nos podemos encontrar esos audios en diferentes sitios y secuencias. Y después de mucho "jugar" con la posición del dummy en 3DSimEd (en el cual no salvaré cambios) me queda un archivo .ini con un montón de eventos.
Y listo.
Detalles a tener en cuenta en los eventos del ini:
VOLUME = es el volumen maestro del sonido. No es lo mismo una persona hablando, que una sirena, que unos altavoces a todo volumen.
CAMERA_INTERIOR_MULT = es el volumen del sonido en partida dentro del coche. 1 sería igual que en VOLUME, a partir de ahí o incrementas o disminuyes.
CAMERA_EXTERIOR_MULT = lo mismo que el anterior pero fuera del coche.
CAMERA_TRACK_MULT = este es el volumen pero con las cámaras de repetición. Ojo, que según la posición de la cámara será más intenso o menos, yo iría probando cada evento con respecto a este apartado.
Este último apartado yo solo lo modificaría una vez terminadas las cámaras de repetición definitivas.
Y se acabó esta parte del tutorial. En teoría solo me quedaría enseñaros a crear luces nocturnas y cámaras de repetición. Si me entero, tengo tiempo para probar y lo logro, tal vez haga animaciones en pista (gente aplaudiendo por ejemplo). Aunque esto último es muy complicado.
Saludos para todos.