Godot 4.3 will FINALLY fix web builds, no SharedArrayBuffers required!

Pictured: My Godot 4 game running on CrazyGames. This was previously impossible because most websites don’t support SharedArrayBuffers/CrossOriginIsolation, which was required to run Godot 4 games on the web.

Today is a glorious day for us webgame/webapp developers. Godot 4 is finally viable to use thanks to this PR which should be merged by 4.3

This allows you to force the exported game to run on a single thread, meaning you don’t need any special headers and your game should be able to run anywhere on the internet. This has the added benefit of making the games work properly on MacOS/iOS, which for some reason had serious issues with SharedArrayBuffers causing the browser to freeze.

Brings a tear to my eye, really. I might not use Unity for my next project. Thanks, adam scott.

10 Likes

Just to be explicitly clear for other people reading this: Milestones assigned to PRs are not a promise. So while it is should be merged for 4.3, keep in mind that unexpected bugs can come up that may delay features (this is true in general, not only for this specific PR).

To help getting PRs into the engine, best we can do as a community is to help the devs by testing and reporting issues (just as @popcar2 did, thank you for that!). This ensures bugs are found early and can be fixed in time.

5 Likes

Is that going to fix #70691? From the comments on that issue I’d gotten the impression that nothing short of a new rendering backend was going to fix web builds on Apple devices.

1 Like

As the issue description says:

Bugsquad note2: Also, please avoid asking when this will be fixed. The issue is confirmed to be with the version of ANGLE used by Chromium, so we are all waiting for Google to ship the fix.

1 Like

Exactly, the bugsquad has indicated that MacOS/iOS web builds are going to stay broken unless Google changes something, but the OP has asserted that the referenced PR

So I’m wondering which of those statements is accurate.

1 Like

As I understand it, the issues are not really related. The one you linked is specifically about non Safari browsers on MacOS. That’s not the general case.

The PR discussed here is about the more general case with the default browser on MacOS, which is Safari. So both are true at the same time:

  • PR #85939 makes Godot run nicely in Safari without the headers for shared array buffers on MacOS
  • Issue #70691 has to wait on Google, fixing it will make Godot load faster in Chrome/Chromium on MacOS. However the linked PR does also improve this issue, but it doesn’t fully resolve it.
2 Likes

Ok, so in other words the upcoming PR won’t actually “fix web builds” across the board, it will just address one of multiple problems. Thanks for the clarification.

2 Likes

We need this.

1 Like

This is partially true, unfortunately. Web builds are still barely usable in Godot4 due to aforementioned Chromium issues. So sticking with Godot3 for undefined time and hoping for [WebGPU ideally] the best!

1 Like

I was quoting the creator of the PR. In the MacOS thread he said:

It seems to be way better when exporting using the single-threaded export template.

Whether this is true or not should be obvious soon, because the PR listed in my post just got merged! :gdparty:

There is still an issue with audio cackling on low FPS, but it’s a big step forward to making Godot viable to use on the web: Cracking audio with Godot 4 no-threads Web builds · Issue #87329 · godotengine/godot · GitHub

2 Likes