Generación de entornos basados ​​en sonido y música en Unity3D

Anotación


Hola a todos Este artículo es el primero de una serie sobre el tema de generar contenido basado en música y sonido. De hecho, dicha generación es una tarea técnica bastante complicada, por lo tanto, este material será introductorio, más centrado en el diseño del juego y una comprensión general del tema, después de lo cual nos sumergiremos en los aspectos técnicos de este tema.



En este artículo consideraremos un género específico de juegos en el que se genera contenido basado en sonido y música. La teoría general del sonido no se dará aquí, pero en el material puede encontrar enlaces a fuentes de información y una breve descripción de los términos que utilizaremos. El material, aunque contiene información técnica sobre teoría y programación de sonido, está diseñado para un público novato. Las ilustraciones se hacen solas y, dado que no soy artista, no las tome en serio, solo se necesitan para comprender mejor el material. Que tengas una buena lectura!


Introduccion


La generación de procedimientos basada en música en videojuegos es un tema que, para mí personalmente, siempre ha estado envuelto en un cierto toque de misticismo. Hay algo increíble en cómo las formas de sonido no solo se visualizan, sino que también afectan directamente el juego. Todo parece peculiar, pero muy divertido. Es por eso que estos juegos tienen su propia audiencia pequeña pero estable. Steam agregó etiquetas separadas para estos juegos: "Generación basada en la música" y "Juego de ritmo". Por el momento, estas etiquetas se pueden encontrar en unos 200 proyectos, aunque hay muchos más juegos que utilizan esta mecánica.


De hecho, la generación basada en el sonido brinda un alcance ilimitado para el desarrollo del juego, pero hasta ahora tales ideas siguen siendo el destino de los proyectos independientes, mientras que en los juegos AAA (con la excepción de Guitar Hero) dichos experimentos no son aplicables debido a su inestabilidad e inusual juego .


Ejemplos de buenos proyectos.


Antes de pasar a la esencia misma de la generación basada en sonido (que no debe confundirse con la generación de sonido), me gustaría dar ejemplos de juegos exitosos que utilizan mecanismos similares. Si aún no los has jugado, ¡pruébalo! Probablemente nunca hayas visto esto antes. Muchos de estos proyectos han recibido premios de jugadores y la prensa.


Estrictamente hablando, la generación pura se usa solo en Audiosurf. El resto de los juegos utilizo uno u otro de sus elementos. Algunos juegos están más enfocados en bits de seguimiento, algunos en el volumen de la pista, etc.


Tales proyectos son muy difíciles de evaluar mediante una captura de pantalla o una descripción, por lo que si no tiene tiempo para jugar, solo mire el video en YouTube.


Audiosurf



Para muchos jugadores, Audiosurf fue el primer juego en utilizar la generación de contenido basado en música. El proyecto fue creado por un desarrollador independiente de Invisible Handlebar, la compañía de Dylan Fiterer. Cuando apareció Audiosurf en Steam, este mercado apenas comenzaba a desarrollarse y la monstruosa tasa de crecimiento actual todavía estaba muy lejos. Audiosurf se veía muy fresco y no habitual, además, ¡fue el primer juego en Steam (a excepción de los juegos de Valve), que contenía logros!


El eslogan de Audiosurf - "Ride your music" - refleja con mucha precisión el juego: sobre la base de su pista de música, se crea la pista que necesita conducir. El juego tiene en cuenta la velocidad de la pista, los cambios dinámicos (aumento y disminución del volumen) y el bit. En él puedes usar diferentes géneros de música y combinarlos con diferentes modos de juego. Además, cada pista tiene su propia tabla de registros, y puede sorprenderte descubrir que diez personas más escuchan tu "Death metal subterráneo" favorito.



Desafortunadamente, en estática, Audiosurf no se percibe. Necesito jugar


Hablando de jugabilidad, Audiosurf es genial. Por ejemplo, si la pista comienza con una introducción tranquila, su bote se arrastra lentamente cuesta arriba, pero cuando la textura musical se vuelve más saturada y con cuerpo, la velocidad aumenta y usted se precipita en todo momento. El llamado Drop se siente especialmente bien, durante el cual el sonido "se interrumpe" en medio del desarrollo, y luego regresa en el momento del clímax. Un kit de batería diverso puede convertir su pista en un camino montañoso, así como afectar especiales. efectos Además, los bloques que debe recopilar al pasar la traza generada también se colocan debajo del bit.


