utopia-rise / fmod-gdextension

FMOD Studio GDExtension bindings for the Godot game engine
MIT License
438 stars 48 forks source link

FMOD web support (HTML5) #50

Open Waissi opened 3 years ago

Waissi commented 3 years ago

Hi, The Godot team announced that they added GDNative support for html builds: https://godotengine.org/article/dev-snapshot-godot-3-2-4-beta-4 https://github.com/godotengine/godot/pull/44076 Is there a plan to update the SConstruct file so we can export html using your Fmod plugin? Cheers

CedNaru commented 3 years ago

Hi, I have no knowledge about wasm so I might say something wrong.

For a GDnative lib to run in a browser, I guess you need to compile them with the WASM target which might be possible by updating the scons. The main issue is that our FMOD bindings use another dynamic library, FMOD itself. So at first glance, I think it won't be possible unless FMOD provides us a lib compiled for that platform. Also from what I see in this Godot PR, you can only choose one option between enabling threads or enabling Gdnative. But FMOD uses several threads so we would need both to work on browser.

I'll check that more in detail when the Godot 3.2.4 is officially out, hoping there is some doc about it.

CedNaru commented 3 years ago

Ho so it seems that's FMOD got a HTML5 target already HTML5 Fmod

I guess I never paid attention to that. So it might be possible. Well, the hell of dynamic linking with HTML5 is waiting for me it seems.

Waissi commented 3 years ago

Well, I am sure I have even less knowledge about all this :D However, here is one thing I know: Fmod has an htlm5 target indeed, and there are Fmod plugins for game engines such as Unity and Defold that run pretty well on html5 (and afaik Unity runs in a single thread). That being said, thanks for the time involved and good luck with the linking hell ;)

CedNaru commented 3 years ago

I'll add that to the list of tasks for the 2.0 version. Like said in the other issues, we are already busy with another project right now. So it's going to take time before we add that export.

piiertho commented 3 years ago

I think this is less a priority than fmod nodes. I'll look at godot-cpp modifications on HTML5 when we get less work on Godot kotlin

2shady4u commented 3 years ago

@YoannClaude @CedNaru @piiertho I'm currently working on trying to get a HTML5 build up and running in this branch: https://github.com/2shady4u/fmod-gdnative/tree/web-export

However, I'm running into some problems to link the FMOD libraries: https://github.com/2shady4u/fmod-gdnative/runs/2305156716?check_suite_focus=true

Current errors:

wasm-ld: error: /home/runner/work/fmod-gdnative/libs/fmod/javascript/core/lib/bitcode/fmod.bc: machine type must be wasm32 or wasm64
wasm-ld: error: /home/runner/work/fmod-gdnative/libs/fmod/javascript/studio/lib/bitcode/fmodstudio.bc: machine type must be wasm32 or wasm64

Any help is appreciated + I might open a preliminary PR for this Also the utopia-rise/godot-cpp will have to be updated to support this!

2shady4u commented 3 years ago

Getting these kind of errors now: image

(recompiling with -fPIC is impossible since I can't recompile the FMOD libraries myself)

bitbrain commented 2 years ago

Any news on this considering that we recently upgraded to the latest FMOD version?

Christovftw commented 2 years ago

Would also really like to use this integration with godot but I need to target an HTML5/wasm build, any news on if this will be available?

CedNaru commented 2 years ago

Hello, We have no date for that feature as it's not a priority (among our different projects, not just the FMOD plugin). Most likely we will wait for Godot 4 as the whole GDNative system will be changed and probably the way we export too. We have no experience at all when it comes to HTML5 so we better not take time to investigate a method that will likely change in the next 6 months as Godot 4 become stable. Of course, if someone is willing to do it themselves and PR it for the current Godot 3.x, we will accept it.

2shady4u commented 2 years ago

Would also really like to use this integration with godot but I need to target an HTML5/wasm build, any news on if this will be available?

I've updated my testing branch https://github.com/2shady4u/fmod-gdnative/tree/web-export to the latest master of this repository and I've tried to compile the plugin for web (again)

Unfortunately the same issues seems to persist 🤷 As before, I have no idea how to fix them

If you are feeling adventurous you can check out my changes in that branch

bitbrain commented 2 years ago

Might be related: https://github.com/WebAssembly/wasi-sdk/issues/209 it looks like the -shared flag is not supported (yet)

Here is the issue discussion on the llvm repo itself: https://github.com/llvm/llvm-project/issues/42738

Any way we can maybe circumvent that?

bitbrain commented 2 years ago

Once https://github.com/utopia-rise/fmod-gdnative/pull/123 is finished, we might be able to finally address this for Godot 4 - GDExtension does not have HTML5 support yet since Godot 4.0 will not support browsers properly but it definitely will in future.

RafaelVidaurre commented 2 years ago

@bitbrain do you think this will work for Godot 3.5 HTML5 eventually? Or is it the plan to skip 3.5?

bitbrain commented 2 years ago

@RafaelVidaurre my hope is that after we get it working with Godot 4.x that we can apply some bits to the Godot 3 branch to get it working. The main hurdle currently is that Godot 4 does not support HTML5 yet (as it requires GLES3 for this) and currently only Vulkan Desktop and Vulkan Mobile is supported in Godot 4.alpha13

Perhaps somebody might be able to resurrect the Godot 3 compatible branch by @2shady4u and have another try with Godot 3.5

piiertho commented 2 years ago

On my side I’m experiencing troubles with the cmake file, so nothing is recognise in Clion

safernan121 commented 1 year ago

I was wondering what's the current state of this issue for Godot 4.x Any breakthroughs to make the html5 export work with fmod?

Thanks in advance!

bitbrain commented 1 year ago

Looks like there is some progress on https://github.com/godotengine/godot-cpp/pull/1247 and we can soon re-attempt this.

bitbrain commented 10 months ago

I will do an attempt at this in the following week after https://github.com/utopia-rise/fmod-gdextension/pull/181 gets merged.