use bevy::prelude::*; use tracing_subscriber::EnvFilter; use substrate::config::AppConfig; use substrate::observability::ObservabilityPlugin; use substrate::transport; use substrate::world::WorldPlugin; fn main() { tracing_subscriber::fmt() .with_env_filter( EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info")), ) .init(); // rustls 0.23 requires an explicit default crypto provider. Quinn's // ServerConfig::with_single_cert otherwise panics at first use. rustls::crypto::aws_lc_rs::default_provider() .install_default() .expect("install rustls default crypto provider"); let config = AppConfig::load("config.toml").expect("Failed to load config"); tracing::info!(?config, "substrate starting"); // Plugin order matters: EcsQuicTransportPlugin inserts the TokioHandle // resource ObservabilityPlugin reads in its `build()`. App::new() .insert_resource(config) .add_plugins(MinimalPlugins) .add_plugins(transport::ecs::EcsQuicTransportPlugin) .add_plugins(WorldPlugin) .add_plugins(ObservabilityPlugin) .run(); }