Han pasado 10 años desde el lanzamiento del juego, pero sigue siendo muy popular entre los jugadores. Por el momento, se lanzaron dos partes del juego, y el desarrollador Dylan Fitterer continuó desarrollando sus ideas y creó Audioshield, donde evitas bloques de realidad virtual volando hacia ti en un abrir y cerrar de ojos.


Recomendamos tocar en pistas como:


  • Sistema de Down - Chop Suey!
  • Martin Garrix - Animales
  • Skrillex - Bangarang

¡Comparte tus pistas favoritas para Audiosurf en los comentarios!


El juego se puede comprar en Steam .


Batir peligro


En este proyecto, los creadores tomaron la mecánica estándar de Shoot'em y agregaron análisis de sus pistas de música allí. Resultó muy bueno. La música afecta todo: el poder de tu nave, el número de oponentes, la velocidad general del juego. Lo mejor de todo es que el juego se puede sentir con música, donde hay transiciones bruscas del silencio al sonido potente, luego la pantalla explota por los efectos y la nave comienza a dispararse con enormes rayos.


El juego tiene una mecánica bastante rica, varios modos y grandes jefes. En general, ¡todo lo que necesitas para divertirte!



Recomendamos tocar en pistas como:


  • El prodigio: ¡los invasores deben morir!
  • Hongo infectado - La leyenda del Shawarma negro
  • Daft Punk - Contacto

¡Escribe en los comentarios qué pistas te gustan más para destruir las naves enemigas!


El juego se puede comprar en Steam .


Soundodger +


El juego es una especie de mezcla de Beat Hazzard y el popular Super Hexagon. La esencia del juego es que necesitas esquivar objetos cuya actividad depende de tu pista de música. El proceso es muy complicado y, por lo tanto, súper emocionante.



El juego se puede comprar en Steam .


Cripta del necrodancer


Un juego que transfiere increíblemente el ritmo y te hace bailar con un gamepad. Crypt of the NecroDancer es un proyecto Roguelike en el que tanto usted como los monstruos deben moverse estrictamente a la música. Si no entras en ritmo, el juego te multará cuando te muevas. Toda la ubicación al mismo tiempo late al ritmo, lo que crea una atmósfera irreal. La banda sonora fue escrita por el famoso Danny Baranowsky (Super Meat Boy, The Binding of Isaac). Por cierto, ¡el juego admite esteras de baile!



El juego se puede comprar en Steam .


Tablero de geometría


Es un corredor muy duro en el que confías no solo en tu reacción, sino también en el sentido del ritmo, ya que todos los obstáculos están claramente superados, y al final de la pista (si alcanzas) ya te estás moviendo en un nivel intuitivo. Estrictamente hablando, no existe una generación como tal, pero los desarrolladores utilizaron el análisis de pistas de música para construir mejor el nivel.



Como casi todos los juegos de este género, Geometry Dash se ve muy brillante


El juego se puede comprar en Steam .


Beatbuddy: cuento de los guardianes


Un magnífico juego de plataformas musical, cuya acción tiene lugar en el mundo submarino, que vive bajo un brillante ritmo de electro swing. Cada criatura en este juego genera su propio sonido. Krabik toca un ritmo rápido, las anémonas son responsables del barril ... Al mismo tiempo, el personaje principal puede influir en los habitantes del mundo y cambiar la música y el juego en sí. Para el juego, se utilizaron las pistas de músicos como Parov Stelar, Austin Wintory, Sabrepulse y La Rochelle Band.



El juego se puede comprar en Steam .


Después de que nos inspiramos en excelentes proyectos, podemos proceder al estudio de la pregunta "¿cómo funciona todo?"


Opciones de sonido básicas


Opciones de audio analógico


Como el tema elegido no es demasiado simple y contiene muchos aspectos técnicos, decidí no inflar el artículo con teoría, sino definir conceptos básicos. Si quieres estudiar la teoría del sonido más de cerca, entonces en Habr había muchos artículos sobre este tema. Al final del artículo encontrará muchos enlaces útiles.


