godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.57k stars 21.09k forks source link

SharedArrayBuffer does not work with Firefox on Android anymore on itch.io #86988

Open Gwynlix opened 9 months ago

Gwynlix commented 9 months ago

Tested versions

System information

Windows 10 - Godot 4.2.1

Issue description

A few days ago my Godot game stopped working on Itch.IO when opened from a Firefox Android app. It shows the following screen:

grafik

On any other device I tested (Firefox, Chrome, Edge on PC and Chrome on Android) it still works like a charm.

Steps to reproduce

You can check it on https://gwynlix.itch.io/auto-dwarfs - all I did was doing a web HTML5 export, upload it on itch with the SharedArrayBuffer option enabled and start the game.

Minimal reproduction project (MRP)

N/A - it's export related and the project itself is actually irrelevant.

akien-mga commented 9 months ago

I can confirm the issue on Firefox Beta on Android.

@leafo Did something change recently in itchio's SharedArrayBuffer support, or should we look at a potential Firefox regression / them maybe disabling the origin trial for credentialless?

adamscott commented 9 months ago

Screenshot_20240109-081712.png

Works on my Pixel 7 Pro Firefox Nightly (Firefox 123). So if it's a regression, it seems fixed on the main Firefox branch!

akien-mga commented 9 months ago

Corresponding itch.io bug report: https://itch.io/t/3405599/godot-4-html5-on-firefox-android-currently-broken-4-jan-2024

Works on my Pixel 7 Pro Firefox Nightly (Firefox 123). So if it's a regression, it seems fixed on the main Firefox branch!

I can confirm it works on Nightly, but that doesn't necessarily mean it's fixed. Nightly uses a different default configuration, which doesn't automatically make its way to Beta/Stable branches.

Here it seems indeed that on Android, Firefox Nightly enables browser.tabs.remote.coep.credentialless by default, while it's off on Firefox Beta (and likely Release). Setting it to true on Beta makes the test project work again.

There's also a dom.origin-trials.coep-credentialless.state which is 0 for both Beta and Nightly. Turning it to 1 on Beta seems to also make the demo work.

I doubt Beta/Release had coep-credentialless enabled by default for all websites a few days ago (the first setting), but maybe the value for the origin-trials state change, whatever it implies.

akien-mga commented 9 months ago

Tested a few older Firefox for Android releases from https://github.com/mozilla-mobile/firefox-android/releases, they all reproduce the bug:

So if it's a recent regression since "a few days ago", it's likely not a software regression, but a server-side config change.

Either on itch.io, or on Mozilla's origin trial config, which might have removed itch.io for the Android version of it?

Let's wait for input from @leafo and then try to poke Mozilla if the change seems to come from them.

MrMinimal commented 8 months ago

Still present with Godot 4.2.1-stable

akien-mga commented 6 months ago

Based on this thread, the issue seems indeed that the Firefox origin trial for itch.io expired: https://twitter.com/RancidBacon/status/1777742231979647232

@leafo is looking into it, but made a change in the meantime so that games start in a popup on Firefox, which allows the proper headers to be set for SharedArrayBuffer: https://twitter.com/moonscript/status/1777805596097732816

Rult commented 1 week ago

Godot 4.3 seems to resolve this issue by making games single threaded by default, so you can turn off "SharedArrayBuffer support" on your itch.io game page settings and it will work without opening a new window for a game. Example: https://rult.itch.io/save-the-temple