utopia-rise / fmod-gdextension

FMOD Studio GDExtension bindings for the Godot game engine
MIT License
372 stars 42 forks source link

Odd "nonexistent function" error only in macOS export #226

Open StasysMusial opened 1 month ago

StasysMusial commented 1 month ago

Hi there! FMOD engine loads up correctly and starts playing an event using the FmodEventEmitter2D node. I can change volume using the volume property or using set_volume(). However using set_parameter() or get_parameter() results in the following error message:

SCRIPT ERROR: Invalid call. Nonexistent function 'set_parameter' in base 'FmodEventEmitter2D'.

This results in not being able to change parameters.

Here is the full console log.

This is the class that is calling the set_parameter() function.

Everything works fine in the editor both on macOS and windows. Windows export also does not experience this issue and functions as expected.

Not sure if this matters but I went through a bit of troubleshooting to get this working on macOS in the first place. Mainly allowing all the library files in gatekeeper and using Xcode code signing instead of ad-hoc. But judging by the other issues/discussions here this seems to be the way to go.

I haven't tried using something like AnimationPlayer to change the parameter values that are exposed to the editor. While that might change something, that isn't suitable for what I am planning to do with FMOD.

Godot 4.2.2

System: M2 MacBook Air OS: macOS Ventura 13.6.1

Export settings:

Bildschirmfoto 2024-05-31 um 19 33 45

This is my first ever bug/report issue I've created so please let me know if you need more information to be able to help :)

piiertho commented 1 month ago

Hello ! Thanks for reporting.

Can you tell if you have same behaviour in both debug and release exports ?

StasysMusial commented 1 month ago

Good call! It seems to only be an issue when "Export with debug" is enabled. I obviously can't check the console in a regular build but I can hear the parameters changing so it seems to function as expected. At least for now I am gonna use the dictionary-like way to access parameters I saw in #217 which uses square brackets on the FmodEventEmitter to access properties because that also works in debug builds.

piiertho commented 3 weeks ago

I can't find why this happens only on debug builds. Can you provide a sample project so that I can dive in and debug this ?