allow to choosing renet_netcode vs steam
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
use crate::{
|
||||
GameState, global_observer,
|
||||
GameState,
|
||||
config::NetConfig,
|
||||
global_observer,
|
||||
heads_database::HeadsDatabase,
|
||||
player::ClientPlayerId,
|
||||
protocol::{ClientEnteredPlaying, PlayerIdCounter, SetGameTick, messages::AssignClientPlayer},
|
||||
@@ -55,7 +57,8 @@ fn open_renet_server(
|
||||
mut commands: Commands,
|
||||
channels: Res<RepliconChannels>,
|
||||
mut next: ResMut<NextState<GameState>>,
|
||||
steam_client: Res<bevy_steamworks::Client>,
|
||||
steam_client: Option<Res<bevy_steamworks::Client>>,
|
||||
config: Res<NetConfig>,
|
||||
) -> Result<(), BevyError> {
|
||||
info!("opening server");
|
||||
|
||||
@@ -68,18 +71,46 @@ fn open_renet_server(
|
||||
..Default::default()
|
||||
});
|
||||
|
||||
let steam_config = bevy_replicon_renet::steam::SteamServerConfig {
|
||||
access_permission: bevy_replicon_renet::steam::AccessPermission::FriendsOnly,
|
||||
max_clients: 16,
|
||||
};
|
||||
if let NetConfig::SteamHost = *config {
|
||||
let Some(steam_client) = steam_client else {
|
||||
return Err("Steam client not found".into());
|
||||
};
|
||||
|
||||
let client = (**steam_client).clone();
|
||||
let transport = SteamServerTransport::new(client, steam_config)?;
|
||||
let steam_config = bevy_replicon_renet::steam::SteamServerConfig {
|
||||
access_permission: bevy_replicon_renet::steam::AccessPermission::FriendsOnly,
|
||||
max_clients: 16,
|
||||
};
|
||||
|
||||
commands.queue(|w: &mut World| {
|
||||
w.insert_resource(server);
|
||||
w.insert_non_send_resource(transport);
|
||||
});
|
||||
let client = (**steam_client).clone();
|
||||
let transport = SteamServerTransport::new(client, steam_config)?;
|
||||
|
||||
commands.queue(|w: &mut World| {
|
||||
w.insert_resource(server);
|
||||
w.insert_non_send_resource(transport);
|
||||
});
|
||||
|
||||
info!("hosting server: steam");
|
||||
} else if let NetConfig::NetcodeHost { port } = *config {
|
||||
use std::time::SystemTime;
|
||||
|
||||
let current_time = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH)?;
|
||||
let socket = std::net::UdpSocket::bind((std::net::Ipv4Addr::UNSPECIFIED, port))?;
|
||||
|
||||
let server_config = bevy_replicon_renet::netcode::ServerConfig {
|
||||
current_time,
|
||||
max_clients: 1,
|
||||
protocol_id: 0,
|
||||
authentication: bevy_replicon_renet::netcode::ServerAuthentication::Unsecure,
|
||||
public_addresses: Default::default(),
|
||||
};
|
||||
let transport =
|
||||
bevy_replicon_renet::netcode::NetcodeServerTransport::new(server_config, socket)?;
|
||||
|
||||
commands.insert_resource(server);
|
||||
commands.insert_resource(transport);
|
||||
|
||||
info!("hosting server: netcode on port {port}");
|
||||
}
|
||||
|
||||
next.set(GameState::Playing);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user