use gpn_tron::{ bot::spawn_bots, config::Config, database::open_db, game::{server::game_server, Game}, spectate::server::spectate_server, State, }; use std::sync::Arc; use tokio::{spawn, sync::broadcast}; #[tokio::main] async fn main() -> anyhow::Result<()> { env_logger::init_from_env("LOG"); let config = Config::load()?; let state = Arc::new(State { db: open_db(config.database)?, tick: broadcast::channel(512).0, game: Game::new(vec![]).into(), players: Default::default(), chat: broadcast::channel(512).0, }); spawn(spectate_server(config.spectate, state.clone())); spawn_bots(config.bot, state.clone()).await; game_server(config.game, state.clone()).await?; Ok(()) }