Propiedades Wwise en Unreal Engine 5 - C++ (Eventos, Estados, RTPCs, y más…)

If you prefer to read an English version, click on this button =>

Unreal Engine Version: 5.0.3

Wwise Version: 2021.1.9.7847

Esta es una guía simple sobre las Propiedades Wwise esenciales que necesitamos para crear nuestros sistemas de audio en Unreal Engine 5. Vamos a aprender qué son, qué hacen y como definirlas/declararlas en C++ y después exponerlas a Blueprints. Vamos a usar el método de Event-Based Packaging (Empaquetado basado en eventos), el cual no requiere construir ningún SoundBank.

IMPORTANTE!

〰️

IMPORTANTE! 〰️

Prerequisitos:

  1. Crea un proyecto C++ third-person vacio y llámalo “MyUE5Project”.

  2. Descarga e integra el plugin Wwise en tu proyecto por medio del Wwise Launcher.

  3. Activa la opción de Event-Based Packaging.

Para que este tutorial tenga sentido, es importante que sepas cómo integrar el plugin Wwise en Unreal Engine. Adicionalmente, considera leer y consultar mi post anterior sobre UPROPERTY & UFUNCTION:

IMPORTANTE!

〰️

IMPORTANTE! 〰️

 

Primeros Pasos:

En tu editor UE5 ve a Tools > Open Visual Studio o Tools > Open Xcode.

Abre el Content Drawer y da click en Settings, luego seleciona Show C++ Classes.

La carpeta C++ Classes será expuesta.

 
 

En el Content Drawer ve a la carpeta "MyUE5Project”. Da click derecho y selecciona “New C++ Class”.

Crea una clase de tipo Actor y llámala “MyCPPActorClass”.

 
 
 
 

Dentro de tu IDE ve a Games/MyUEProject/Source/MyUEProject y abre los dos: “MyCPPActorClass.cpp” y "MyCPPActorClass.h”.

 
 

Sobre los archivos .h y .cpp: Cada vez que creamos una clase en Unreal Engine, este crea dos archivos. El archivo con extensión .h o “header/encabezado” va a contener las “Declaraciones” (Propiedades/Variables, Constantes y Funciones), y el archivo con extensión .cpp va a contener las “Implementaciones” o "Definiciones” de estas declaraciones.

 

Propiedades Wwise:

Todas nuestras propiedades van a ser declaradas en el archivo "MyCPPActorClass.h”. Para simplificar nuestras pruebas, vamos a poner todas estas propiedades debajo del acceso public y escribir este macro UFUNCTION sobre todas ellas (Lee el post UPROPERTY & UFUNCTION para saber más):


UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Audio")

1. Event (UAkAudioEvent*)

Un evento, es el recurso más esencial de Wwise. Los eventos van a contener nuestros efectos de sonido y pistas musicales, los cuales pueden ser instanciadas en tu juego.

From Audiokinetic - Wwise:

A method to trigger audio in game using an Action or series of Actions, such as Play, Mute, and Pause, that have been applied to one or more Wwise objects.

Traducción:

Un método para “disparar” audio en el juego usando una acción o serie de acciones tales cómo Reproducir, Silenciar y Pausar, que han sido aplicados a uno o más objetos de Wwise.

.h file:

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Audio")
UAkAudioEvent* myAudioEvent;

Editor y Blueprints:

 
 

2. Switch (UAkSwitchValue*)

Un Switch Wwise es una herramienta que permite seleccionar y disparar una serie de sonidos de un switch container en un ámbito local. Los Switches son muy útiles cuando queremos reproducir sonidos que tienen varias alternativas como por ejemplo pasos o impactos de armas en diferentes superficies. Adicionalmente, los Switches pueden ser mapeados para ser controlados por medio de RTPCs.

From Audiokinetic - Wwise:

A Switch represents the alternatives that exist for a particular element in game, and is used to help manage the corresponding objects for these alternatives. For example, if a character is running on a concrete surface and then moves onto grass, the sound of the footsteps in a Switch Container should change to match the change of surface.

Traducción:

Un Switch representa las alternativas que existen en un elemento particular del juego, y son usadas para administrar los objetos que corresponden a estas alternativas. Por ejemplo, si un personaje está corriendo en una superficie de concreto y después se mueve al césped, el sonido de sus pasos en un Switch Container debería cambiar para coincidir con el cambio de dicha superficie.

.h file:

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Audio")
UAkSwitchValue* mySwitchValue;

Editor y Blueprints:

 
 

3. State (UAkStateValue*)

Un Estado Wwise es una herramienta que permite un grupo de cambios de ámbito global sean disparados por el motor del juego. Un estado puede controlar cualquier parámetro Wwise.

From Audiokinetic - Wwise:

A global offset or adjustment to the game audio properties that relates to changes in the physical and environmental conditions in the game.