Los parámetros básicos de sonido incluiremos los siguientes:


  • Onda de sonido frecuencia o tono, Hz
  • Amplitud de onda de sonido o volumen de sonido, dB
  • El coeficiente de atenuación es la tasa de disminución de la amplitud con el tiempo.
  • Forma de onda: una vista general de una onda de sonido. Con este parámetro, puede dividir los sonidos en grupos (agudos, suaves, ruidos, etc.)

Para mayor claridad, cité las características principales de la onda de sonido en los siguientes gráficos (las unidades no están configuradas, pido disculpas):



Sonido fuerte con gran amplitud.



Sonido silencioso con menos amplitud.



Alta frecuencia, alta frecuencia



Sonido bajo con menos frecuencia.



Sonido fuerte y alto (¡cuida tus oídos!)


En general, estos datos son suficientes para comprender lo que es el sonido y seguir adelante. Pero si está interesado en este tema, entonces, por supuesto, debe estudiarlo más profundamente.


Opciones de audio digital


Al escribir juegos y otros programas, trabajaremos con la forma digital de sonido. El sonido digital se obtiene mediante muestreo (dividiendo en pequeños puntos en el tiempo), cuantización (redondeando a un cierto nivel) y codificación (en realidad, convirtiendo el sonido en ceros y unos). Puede encontrar mucha información sobre este tema en el artículo Teoría del sonido. Lo que necesita saber sobre el sonido para trabajar con él. Experimente Yandex.Music , que realmente me gustó. Allí encontrará información sobre la medición de volumen y una descripción de los filtros que mencionaré.


Lo principal que debemos saber sobre la señal digital es:


  1. Frecuencia de muestreo: caracteriza la precisión con la que se digitalizará su sonido. Por ejemplo, cuando decimos que la frecuencia de muestreo es 44.1 kHz, esto significa que la señal se mide 44.100 veces en un segundo. Hoy, las frecuencias de muestreo más comunes son 44.1 kHz y 48 kHz.


  2. Profundidad de bits de una señal digital: caracteriza cómo el amplio rango dinámico "encaja" en su digital. Se mide en bits y suele ser de 16, 24 y 32 bits. El rango dinámico es la diferencia entre el sonido más alto y el más bajo, expresado en decibelios. Por ejemplo, para una señal de 8 bits es 48 dB, para una señal de 16 bits es 96 dB, para una señal de 24 bits es 144 dB, y para una señal de 32 bits es 192 dB.


  3. Bitrate es lo que todos los usuarios de Internet miraron en 2002 cuando descargaron música. La tasa de bits es el número de bits utilizados para transmitir o procesar datos por unidad de tiempo. En los formatos de transmisión de video y audio (por ejemplo, MPEG y MP3) que usan compresión con pérdida de calidad, el parámetro "tasa de bits" expresa el grado de compresión de la transmisión.



Metadatos en archivos de música


Además de los parámetros de sonido en sí, podemos usar información que está oculta en los archivos de sonido. Esta información generalmente se denomina Etiquetas y cada formato de archivo tiene su propio formato de etiqueta. Hablaremos de los archivos mp3 como los más comunes.


Las etiquetas son más fáciles de leer usando una biblioteca preparada, por ejemplo usando TagLib .


El formato mp3 contiene metadatos en su estructura ID3, en la cual podemos almacenar mucha información. Hay varias opciones para el formato ID3, pero hablaremos de ID3 v2.3, en el que puede almacenar la mayor cantidad de datos. De la información útil, debe prestar atención a: nombre, año de grabación, género, BPM (número de latidos por minuto), duración de la pista . ¿Cómo pueden ayudarnos estos campos al generar contenido? Si todo está claro con BPM, se usa durante la generación todo el tiempo y hablaremos de ello por separado, entonces, ¿por qué necesitamos otros campos? Aquí necesitas mostrar imaginación.


Por ejemplo, leemos el género y el año. Para empezar, necesitamos procesar un poco esta información. Para simplificar, consideraremos solo el inglés. Las etiquetas de Mp3 (y otras etiquetas) a menudo se completan manualmente, a partir de aquí se siguen diferentes deletreos de géneros, diferentes puntuaciones, etc. Es mejor llevar la etiqueta resultante a un formato único para que sea más fácil compararla con otras. Es recomendable eliminar todos los signos de puntuación, espacios y convertir la cadena a minúsculas. Esto se puede hacer usando expresiones regulares.


