Two independent sources of noise in the web console, both from the default plugin set: 1. 'Failed to deserialize meta for asset shaders/*.wgsl' DefaultPlugins adds AssetPlugin with meta_check = Always, so bevy fetches <path>.meta for every shader. The shaders ship raw (no .meta files); on the trunk dev server those requests don't return a clean 404 that bevy maps to NotFound, so bevy receives bytes and tries to RON-deserialize them as AssetMetaMinimal, logging a SpannedError per shader. Set meta_check = Never: it skips the meta lookup and uses the loader's default meta — correct for processor-free raw assets. 2. 'AudioContext was not allowed to start' The default AudioPlugin opens a WebAudio sink at startup; browsers block that until a user gesture and log it as a JS error. This app has no audio, so disable AudioPlugin entirely — removes the noise and shrinks the wasm binary.
56 lines
2.0 KiB
Rust
56 lines
2.0 KiB
Rust
use bevy::prelude::*;
|
|
use bevy::window::WindowPlugin;
|
|
|
|
#[cfg(target_arch = "wasm32")]
|
|
mod web;
|
|
mod render;
|
|
mod camera;
|
|
mod params;
|
|
mod ui;
|
|
mod scene;
|
|
mod physics;
|
|
|
|
fn main() {
|
|
// On web, abort startup if WebGPU isn't available and show a message.
|
|
#[cfg(target_arch = "wasm32")]
|
|
{
|
|
if !web::webgpu_available() {
|
|
web::show_fallback_message();
|
|
return;
|
|
}
|
|
}
|
|
|
|
App::new()
|
|
.add_plugins(
|
|
DefaultPlugins
|
|
.set(WindowPlugin {
|
|
primary_window: Some(Window {
|
|
title: "singularity-rs".into(),
|
|
// On web, make the canvas track the browser window size.
|
|
fit_canvas_to_parent: true,
|
|
..default()
|
|
}),
|
|
..default()
|
|
})
|
|
// The shaders ship as raw `.wgsl` files with no companion
|
|
// `.meta` files. The default `AssetMetaCheck::Always` makes bevy
|
|
// fetch `<path>.meta` for every asset; on the web dev server
|
|
// those requests don't return a clean 404, so bevy receives
|
|
// bytes it tries to RON-deserialize as `AssetMetaMinimal` and
|
|
// logs a deserialization error per shader. `Never` skips the
|
|
// meta lookup entirely and uses the loader's default meta —
|
|
// exactly right for processor-free assets.
|
|
.set(AssetPlugin {
|
|
meta_check: bevy::asset::AssetMetaCheck::Never,
|
|
..default()
|
|
})
|
|
// The app has no audio. The default AudioPlugin opens a WebAudio
|
|
// sink at startup, which browsers block until a user gesture and
|
|
// log as a noisy "AudioContext was not allowed to start" error.
|
|
// Dropping it removes that noise and shrinks the wasm binary.
|
|
.disable::<bevy::audio::AudioPlugin>(),
|
|
)
|
|
.add_plugins(render::BlackHolePlugin)
|
|
.run();
|
|
}
|