Traducción:

Un ajuste o modificación global de las propiedades del audio que se relacionan con cambios en las condiciones físicas y ambientales del juego.

.h file:

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Audio")
UAkStateValue* myStateValue;

Editor y Blueprints:

 
 

4. RTPC (UAkRtpc*)

Un Wwise RTPC (Real Time Parameter Controls) es una herramienta que permite cambios dinámicos e interactivos de los parámetros en tiempo real. Los RTPCs son uno de los recursos más poderosos de Wwise para crear nuestros sistemas de audio y música.

From Audiokinetic - Wwise:

Real Time Parameter Controls. An interactive method used to drive the audio in game by mapping Game Parameter values to properties in Wwise. RTPCs can also be used to drive Switch changes by mapping Game Parameters to Switch Groups.

Traducción:

Real Time Parameter Controls (Controles de Parámetros en Tiempo Real). Un método interactivo usado para controlar el audio mapeando valores en el juego a propiedades de Wwise. Los RTPCs también pueden ser usados para controlar cambios de Switch mapeando parámetros de juego a grupos de switch.

.h file:

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Audio")
UAkRtpc* myRtpc;

Editor y Blueprints:

 
 

5. Trigger (UAkTrigger*)

Un Wwise Trigger es una herramienta que recibe una llamada del motor del juego y fuerza a que un efecto de sonido, o un stinger musical, se reproduzca de forma sincronizada a una subdivisión rítmica-musical, o a un cue musical definido por el usuario. Los Triggers son muy útiles y esenciales en juegos basados en música.

From Audiokinetic - Wwise:

A Game Sync that responds to a spontaneous occurrence in the game and launches a Stinger.

Traducción:

Un Game Sync que responde a una ocurrencia espontánea en el juego, y reproduce un Stinger.

.h file:

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Audio")
UAkTrigger* myTrigger;

Editor y Blueprints:

 
 

6. Aux Bus (UAkAuxBus*)

Un Bus Auxiliar Wwise es un componente del mezclador de audio que contiene efectos de audio y que recibe señales de cualquier Contenedor Wwise. Los Buses Auxiliares son útiles para simular cambios en la espacialización dinámicamente por medio de reverberación.

From Audiokinetic - Wwise:

A special type of Audio Bus that is generally used to apply Effects such as Reverbs and Delays for simulating environmental Effects or to allow dynamic mixing

Traducción:

Un tipo especial de Bus de Audio que es generalmente usado para aplicar efectos tal como Reverbs y Delays para simular efectos ambientales o para permitir mezclas dinámicas.

.h file:

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Audio")
UAkAuxBus* myAuxBus;

Editor y Blueprints:

 
 

7. Audio Bank (UAkAudioBank*)

Un Wwise Audio Bank va a contener nuestros eventos de audio y los va a cargar en memoria. Puedes asignar tus eventos a diferentes bancos. Adicionalmente, puedes cargarlos/descargarlos en cualquier momento para lograr la mejor optimización considerando el diseño y arquitectura de tu juego.

IMPORTANTE: Audio Banks no son necesarios en un flujo de trabajo Event-Based Packaging.

From Audiokinetic - Wwise:

A group of Event data, Sound, Music, and Motion structure data, and/or media files that will be loaded into the game's platform memory at a particular point in a game

Traducción:

Un grupo de datos de Eventos, Sonido, Música, Datos de Movimiento, y/o archivos multimedia que serán cargados en la memoria de la plataforma de juego en un momento particular del juego.

.h file:

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Audio")
UAkAudioBank* myAudioBank;
 
 

Exponer Las Propiedades Al Editor y A Blueprints:

Después de escribir todas las Propiedades Wwise en tu archivo "MyCPPActorClass.h”, tu código debería ser similar a esto:

 
 

Guarda tu código modificado. Vuelve al proyecto UE y compila.

 
 

Arrastra "MyCPPActorClass” en el outliner de tu mapa.

 
 

Crea una clase tipo Blueprint basada en “MyCPPActorClass” llamada “MyBPActorClass”. Arrástrala dentro del outliner del mapa, también.

 
 
 
 

Abre el graph blueprint de “MyBPActorClass”. Deberías ver todas tus propiedades Wwise C++ en la parte inferior-izquierda de tu editor, debajo de Variables > Audio. Si no puedes verlas aún, intenta dar click en el ícono den forma de engranaje en la parte superior-derecha de My Blueprint y selecciona Show Inherited Variables.

 
 
 

EL FIN

〰️〰️〰️

EL FIN 〰️〰️〰️

Previous
Previous

Eventos FMOD en Unreal Engine 5 (Play Event 2D) - Game Audio Basics

Next
Next

Propiedades FMOD en Unreal Engine 5 - C++ (Eventos, Instancias, Snapshots, y más…)