Después de tales manipulaciones, será mucho más fácil comparar los géneros de las canciones. A continuación, deberá crear una base de géneros, basada en alguna fuente, y revisarla para compilar su base de datos de etiquetas. Aquí hay un ejemplo de una lista de todos los géneros: musicgenreslist.com . Naturalmente, debe elegir solo el más básico.


No respondí, ¿por qué tantas dificultades? Daré ejemplos (muy simplificados).
Según el género podemos:


  • Cambiar ubicación (rock - bosque sombrío, música electrónica - espacio, país - desierto, pop - ciudad, etc.)
  • Cambiar personaje
  • Cambiar enemigos, etc.


Un ejemplo de un personaje basado en las etiquetas rock, electro, pop.


¡Y luego puedes pensar en cualquier cosa! Año de lanzamiento del álbum: 1960-1970? Viste al personaje con la ropa de este período. Duración de la pista 10 minutos? Deje que su "serpiente generada musicalmente" tenga una cola larga. Hay muchas oportunidades y siempre existe la posibilidad de sorprender al jugador.


Representación de archivos de audio en Unity.



Todo parece ser simple ...


Unity tiene varios componentes principales para trabajar con sonido:


  • El oyente de audio (oyente) se comporta como un micrófono. Recibe la entrada de cualquier fuente de sonido (fuente de audio) en la escena y reproduce sonidos a través de los altavoces. Para la mayoría de las aplicaciones, tiene sentido agregar un oyente a la cámara principal: el objeto Cámara principal.
  • Fuente de audio reproduce el clip de audio en la escena. Si el Clip de audio es un clip 3D, la fuente se reproduce en una posición determinada en el espacio y se silenciará según la distancia.
  • Los clips de audio (clips) contienen datos de audio utilizados en fuentes de audio. Unity admite recursos de audio mono, estéreo y multicanal. Unity puede importar los siguientes tipos de archivos: .aif, .wav, .mp3 y .ogg.


Si está profundamente inmerso en el trabajo con el sonido, deberá interactuar directamente con los clips de audio. Un clip de audio contiene una serie de cuadros de sonido (muestras) que puede leer y sobrescribir. Con esto (y montones de matan) puede determinar los parámetros de las pistas de sonido y crear efectos de sonido.


Configuraciones de pistas de música


Entonces, leemos algunos datos iniciales de nuestra pista y obtuvimos los primeros rudimentos de la generación. Ahora puedes pasar a la parte más difícil. Necesitamos entender qué parámetros dinámicos de la pista podemos determinar y cómo se pueden usar en el juego. Parte del material se basa en el blog del estudio Parallelcube . Los chicos hacen activos y tutoriales para Unreal Engine, por lo que muchas gracias a ellos.


Se pueden distinguir las siguientes tareas:


  • Definir un barril como disparador de efectos especiales.
  • Determinar momentos tranquilos y ruidosos en una pista
  • Usando estos datos para construir un nivel
  • Usando estos datos para crear efectos

Detectar un bombo en una pista y usar este sonido como disparador.


Para comenzar a trabajar en la determinación de los parámetros de la pista, debe seleccionar la música. Para facilitar el trabajo, necesita una pista en la que haya un barril obvio y, preferiblemente, transiciones bruscas de volumen. Elegí la canción Perturbator - Future Club , que podías escuchar en el juego Hotline Miami 2: Wrong Number.


Aquí hay un pequeño análisis de la entrada de esta pista (la pista de audio se ha acortado especialmente)



  1. El llamado desvanecimiento o introducción. En este momento, la pista aumenta de volumen.
  2. Aparece la fuerza de choque principal: el cañón. Los momentos de la aparición del barril son muy fáciles de leer en la representación visual de la pista de audio. Además, aquí suena un sintetizador de fondo, y su ruido es visible en la pista. Si la pista no hubiera sido comprimida, habría sido aún más clara. (detalles sobre la compresión aquí )
  3. Aparece un sintetizador adicional, que erosiona ligeramente la claridad de la representación visual del cañón.
  4. Una pausa que aparece antes de un momento brillante en la pista (soltar).
  5. La parte principal, donde, además del barril, aparece un sintetizador de bajos, que distorsiona enormemente la representación visual de la señal, pero el barril aún se puede distinguir.

