28
Building a UE4 Plugin FMOD STUDIO Case Study

FMOD STUDIO Case Study. Its easy Reuse common components Marketplace $$$

Embed Size (px)

Citation preview

Page 1: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Building a UE4 PluginFMOD STUDIO Case Study

Page 2: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Its easy Reuse common components Marketplace $$$

Motivation – Why make a plugin?

Page 3: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

FMOD Studio

Page 4: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

FMOD Studio

Page 5: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

FMOD Studio

Page 6: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Industry leading audio middleware Easy and powerful authoring tools Free for indies ($100K or less)

FMOD Studio

Page 7: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Previous UE3 Integration◦ Deep integration with engine code◦ Long time to development

UE4 Integration Plan◦ Basic version and iterate on it

Estimate 2 weeks for first version◦ Open questions

Can it be done as a pure plugin? Content window/asset integration?

Unreal Integration

Page 8: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Plugin Basics

UE4 Android module

UE4 Core

module

UE4 Slate

module

UE4 XmlParser

module

YourGame module

FMOD Studiomodule

FMOD Studio Editor

module

FMODStudio plugin

Unreal 4 Engine

Page 9: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Plugin Basics

Page 10: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Plugin Basics

Page 11: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Plugin Basics

Page 12: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Plugin Basics

Page 13: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Module Class

• Macro to register module• Virtual functions when module loaded/unloaded

Page 14: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Basic Asset Class

Page 15: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Settings Class

Page 16: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Settings Class

Page 17: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Blueprints

Page 18: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Blueprints

Page 19: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Sound Banks

.xml files .bank filesFMOD Studio

UE4.uasset files Cooked .pak

Page 20: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Choices◦ Bank with uasset and GUID references◦ Dummy uassets on disk◦ Dummy uassets in memory◦ Explode bank into individual files and import

Sound Banks

Page 21: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Create dummy assets on demand in memory The good:

◦ Assets as first class citizens◦ They appear in the content window◦ Blueprints just work

The bad:◦ Not the recommended approach!◦ Serialized by name not Guid◦ Not read-only in content window, but they should be

Sound Banks

Page 22: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Sound Banks

Page 23: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Building from GitHub/P4

Downloaded UE4 binary

Code project DLL deployment issues Wrong static library namePlugin version must match Epic’sDLL deployment issues

Blueprint-only project DLL deployment issues Plugin won’t linkWrong static library namePlugin version must match Epic’sDLL deployment issues

Deployment

Page 24: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Win64 plugin outputs:◦ UE4Editor-FMODStudio.dll◦ UE4Editor-FMODStudioEditor.dll◦ UE4Game-FMODStudio-Static.lib

Name is expected to be:◦ FMODStudio-Static.lib

Deployment - names

Page 25: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Plugin version number◦ Baked into DLL◦ Must match exactly

Defines◦ BUILT_FROM_CHANGELIST◦ MODULE_API_VERSION

Deployment - plugin version

Page 26: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

External DLLs◦ Third party directory

Packaging◦ Copies third party DLLs into destination directory

Android has additional requirements◦ .jar file needs to be linked in◦ .so files need to be loaded by main java Activity

How does it work for plugins?◦ It doesn’t

Deployment – DLL deployment

Page 27: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

Coming soon*!* Not sure what soon means

Marketplace plugin support

Page 28: FMOD STUDIO Case Study.  Its easy  Reuse common components  Marketplace  $$$

FMOD Tutorial videos (YouTube FMODTV) FMOD Q/A (www.fmod.com/questions) FMOD Support ([email protected]) Questions?

Demo/Questions/Comments