fmod / fmod-for-unreal Goto Github PK
View Code? Open in Web Editor NEWFMOD Studio integration with Unreal.
Home Page: https://fmod.com/resources/documentation-unreal
License: MIT License
FMOD Studio integration with Unreal.
Home Page: https://fmod.com/resources/documentation-unreal
License: MIT License
FMODAssetLookup and FMODBankLookup have a few UPROPERTIES and they because they don't have Category tags they prevent the plugin being used as an engine plugin.
a change like this would allow the plugin to be used as an engine plugin.
- UPROPERTY(EditAnywhere, BlueprintReadOnly)
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "FMOD")
Version: 2.01-UE4.26
In AssetTypeActions_FMODEvent.cpp, FAssetTypeActions_FMODEvent::~FAssetTypeActions_FMODEvent
, as part of unregistering callback delegates you are trying to load modules (via Get()
). This will not work if the Engine is shutting down.
LogWindows: Error: === Critical error: ===
LogWindows: Error:
LogWindows: Error: Fatal error!
LogWindows: Error:
LogWindows: Error: Unhandled Exception: EXCEPTION_ACCESS_VIOLATION 0x0000000000000000
LogWindows: Error:
LogWindows: Error: [Callstack] 0x0000000000000000 UnknownFunction []
LogWindows: Error: [Callstack] 0x00007ffe98a5fc62 UE4Editor-CoreUObject.dll!UClass::GetDefaultObject() [c:\MyGame\engine\source\runtime\coreuobject\public\uobject\class.h:2886]
LogWindows: Error: [Callstack] 0x00007ffe8c3bf7d1 UE4Editor-BlueprintGraph.dll!FAutocastFunctionMap::Refresh() [c:\MyGame\engine\source\editor\blueprintgraph\private\edgraphschema_k2.cpp:2301]
LogWindows: Error: [Callstack] 0x00007ffe8c393dd4 UE4Editor-BlueprintGraph.dll!TBaseStaticDelegateInstance<void __cdecl(FName,enum EModuleChangeReason),FDefaultDelegateUserPolicy>::ExecuteIfSafe() [c:\MyGame\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:731]
LogWindows: Error: [Callstack] 0x00007ffe92e8b516 UE4Editor-Core.dll!TMulticastDelegate<void __cdecl(FName,enum EModuleChangeReason),FDefaultDelegateUserPolicy>::Broadcast() [c:\MyGame\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:955]
LogWindows: Error: [Callstack] 0x00007ffe92eb200e UE4Editor-Core.dll!FModuleManager::LoadModuleWithFailureReason() [c:\MyGame\engine\source\runtime\core\private\modules\modulemanager.cpp:547]
LogWindows: Error: [Callstack] 0x00007ffe92eb10b9 UE4Editor-Core.dll!FModuleManager::LoadModuleChecked() [c:\MyGame\engine\source\runtime\core\private\modules\modulemanager.cpp:359]
LogWindows: Error: [Callstack] 0x00007ffe659ac52e UE4Editor-FMODStudioEditor.dll!FAssetTypeActions_FMODEvent::~FAssetTypeActions_FMODEvent() [c:\MyGame\neonfuryvr\plugins\fmodstudio\source\fmodstudioeditor\private\assettypeactions_fmodevent.cpp:26]
LogWindows: Error: [Callstack] 0x00007ffe659ac954 UE4Editor-FMODStudioEditor.dll!FAssetTypeActions_FMODEvent::`scalar deleting destructor'() []
LogWindows: Error: [Callstack] 0x00007ffe659d0147 UE4Editor-FMODStudioEditor.dll!FFMODStudioEditorModule::~FFMODStudioEditorModule() []
LogWindows: Error: [Callstack] 0x00007ffe659d118e UE4Editor-FMODStudioEditor.dll!FFMODStudioEditorModule::`scalar deleting destructor'() []
LogWindows: Error: [Callstack] 0x00007ffe92ed2570 UE4Editor-Core.dll!FModuleManager::UnloadModulesAtShutdown() [c:\MyGame\engine\source\runtime\core\private\modules\modulemanager.cpp:731]
LogWindows: Error: [Callstack] 0x00007ff6c35316ea UE4Editor-Cmd.exe!FEngineLoop::Exit() [c:\MyGame\engine\source\runtime\launch\private\launchengineloop.cpp:4216]
LogWindows: Error: [Callstack] 0x00007ff6c3532357 UE4Editor-Cmd.exe!GuardedMain() [c:\MyGame\engine\source\runtime\launch\private\launch.cpp:182]
LogWindows: Error: [Callstack] 0x00007ff6c35323aa UE4Editor-Cmd.exe!GuardedMainWrapper() [c:\MyGame\engine\source\runtime\launch\private\windows\launchwindows.cpp:137]
LogWindows: Error: [Callstack] 0x00007ff6c354649d UE4Editor-Cmd.exe!WinMain() [c:\MyGame\engine\source\runtime\launch\private\windows\launchwindows.cpp:268]
LogWindows: Error: [Callstack] 0x00007ff6c35484c2 UE4Editor-Cmd.exe!__scrt_common_main_seh() [d:\agent\_work\2\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
LogWindows: Error: [Callstack] 0x00007fff018c7c24 KERNEL32.DLL!UnknownFunction []
LogWindows: Error: [Callstack] 0x00007fff0386d4d1 ntdll.dll!UnknownFunction []
You should check whether the Engine is shutting down before loading modules, for example:
#include "CoreGlobals.h"
...
FAssetTypeActions_FMODEvent::~FAssetTypeActions_FMODEvent()
{
if (GIsRunning)
{
FEditorDelegates::BeginPIE.Remove(BeginPIEDelegateHandle);
IFMODStudioEditorModule::Get().BanksReloadedEvent().RemoveAll(this);
IFMODStudioModule::Get().StopAuditioningInstance();
}
}
Hello
I found a way to compile ue4 plugins by this tuto https://youtu.be/kZqVeD_r0Ow
we need packaging all files into pak files(or other custom file format), so there should be a methd to call myself file reading logic
Unreal engine version: 4.20.
Issue:
If I have an AFMODAmbientSound placed in a streaming level with auto-play enabled, every second time the level is hidden and enabled the AFMODAmbientSound won't play.
Explanation:
When a streaming level is deactivated (hidden) the actor components are unregisterred, but not deactivated. The FMOD plugin stops the audio in the OnUnregister() function, but won't start it the next time the component is registerred.
After this happened the next TickComponent() call will deactivate the component - because the fmod state is stopped.
Possible fix:
Remove the macro around UFMODAudioComponent::OnRegister() in the header, and modify the cpp:
void UFMODAudioComponent::OnRegister()
{
Super::OnRegister();
#if WITH_EDITORONLY_DATA
if (!bDefaultParameterValuesCached)
CacheDefaultParameterValues();
UpdateSpriteTexture();
#endif
if (bIsActive && bAutoActivate)
{
FMOD_STUDIO_PLAYBACK_STATE state = FMOD_STUDIO_PLAYBACK_STOPPED;
StudioInstance->getPlaybackState(&state);
if (state == FMOD_STUDIO_PLAYBACK_STOPPED)
Play();
}
}
Just updated to 4.26 and as soon as I press "Save All" in the editor all FMOD .uassets get rewritten even if they haven't changed and even if they haven't been open. Basically, all of them. Happens each time.
I'm using 4.26 from the website. Will try with the GitHub version in a moment as I noticed changes had been made to the AssetTable.
My UE4 project uses FMOD Audio banks which work properly and play when I run my project from the Editor.
However on packaging my project for deployment and playing I get the following error
This started to happen when i included the IFMODStudioModule::Get(); above the class finder in the gamemode.cpp file (As detailed in the deployment documentation for UE4).
Before doing that the packaged project would run fine but the sounds attached to the player blueprint would not play (there is no impact on the rest of the sounds in my project).
I am honestly at my wits end by this point. Any help would be appreciated.
EDIT: Added LogFile for reference
GameFile.log
I know that FMOD update this proyect with news releases of Unreal Engine 4 but the issues and PR's of this project have remained opened for many time, and unanswered.
FMOD continue mantain actively this repo?
@fmod-cameron
Engine Version 4.16.2
According to the latest UE4 documentation, each UPROPERTY within .h files that is "edit anywhere" needs to have a category specified.
Example: 22: UPROPERTY(EditAnywhere)
needs 22: UPROPERTY(EditAnywhere, category="blank")
Within the FMODAnimNotifyPlay.h file, there are no categories specified thus causing the FMOD plugin to fail when compiling source.
Trying to compile the commit 511e9fa, (last commit from branch 2.01-UE4.26)
There are some Error Compilations because the property "GeneratedFolders" (maybe "Path" too?) and the function "GetFullContentPath" It's missing from UFMODSettings,
(referenced by FMODStudio/Source/FMODStudioEditor/Classes/FMODGenerateAssetsCommandlet.h & FMODStudio/Source/FMODStudioEditor/Private/FMODGenerateAssetsCommandlet.cpp)
I think is from these files:
Plugins\FMOD\FMODStudio\Source\FMODStudio\Classes\FMODSettings.h
Plugins\FMOD\FMODStudio\Source\FMODStudio\Private\FMODSettings.cpp
Could you check if you forgot add some files to the last commit?
Of Course, Take your time and Thanks for all
(Of course, I will roll back (my copy cloned as submodule from my repo, I mean) the commit until it's fixed)
Building compilation info:
[1/4] FMODGenerateAssetsCommandlet.cpp
Plugins\FMOD\FMODStudio\Source\FMODStudioEditor\Private\FMODGenerateAssetsCommandlet.cpp(42): error C2039: 'GeneratedFolders': is not a member of 'UFMODSettings'
Plugins\FMOD\FMODStudio\Source\FMODStudioEditor\Private\../Classes/FMODAssetBuilder.h(17): note: see declaration of 'UFMODSettings'
Plugins\FMOD\FMODStudio\Source\FMODStudioEditor\Private\FMODGenerateAssetsCommandlet.cpp(42): error C2143: syntax error: missing ';' before ':'
Plugins\FMOD\FMODStudio\Source\FMODStudioEditor\Private\FMODGenerateAssetsCommandlet.cpp(42): error C2143: syntax error: missing ';' before ')'
FMOD\FMODStudio\Source\FMODStudioEditor\Private\FMODGenerateAssetsCommandlet.cpp(44): error C2039: 'Path': is not a member of 'FString'
Plugins\FMOD\FMODStudio\Source\FMODStudioEditor\Private\FMODGenerateAssetsCommandlet.cpp(55): error C2039: 'GetFullContentPath': is not a member of 'UFMODSettings'
Plugins\FMOD\FMODStudio\Source\FMODStudioEditor\Private\../Classes/FMODAssetBuilder.h(17): note: see declaration of 'UFMODSettings'
EDIT: Fixing Building log format
Validation is successful and events can be correctly heard in editor, but nothing is played in play (blueprints calls nor FMODAmbientSounds)
This is the warning I get when building for 4.24
I'm afraid that if Epic deletes the currently obsolete variables, FMOD will not build in 4.25.
FMODStudio.Build.cs(133,17): warning CS0618: 'UnrealBuildTool.ModuleRules.PublicLibraryPaths' is obsolete: 'For external libraries use the full path in PublicAdditionalLibraries, if its a system library then use PublicSystemLibraries/PublicSystemLibraryPaths'
FMODStudio.Build.cs(134,17): warning CS0618: 'UnrealBuildTool.ModuleRules.PublicLibraryPaths' is obsolete: 'For external libraries use the full path in PublicAdditionalLibraries, if its a system library then use PublicSystemLibraries/PublicSystemLibraryPaths'
FMODStudio.Build.cs(135,17): warning CS0618: 'UnrealBuildTool.ModuleRules.PublicLibraryPaths' is obsolete: 'For external libraries use the full path in PublicAdditionalLibraries, if its a system library then use PublicSystemLibraries/PublicSystemLibraryPaths'
FMODStudio.Build.cs(176,13): warning CS0618: 'UnrealBuildTool.ModuleRules.PublicLibraryPaths' is obsolete: 'For external libraries use the full path in PublicAdditionalLibraries, if its a system library then use PublicSystemLibraries/PublicSystemLibraryPaths'
Hi guys, I have Xcode 15.2 + MacOS Sonoma 14.2.1 + iPhone SDK 17.2 + Apple M3 chip
When I build my project with FMOD for Unreal 2.0.2.20 for iPhone 15 Pro iOS 17.2.1 i have this warning
[698/733] Compile [arm64] FMODStudioModule.cpp
/Plugins/FMODStudio/Source/FMODStudio/Private/FMODStudioModule.cpp:1573:61: warning: 'AVAudioSessionInterruptionWasSuspendedKey' is deprecated: first deprecated in iOS 14.5 - No longer supported - see AVAudioSessionInterruptionReasonKey [-Wdeprecated-declarations]
if ([[notification.userInfo valueForKey:AVAudioSessionInterruptionWasSuspendedKey] boolValue])
^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSession.h:654:27: note: 'AVAudioSessionInterruptionWasSuspendedKey' has been explicitly marked deprecated here
OS_EXPORT NSString *const AVAudioSessionInterruptionWasSuspendedKey API_DEPRECATED("No longer supported - see AVAudioSessionInterruptionReasonKey", ios(10.3, 14.5), watchos(3.2, 7.3), tvos(10.3, 14.5));
^
1 warning generated.
I think FMOD team need to fix it
Hi guys, I have Xcode 15.2 + MacOS Sonoma 14.2.1 + iPhone SDK 17.2 + Apple M3 chip
When I build my project with FMOD for Unreal 2.0.2.20 for iOS Simulator on have an error:
/Plugins/FMODStudio/Binaries/IOS/libfmodL_iphoneos.a(libfmodL_iphoneos.a-arm64-master.o)
building for iOS Simulator, but linking in object file built for iOS, file '/Plugins/FMODStudio/Binaries/IOS/libfmodL_iphoneos.a'
Found that in downloaded latest verison "fmodstudio20220ue5.3mac.zip" from https://www.fmod.com/download#fmodforunreal inside folder "Plugins/FMODStudio/Binaries/IOS" there are no files for iOS Simulator (so it's not builded for support it or they just forgot to do it)
So next i found on page https://www.fmod.com/docs/2.02/api/platforms-ios.html#ios-specific-starter-guide that they Released iOS simulator binary for Core Engine and Studio Engine
FMOD Core Engine library
FMOD Studio Engine library (used in conjunction with core library)
So next step from page https://www.fmod.com/download#fmodengine I downloaded "fmodstudioapi20220ios-installer.dmg" inside 2 folders "/api/core/lib" and "/api/studio/lib" I found these files and copy it to my folder "/Plugins/FMODStudio/Binaries/IOS/", and it didn't work :slight_smile:
So just to try luck I made a copy of this folder and deleted files that work for iOS build only
libfmod_iphoneos.a
libfmodL_iphoneos.a
libfmodstudio_iphoneos.a
libfmodstudioL_iphoneos.a
Next step renamed files
libfmod_iphonesimulator.a -> libfmod_iphoneos.a
libfmodL_iphonesimulator.a -> libfmodL_iphoneos.a
libfmodstudio_iphonesimulator.a -> libfmodstudio_iphoneos.a
libfmodstudioL_iphonesimulator.a -> libfmodstudioL_iphoneos.a
And finally I successfully builded and launched my project with FMOD for Unreal 2.0.2.20 for iOS Simulator
FMOD team need to rebuild FMOD for Unreal with adding _iphonesimulator and _appletvsimulator files and support and it will launch on iOS/TVOS Simulators with any problems.
PS same you can do with TVOS Simulator and fix it
Posted this issue for Epic and Oculus here https://answers.unrealengine.com/questions/598529/building-with-exclusive-nativization-fails.html but was advised it's FMOD issue.
Can you guys please fix it, if it's fixable ?
FMODAudioComponent.cpp.txt
FMODAudioComponent.h.txt
These two attached patches add a new Unreal delegate OnSoundStopped
that's triggered when a programmer sound finishes playing but the event is still playing.
In our setup we start an event with programmer sounds (from an audio table) for each dialogue line, and we want to get notified when the currently playing dialogue line ends. This patch allows us to bind to that new delegate and get notified about that.
Note that there are a few comments in the patches you surely want to adjust.
Thank you
Simple case: some blueprint has serverside logic and reference to FMODEvent. At certain circumstances it want to send Client RPC with name of event, so client can use FindEventByName and play it. It can be don by passing FMODUtils::LookupNameFromGuid(Event->AssetGuid);
On dedicated server all FMODEvent references contains nullptr, log contains messages like this:
LogStreaming: Error: Couldn't find file for package /Game/FMOD/Events/object/tree requested by async loading code. NameToLoad: /Game/FMOD/Events/object/tree
.
They are created earlier, since log contains Constructing asset: /Game/FMOD/Events/object/tree
but not finded by loader.
Hello, I'm the developer of "Darker Nodes", a plugin to update the theme of the Unreal Engine
https://www.unrealengine.com/marketplace/en-US/product/darker-nodes
I got a bug report from a user that also use FMOD: hugoattal/DarkerNodes#142
It appears that FMOD erase all previously updated style of the editor here:
https://github.com/fmod/ue4integration/blob/2.01-UE4.26/FMODStudio/Source/FMODStudioEditor/Private/FMODStudioStyle.cpp#L22
This is executed on the "PostEngineInit" event, which is pretty late, so that it erase a bunch of updates from my plugin...
https://github.com/fmod/ue4integration/blob/2.01-UE4.26/FMODStudio/Source/FMODStudioEditor/Private/FMODStudioEditorModule.cpp#L288
If you want to update the style of the editor, I suggest you do something like that:
EditorStyle = static_cast<FSlateStyleSet*>(&FEditorStyle::Get());
EditorStyle->Set("ClassIcon.FMODAmbientSound", new IMAGE_BRUSH("Icons/AssetIcons/AmbientSound_16x", FVector2D(16.0f, 16.0f)));
So that the style is updated without being completely erased :)
Have a nice day!
This revision won't build for Android. This is the fix:
In FMODStudio/Source/FMODStudio/Private/FMODListener.h on the line 34 replace:
FMODInteriorSettings::FMODInteriorSettings()
with
FMODInteriorSettings()
With that clang will play nice and FMOD will build for Android.
I have installed the FMOD plugin into a new empty project (UE 4.8.2). I opened it and pressed 'Play' in the editor.
It printed hundreds of times the same error message, eventually freezing the game and the editor:
LogFMOD:Error: 'StudioSystem[EFMODSystemContext::Runtime]->update()' returned 'A socket error occurred. This is a catch-all for socket-related errors not listed elsewhere.'
System: Win7 x64, 8MB Ram, 4 cores
Like the title says, audio events are working well in editor, but in packaged games, no sound being played with a migrated project coming from v2.02.02 on Unreal Engine 5.
Also, the FMODStudio.uplugin file contains:
"Version" : 20007, "VersionName" : "2.00.07",
Even though I clearly selected 2.00.06 from the website downloads (there isn't even an option for 07 at the time of writing), what's up with that?
Side note: It's a Windows build, by the way. But it doesn't even reach #if PLATFORM_WINDOWS
in void FFMODStudioEditorModule::AddHelpMenuExtension(FMenuBuilder &MenuBuilder)
, so doesn't matter.
IFMODStudioModule::Get() is not a fast function. Is it possible to cache the result in a static variable or in a member property inside UFMODAudioComponent?
Most popular open-source 2D game engine in a world https://github.com/cocos2d/cocos2d-x
Why there is no any simple 2d example from you?
Such as https://github.com/wwisesamples/cocos2dx-IntegrationDemo
Without "Binaries" directory FMOD version 1.10.00 doesn't build. With them all works perfect but it's still very big amount of data for our repository.
This seems to be a 4.14 issue; see thread here:
https://answers.unrealengine.com/questions/527415/c-plugin-module-failed-to-load.html?sort=oldest
The specific crash error is:
Assertion failed: GIsHotReload [File:D:\Build\++UE4+Release-4.14+Compile\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectBase.cpp] [Line: 579]
Trying to recreate class 'UFMODAudioComponent' outside of hot reload!
What seems to cause it is compiling my project while the editor is open. Only solution currently is to do a clean build but obviously this a bit of a hindrance to productivity.
I have also tried copying a clean version of the plugin but it still eventually happens.
As described here (https://www.fmod.org/questions/question/eta-for-fmod-for-ue-4-16/#sabai-entity-content-46100), my game crashes in packaged builds on startup (editor and launch from editor works fine).
I tried several things and it turned out, that I do this in my default game mode's constructor:
(void)IFMODStudioModule::Get();
I do this, because in the past, when I didn't do this, FMOD events from my character blueprint (which gets loaded in the game mode's constructor as well, wouldn't play as they are simply not yet available on blueprint construction then.
This worked well in the past, but now crashes (because when I uncomment the line mentioned above, everything runs without a crash, but AGAIN: The fmod events in my character blueprint won't play.
What is the best/recommended way of handling this?
Why FFMODStudioModule is using the FFMODStudioModule::Get() instead of just using "this"?
Was this line:
7: UCLASS(const, hidecategories=Oject, collapsecategories, meta=(DisplayName="Play FMOD Event"))
Supposed to be:
hidecategories=Object
Can we have the 4.8 binary versions please?
in the 4.23 plugin this line read
bIsActive = true;
and in 4.24 now reads
SetActive(true);
This has introduced an infinite recursion where SetActive calls Activate, which calls Play, which calls SetActive and ultimately blows the stack.
Hi!
Is html5 supported? If not how could I achieve it?
I get the following ue4 Chrome Launch Error:
LogPlayLevel: ERROR: Unable to instantiate module 'FMODStudio': System.Exception: Unsupported platform HTML5
Related:
http://www.fmod.org/public/js/
and
http://www.fmod.org/documentation/#content/generated/platform_js/basics.html
Thanks!
Hello
I want to try fmod plugin on linux. (I test it on windows on ue-4.19, works fine).
I work on gentoo linux ~amd64, my ue-4.20 compiled by myself from off git repo.
In first i try off binares from https://www.fmod.com/download#integrations , put FMODStudio folder to .../UnrealEngine/Engine/Plugins/ dir , but ue4 don't started with error
[2018.09.15-14.51.59:704][ 0]LogModuleManager: Warning: ModuleManager: Unable to load module 'FMODStudio' - 0 instances of that module name found.
[2018.09.15-14.51.59:715][ 0]LogLinux: Warning: MessageBox: Plugin 'FMODStudio' failed to load because module 'FMODStudio' could not be found. Please ensure the plugin is properly installed, otherwise consider disabling the plugin for this project.: Message:
Then i try to compile it by myself with ue4 source code and get this error
Makefile: 188 Error 5
In makefile 188 line is UE4Editor:
(I don't know where is full build log, if it was created.)
Without FMOD plugin ue4 compiled fine
May be i do something wrong?
Please help me install FMOD plugin.
Thank you.
Hello, please, can you explain to me. Why should I provide the bool*
if I want to just get info if the FFMODEventInstance
is paused or not?
FMOD_RESULT F_API getPaused(bool *paused) const;
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.