Entonces, nuestra tarea principal es determinar en qué punto suena nuestro barril. Esta es una tarea bastante difícil, para la cual generalmente se usan bibliotecas de audio especiales. Recuerde, si hay opciones preparadas, y tiene el objetivo de hacer un efecto, y no estudiar el tapete. parte, tome opciones ya hechas. Si su juego tiene un presupuesto y $ 25 adicionales, puede comprar un activo especial del desarrollador 3y3net, que se llama Beat Detection . Además, puede considerar una gran opción del desarrollador Allan Pichardo . Si quieres entender cómo funcionan estos algoritmos, entonces, por supuesto, escríbelo tú mismo.


Como vimos en la pista de audio, un ritmo siempre se distingue claramente por el nivel de sonido. Esta es su esencia. Los músicos procesan y comprimen especialmente la pista para que el ritmo no se obstruya con otros sonidos y tenga su lugar en el rango de frecuencia de la pista. El bit siempre es más fuerte que el nivel de volumen promedio (Promedio). Si el sonido es más alto que un cierto umbral (Umbral), entonces, solo mirando la pantalla gráfica de la onda de sonido, podemos decir con confianza "¡Sí, esto es un poco!".



Me gustaría presentar una descripción técnica más detallada y algoritmos específicos para determinar un bit en un artículo separado (se publicará después de un tiempo), ya que este tema va mucho más allá del alcance de este material. En resumen, en tales algoritmos, el sonido primero pasa a través de los filtros para que sea más fácil de procesar, después de lo cual se analiza la dinámica de la energía del sonido. Aquí hay un ejemplo de dicho algoritmo (¡atención, matlab!) .


Se puede encontrar una descripción matemática completa de este algoritmo en este artículo: Diseño e implementación de un algoritmo Beat Detector .


Por lo tanto, imaginemos que pudimos escribir un guión que determina en tiempo real en qué punto patea un barril. Además, con la ayuda del algoritmo, también podemos determinar el BPM general y comprender dónde "late" el ritmo principal con nosotros. ¿Qué podemos hacer con la información recibida?


Puedes tomar Beathazard como ejemplo y asegurarte de que por cada latido del ritmo principal nuestro barco dispare con un láser ordinario, y cuando el cañón golpee, disparamos con un súper láser. Se verá más o menos así:



Además, podemos agregar más especiales. efectos Y haz que el nivel palpite junto con el bit:



El mismo algoritmo que determina el bit en tiempo real, podemos usarlo para calcular BPM (latidos por minuto o el número de latidos por minuto). La información BPM se puede utilizar, por ejemplo, para generar niveles de dificultad y calcular puntos de bonificación. Si la pista es rápida (150-180 BMP), el jugador recibe un bono X5, etc.


Determinar momentos tranquilos y ruidosos en una pista


Una forma de determinar momentos ruidosos y silenciosos es procesar la pista con un filtro de paso bajo y obtener un promedio móvil para el nivel de volumen. Después de eso, podemos guardar este nivel de volumen en un formato conveniente para nosotros, por ejemplo, en una matriz flotante.


Si logras identificar dinámicamente lugares silenciosos y ruidosos en la música, puedes controlar de manera muy competente el voltaje y la atmósfera en tu juego. Por ejemplo, antes de la batalla con el jefe, suena una melodía alarmante, y cuando aparece el jefe, se vuelve más fuerte. Puede usar el algoritmo para determinar el nivel de volumen y amplificar todas las luces que están en el escenario. Entonces el jugador comprenderá que el clímax llegará pronto.



Crear una capa basada en datos de audio.


, , , , ( ). , , 2D-? . :



3D, 2D . , Audiosurf , .



Elastomania, ? !?


, , , - .


Conclusión


, , . , , , , . , , , . , , . Unity. !



Enlaces utiles


Source: https://habr.com/ru/post/es429872/


All Articles