Las funciones de audio de Unreal Engine 5 son compatibles con proyectos con diversos requisitos de audio. La importación de audio se puede realizar navegando hasta una carpeta de contenido, haciendo clic en el botón Importar o navegando hasta la carpeta con el explorador de tu sistema operativo. Luego el motor crea un archivo .uasset con tu sonido. Unreal Engine admite los formatos de archivo .wav, .ogg, .flac, .aif, .opus, .mp3 . Los archivos pueden tener una profundidad de bits de 16 o 24 y cualquier frecuencia de muestreo. Internamente, Unreal Engine almacena los archivos de audio importados en un formato sin comprimir de 16 bits .wav .
Para obtener más información sobre el motor de audio de Unreal, consulta la siguiente documentación:
Las señales de sonido son objetos que se utilizan para reproducir sonidos en tiempo de ejecución. Las señales de sonido se seleccionan de un conjunto de archivos de audio que representan el mismo concepto. Por ejemplo, puedes tener una señal de sonido para «Viento» y, en tiempo de ejecución, la señal de sonido elegiría entre varios archivos de audio con sonidos de viento para reproducirlos. Un ejemplo de esto en Parrot es la señal de sonido de salpicadura de agua: Content/Sound/SFX/WaterSplash/CUE_WaterSplashSound
Las clases de sonido son tipos de recursos que utiliza el motor de audio para agrupar varios sonidos y, a continuación, modificar los parámetros de todas las ondas de sonido relevantes al mismo tiempo. Parrot tiene MainSoundClass, que mezcla música y efectos de sonido (nodos Music y SFX).
Las mezclas de clases de sonido pueden aplicar umbrales de volumen y se ejecutan automáticamente cada vez que se reproduce cualquier sonido de una clase de sonido.
Implementación específica para Parrot
En Parrot, la mayoría de los sonidos utilizados son señales de sonido que contienen un solo sonido. El volumen y el tono se configuran por señal de sonido, y el volumen general se controla mediante una clase de sonido predeterminada y mezclas de sonido para la configuración. Para optimizar esto para la música, Parrot cuenta con un subsistema de audio personalizado.
Ejemplo de selección
Las selecciones son un ejemplo de señales de sonido simples que se reproducen una vez y luego se destruyen. Las selecciones utilizan efectos de sonido de monedas de opengameart.org. Los recursos de origen importados se encuentran en Content/Assets/OpenGameArt/8bitCoinSounds. Las señales de sonido creadas para cada uno de estos archivos se encuentran en Content/Sound/SFX/Pickups. Llama a Play Sound 2D con la señal de sonido que desees en BP_PickupBase cuando se inicie el evento de selección.
Todas las selecciones son compatibles con efectos visuales y de sonido, y deben destruirse al entrar en contacto. Esto puede hacerse en la clase BP_PickupBase.
Puedes usar el nodo Play Sound 2D aquí porque el sonido no necesita ser espacialmente relevante en el mundo. Si el sonido debe ser espacialmente relevante, puedes utilizar Reproducir sonido en la ubicación.
Bucles de música
La música funciona de manera muy similar a las señales de sonido estándar. Importar los archivos de sonido y configurar las señales de sonido es igual que con los efectos de sonido. Sin embargo, hay algunos pasos adicionales:
En el propio recurso de sonido importado, asegúrate de que el modo de virtualización esté establecido en Reproducir en silencio. Esto es importante para la música, ya que permite respetar la configuración de volumen. Sin esta opción, cuando se silencia el volumen el sonido se destruye y ya no se reproduce cuando se restaura el volumen.
En la propia señal de sonido, haz clic en el nodo de pista y asegúrate de que En bucle esté ajustado.
Configuración de sonido
Todos los ajustes de Parrot están relacionados con diversos volúmenes de sonido.
En Content/Sound/Settings existe un recurso de clase de sonido llamado MainSoundClass. En el nodo Child Classes, puedes dirigir tu clase de sonido a cualquier otra clase de sonido relevante. Las clases hijo predeterminadas incluyen los nodos SFX y Music.
En la misma carpeta, hay un recurso llamado DefaultSoundMix. Puedes definir los efectos de clase de sonido en los ajustes de MainSoundClass. Es muy importante que Aplicar a hijos esté habilitado.
En cada señal de sonido, asegúrate de que la clase esté configurada en la categoría adecuada. Para las selecciones, utiliza la clase SFX.
Para modificar la configuración de la mezcla durante la ejecución, puedes utilizar el nodo Set Sound Class Mix Override con el nodo Push Sound Mix Modifier. Esto aplica cualquier cambio que hayas realizado.
Este es un ejemplo de blueprint, pero en Parrot esto se suele hacer en C++ en el subsistema de audio.
Subsistema de audio de Parrot
En esta sección se explica qué hace la implementación del subsistema de audio. Para saber por qué Parrot tiene un subsistema para audio, consulta Subsistemas en Parrot.
El subsistema de audio de Parrot es una clase de C++ denominada UParrotAudioSubsystem. Comparte la vida útil de la instancia del juego, ya que la configuración del volumen se puede cambiar en cualquier momento desde el menú principal o el menú de pausa. Cuando se está grabando el juego completo, el subsistema de audio también detecta los cambios en el estado del juego. A continuación, puedes cambiar la pista de música cuando comience un nivel, cuando se complete un nivel o cuando el jugador salga del área de juego.
WBP_SettingScreen muestra el subsistema de audio en acción. Los valores del control deslizante de UMG (Unreal Motion Graphics UI Designer) se pasan al subsistema en C++. El mezclador de sonido en tiempo de ejecución se actualiza cada vez que cambian los valores. El tiempo de Fundido es cero, de modo que los cambios de volumen se aplican inmediatamente.
La configuración se guarda con el nodo Save Audio Settings.
Para ver los detalles sobre cómo funciona la serialización para guardar esta configuración, consulta Serialización en Parrot.
La música de Parrot está compuesta casi en su totalidad en C++. Debido a la estructura de Parrot, donde cada mapa es un nivel, hay una clase AParrotWorldSettings. Puedes utilizarla para configurar cualquier dato específico del mundo, como la música del nivel. El subsistema de audio consulta la configuración del mundo y extrae la pista que necesita. Para reaccionar a los cambios de estado una vez iniciado el juego, vincula el estado de juego de Parrot en WorldBeginPlay.