Integración de Unreal Engine 5 con Wwise (Blueprint & C++)
If you prefer to read an English version, click on this button =>
Unreal Engine Version: 5.0.2
Wwise Version: 2021.1.8.7831
Esta es una guía simple sobre cómo integrar el plugin de Wwise con Unreal Engine 5 usando el último método Event Based Packaging (Empaquetado Basado en Eventos) recomendado por Audiokinetic. Vamos a crear un proyecto vacío third-person llamado “MyUE5Project”.
IMPORTANTE!
Event-Based Packaging es obsoleto comenzando con Wwise 2022.1. La información en este blog post ya no es reelevante si usas esta o una versión más moderna de Wwise. Por favor consulta la documentación oficial: Wwise - UE (Using the integration)
Blueprint Project:
Descarga e instala Wwise Launcher
Descarga el Wwise Launcher desde el sítio oficial de Audiokinetic. Debes crear una cuenta para poder hacer uso de el software. Escoge una versión y tu sistema operativo.
Después de la instalación instalación, abre el Wwise Launcher e instala la última versión de Wwise. Si necesitas una versión en particular, puedes buscar por esta también, solo asegúrate que sea compatible con UE5.
2. Crea tu proyecto UE5 e integra el plugin de Wwise
Abre el Epic Games Launcher y crea un nuevo proyecto Blueprint - Third Person Project:
Cierra tu proyecto UE5 y regresa al Wwise Launcher. Da click en Unreal > Integrate Wwise into Project…debajo del nombre de tu proyecto:
Sigue las instrucciones en caso de que haya paquetes adicionales que instalar, y luego da click en el botón Integrate y espera hasta que veas este mensaje: “Operation Completed Successfully”:
Abre tu proyecto UE5 y verifica que el plugin fué instalado correctamente. Ve a Edit > Plugins y busca Wwise:
3. Event Based Packaging
Wwise ofrece dos tipos de flujos de trabajo para administrar los recursos: Soundbank-based (Bancos de sonido), and Event-Based Packaging (Empaquetado Basado en Eventos). Con el flujo Soundbank-based, la carga/descarga de los recursos de audio deben ser administrados de forma manual, consume tiempo y es propenso a errores. Es aún el único método disponible en otros motores de juego como Unity, y otros middleware de audio como FMOD, por lo cual es aún importante saber como integrar audio usando este método.
Event-Based Packaging es el método más moderno y efectivo ya que la administración de los recursos de audio es manejado por el motor de juego, además que permite una comunicación fluida entre el Wwise authoring tool y Unreal Engine 5. Es posible utilizar estos dos flujos de trabajo juntos, pero en este tutorial vamos a usar el método: Event-Based Packaging.
Desde el Blog de Audiokinetic:
Why would you want to do this? The reason is that in Wwise's traditional pipeline, the user is left to decide how to organize SoundBanks. In larger projects, this organization often takes a lot of time. And because it is manually organized and managed, redundancy is almost inevitable when loading resources. In the new EBP workflow, the resources corresponding to each event are automatically packaged into a SoundBank and stored in the
.uasset
of the event. When the event is called, only the corresponding media resources are loaded, effectively only loading as many resources as needed. This also means that the occurrence of resource redundancy is fundamentally eliminated. And since eachSoundBank
only contains the resources of one event, they can be flexibly unloaded without worrying about other events losing access to a resource.
Traducción:
Por qué quieres esto? La razón es que en el flujo de trabajo tradicional de Wwise, el usuario es el encargado de organizar los SoundBanks. En proyectos grandes, esta organización suele tomar mucho tiempo. Por esta razón, ya que es administrado y organizado de forma manual, la redundancia es casi inevitable al cargar los recursos. En el nuevo flujo de trabajo "EBP”, los recursos correspondientes a cada evento son empaquetados automáticamente en un Soundbank y almacenados en el .uasset del evento. Cuando el evento es llamado, solo los recursos que corresponden son cargados, en efecto solo los recursos necesarios. Esto también significa que la redundancia de recursos es eliminada. Ya que cada Soundbank sólo contiene los recursos de un evento, ellos pueden ser descargados con flexibilidad sin temor a que otros eventos pierdan acceso al recurso.
Leer más aquí:
Ve a Edit > Project Settings > Wwise > Integration Settings y activa “Event Based Packaging“. Una advertencia se mostrará. Da click en Yes.
Un nuevo mensaje se mostrará sobre eliminar el InitBank. Da click en Delete. Aún en el menú Project Settings, antes de reiniciar tu proyecto, ve a Wwise > User Settings y activa: Enable Automatic Asset Synchronization y Auto Connect to WAAPI. Activar estas opciones hará que Wwise y UE5 se comuniquen de tal forma que todos los cambios que se hagan en Wwise aparezcan al instante en UE5 y vice versa. Ahora, reinicia tu proyecto.
4. Abre el proyecto de Wwise y configúralo
Abre el Wwise Launcher y da click en Unreal > MyUE5Project > Open in Wwise para abrir tu proyecto de Wwise. Asegúrate que estás en el Designer layout dando click en Layouts > Designer o presionando F5 en tu teclado.
Da click derecho en Default Work Unit debajo de Actor-Mixer Hierarchy y selecciona New Child > Sound SFX; nombra a este SFX "TestSound”.
Da click derecho en "TestSound” y importa un archivo de audio. También, es posible arrastrar un archivo desde tu ordenador.
5. Prueba la Integración
Regresa a tu proyecto de Unreal Engine y abre el Content Drawer. Notarás que ahora tienes una carpeta llamada "WwiseAudio”, y tiene la misma estructura de directorios que tu proyecto de Wwise. Vas a encontrar a "PlayTestEvent” dentro de la carpeta Events/Default_Work_Unit:
Ve al menú de UE5 a Build > Generate Sound Data y selecciona las plataformas que correspondan:
Da click derecho en “Play_TestEvent” y da click en Play Event. Deberías poder escuchar tu evento de audio.
Proyecto C++:
Código
Necesitas tener instalado un IDE antes de continuar (Visual Studio para Windows or Xcode para Mac)
Sigue los mismos pasos que en un proyecto Blueprint. Si vas a crear un proyecto nuevo, selecciona C++ en vez de Blueprint. Si vas a convertir un proyecto Blueprint a C++, ve a Tools > New C++ class y crea una clase vacía (si estás trabajando dentro de un equipo, discute esto con los programadores). Ahora, tu proyecto va a comenzar a compilar...
2. Dependencias
Ve a Tools > Open Visual Studio o Tools > Open Xcode. Dentro de tu IDE ve a Games/MyUE5Project/Source/MyUE5Project y selecciona MyUE5Project.build, y añade “AkAudio” a las dependencias públicas:
Esta línea debería verse así (cópiala si es necesario):
PublicDependencyModuleNames.AddRange(new string[] {"Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "AkAudio"});
3. Compila
Guarda tu código modificado. Vuelve y compila tu proyecto UE. Todo el API de FMOD debería ser accesible. Deberías poder construir y compilar el juego, también.