fishfolk / jumpy

Tactical 2D shooter in fishy pixels style. Made with Rust-lang 🦀 and Bevy 🪶
https://fishfolk.org/games/jumpy/
Other
1.67k stars 123 forks source link

web demo not running in LibreWolf #1028

Open JeromeSchmied opened 1 month ago

JeromeSchmied commented 1 month ago

Description

when I open web demo, it first shows some loading animation, then nothing.

To Reproduce

No response

Expected Behavior

No response

Additional Context

I use LibreWolf, maybe it disallows something that'd be needed. WebGL I've got enabled, that shouldn't be it.

Log Messages

INFO /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_winit-0.11.3/src/system.rs:51 Creating new window "App" (0v0) [jumpy.js:1459:21](https://fishfolk.github.io/jumpy/player/latest/jumpy.js)
ERROR /home/runner/.cargo/git/checkouts/bones-b608aa0d074178a4/bf745aa/framework_crates/bones_framework/src/logging.rs:475 A panic occurred panic.payload = "assertion failed: mql.mql().matches()";
panic.location = "/home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/winit-0.28.7/src/platform_impl/web/web_sys/scaling.rs:68:13";
panic.backtrace = disabled backtrace;
panic.note = "run with RUST_BACKTRACE=1 environment variable to display a backtrace"; [jumpy.js:1459:21](https://fishfolk.github.io/jumpy/player/latest/jumpy.js)
INFO /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_render-0.11.3/src/renderer/mod.rs:133 AdapterInfo { name: "Mozilla", vendor: 0, device: 0, device_type: Other, driver: "", driver_info: "", backend: Gl } [jumpy.js:1459:21](https://fishfolk.github.io/jumpy/player/latest/jumpy.js)
Uncaught (in promise) RuntimeError: unreachable executed
    __wbg_finalize_init https://fishfolk.github.io/jumpy/player/latest/jumpy.js:2007
    __wbg_init https://fishfolk.github.io/jumpy/player/latest/jumpy.js:2043
[jumpy_bg.wasm:17533938:1](https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm)
ERROR /home/runner/.cargo/git/checkouts/bones-b608aa0d074178a4/bf745aa/framework_crates/bones_framework/src/logging.rs:475 A panic occurred panic.payload = "wgpu error: Validation Error\n\nCaused by:\n    In Device::create_texture\n    Dimension X value 3072 exceeds the limit of 2048\n\n";
panic.location = "/home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/wgpu-0.16.3/src/backend/direct.rs:3019:5";
panic.backtrace = disabled backtrace;
panic.note = "run with RUST_BACKTRACE=1 environment variable to display a backtrace"; [jumpy.js:1459:21](https://fishfolk.github.io/jumpy/player/latest/jumpy.js)
Uncaught RuntimeError: unreachable executed
[jumpy_bg.wasm:17533938:1](https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm)
    rust_panic https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:17533938
    h33fe77d38d305ca3 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:16419389
    h98de848d678bad07 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:16798010
    h2bcfc60c3cf0a312 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:17530077
    rust_begin_unwind https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:17188047
    hde8b7aa66e2831e1 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:17198191
    hf09879c72ef0292f https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:15940710
    h8506b683bb8d48ee https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:13477772
    jumpy-604b8f45df3d60f4.wasm.<T as wgpu::context::DynContext>::device_create_texture::h662cb1c7054845bd https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:4819533
    jumpy-604b8f45df3d60f4.wasm.<wgpu::Device as wgpu::util::device::DeviceExt>::create_texture_with_data::h28fa6a337b5a5d0d https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:11678623
    jumpy-604b8f45df3d60f4.wasm.<bevy_render::texture::image::Image as bevy_render::render_asset::RenderAsset>::prepare_asset::h4ad8c62746f8bc91 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:11366421
    jumpy-604b8f45df3d60f4.wasm.<bevy_ecs::system::function_system::FunctionSystem<Marker,F> as bevy_ecs::system::system::System>::run_unsafe::hf05809e25fdeb775 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:5501199
    h38c003bb2a282d60 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:16866315
    jumpy-604b8f45df3d60f4.wasm.<bevy_ecs::schedule::executor::single_threaded::SingleThreadedExecutor as bevy_ecs::schedule::executor::SystemExecutor>::run::h2d871195e1636867 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:9411466
    h5ca121b648d37755 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:3848496
    hb8fc976ee2fe9d3e https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:11983177
    h19bc078dff74685d https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:13970135
    hd9f91dc0740e4c4e https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:451458
    h2997c9b75465da44 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:17228609
    hc5f8475b60dcc1f7 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:12369155
    hfcd042b50d3fd7af https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:12290748
    hff922a44fa212f91 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:17234578
    jumpy-604b8f45df3d60f4.wasm.<dyn core::ops::function::FnMut<()>+Output = R as wasm_bindgen::closure::WasmClosure>::describe::invoke::h514bc0170013630c https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:17331402
    __wbg_adapter_51 https://fishfolk.github.io/jumpy/player/latest/jumpy.js:229
    real https://fishfolk.github.io/jumpy/player/latest/jumpy.js:210
    (Async: FrameRequestCallback)
    __wbg_requestAnimationFrame_549258cfa66011f0 https://fishfolk.github.io/jumpy/player/latest/jumpy.js:447
    handleError https://fishfolk.github.io/jumpy/player/latest/jumpy.js:234
    __wbg_requestAnimationFrame_549258cfa66011f0 https://fishfolk.github.io/jumpy/player/latest/jumpy.js:446
    hd1142d34fb5d6a5b https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:10379231
    hfcd042b50d3fd7af https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:12291178
    hff922a44fa212f91 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:17234578
    jumpy-604b8f45df3d60f4.wasm.<dyn core::ops::function::FnMut<()>+Output = R as wasm_bindgen::closure::WasmClosure>::describe::invoke::h514bc0170013630c https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:17331402
    __wbg_adapter_51 https://fishfolk.github.io/jumpy/player/latest/jumpy.js:229
    real https://fishfolk.github.io/jumpy/player/latest/jumpy.js:210
    (Async: FrameRequestCallback)
    __wbg_requestAnimationFrame_549258cfa66011f0 https://fishfolk.github.io/jumpy/player/latest/jumpy.js:447
    handleError https://fishfolk.github.io/jumpy/player/latest/jumpy.js:234
    __wbg_requestAnimationFrame_549258cfa66011f0 https://fishfolk.github.io/jumpy/player/latest/jumpy.js:446
    hd1142d34fb5d6a5b https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:10379231
    hfcd042b50d3fd7af https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:12291178
    hff922a44fa212f91 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:17234578
    jumpy-604b8f45df3d60f4.wasm.<dyn core::ops::function::FnMut<()>+Output = R as wasm_bindgen::closure::WasmClosure>::describe::invoke::h514bc0170013630c https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:17331402
    __wbg_adapter_51 https://fishfolk.github.io/jumpy/player/latest/jumpy.js:229
    real https://fishfolk.github.io/jumpy/player/latest/jumpy.js:210
    (Async: FrameRequestCallback)
    __wbg_requestAnimationFrame_549258cfa66011f0 https://fishfolk.github.io/jumpy/player/latest/jumpy.js:447
    handleError https://fishfolk.github.io/jumpy/player/latest/jumpy.js:234
    __wbg_requestAnimationFrame_549258cfa66011f0 https://fishfolk.github.io/jumpy/player/latest/jumpy.js:446
    hd1142d34fb5d6a5b https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:10379231
    hfcd042b50d3fd7af https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:12291178
    hff922a44fa212f91 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:17234578
    jumpy-604b8f45df3d60f4.wasm.<dyn core::ops::function::FnMut<()>+Output = R as wasm_bindgen::closure::WasmClosure>::describe::invoke::h514bc0170013630c https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:17331402
    __wbg_adapter_51 https://fishfolk.github.io/jumpy/player/latest/jumpy.js:229
    real https://fishfolk.github.io/jumpy/player/latest/jumpy.js:210
    (Async: FrameRequestCallback)
    __wbg_requestAnimationFrame_549258cfa66011f0 https://fishfolk.github.io/jumpy/player/latest/jumpy.js:447
    handleError https://fishfolk.github.io/jumpy/player/latest/jumpy.js:234
    __wbg_requestAnimationFrame_549258cfa66011f0 https://fishfolk.github.io/jumpy/player/latest/jumpy.js:446
    hd1142d34fb5d6a5b https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:10379231
    hfcd042b50d3fd7af https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:12291178
    hff922a44fa212f91 https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:17234578
    jumpy-604b8f45df3d60f4.wasm.<dyn core::ops::function::FnMut<()>+Output = R as wasm_bindgen::closure::WasmClosure>::describe::invoke::h514bc0170013630c https://fishfolk.github.io/jumpy/player/latest/jumpy_bg.wasm:17331402
    __wbg_adapter_51 https://fishfolk.github.io/jumpy/player/latest/jumpy.js:229
    real https://fishfolk.github.io/jumpy/player/latest/jumpy.js:210
    (Async: FrameRequestCallback)
    __wbg_requestAnimationFrame_549258cfa66011f0 https://fishfolk.github.io/jumpy/player/latest/jumpy.js:447
    handleError https://fishfolk.github.io/jumpy/player/latest/jumpy.js:234
    __wbg_requestAnimationFrame_549258cfa66011f0 https://fishfolk.github.io/jumpy/player/latest/jumpy.js:446
MaxCWhitehead commented 1 month ago

Dimension X value 3072 exceeds the limit of 2048

This looks like to be the interesting bit. When using webGL, various limits are set lower, like this max texture size.

I am guessing we are rendering to whatever the window size is, and exceeding this limit. Probably need to cap max canvas size when using wasm/wegGL.

I'm guessing you may either have a large monitor resolution or pixel density scaling may be impacting it.

If you run swaymsg -t get_outputs (I've never used sway but think this should give monitor size) what does this report? Another thing to test might be shrinking down your window, and opening web demo in another tab and seeing if it still reproduces when smaller.

JeromeSchmied commented 1 month ago
swaymsg -t get_outputs
Output DP-2 'LG Electronics LG HDR 4K 0x0007DBC6' (focused)
  Current mode: 3840x2160 @ 30.000 Hz
  Power: on
  Position: 0,0
  Scale factor: 2.000000
  Scale filter: nearest
  Subpixel hinting: unknown
  Transform: normal
  Workspace: 1
  Max render time: off
  Adaptive sync: disabled
  Available modes:
    3840x2160 @ 59.997 Hz
    3840x2160 @ 30.000 Hz
    2560x1440 @ 59.951 Hz
    1920x1080 @ 60.000 Hz
    1920x1080 @ 60.000 Hz (16:9)
    1920x1080 @ 59.940 Hz (16:9)
    1600x900 @ 60.000 Hz
    1280x1024 @ 60.020 Hz
    1280x800 @ 59.810 Hz
    1152x864 @ 59.967 Hz
    1280x720 @ 60.000 Hz
    1280x720 @ 60.000 Hz (16:9)
    1280x720 @ 59.940 Hz (16:9)
    1024x768 @ 60.004 Hz
    800x600 @ 60.317 Hz
    720x480 @ 60.000 Hz (16:9)
    720x480 @ 59.940 Hz (16:9)
    640x480 @ 60.000 Hz (4:3)
    640x480 @ 59.940 Hz
    640x480 @ 59.940 Hz (4:3)

Output eDP-1 'BOE 0x0928 Unknown' (disabled)
  Available modes:
    1920x1080 @ 59.998 Hz
    1920x1080 @ 47.998 Hz

scale factor might be the problem, but not sure

smaller tab does the same thing, same error too even without external display

[!NOTE] with vanilla firefox, it works as expected so I'm pretty sure, LibreWolf disallows some information collection, apparently even window size, but I didn't find anything like that in their docs though

MaxCWhitehead commented 1 month ago

Thanks for the information! Hopefully we can resolve by limiting resolution in wasm.

zicklag commented 1 month ago

Ah, yeah, it could be an attempt to block fingerprinting. Access to graphics information is a really good way to try and identify unique users.