From ab4be4369fe9802b3276c775d69055f31dec03bb Mon Sep 17 00:00:00 2001 From: Hennadii Chernyshchyk Date: Wed, 19 Jul 2023 21:02:55 +0300 Subject: [PATCH 1/2] Update to bevy 0.11 --- CHANGELOG.md | 12 +- Cargo.toml | 9 +- assets/FiraSans-Bold.ttf | Bin 438028 -> 0 bytes deny.toml | 5 +- examples/tic_tac_toe.rs | 194 ++++++++++++++---------------- src/client.rs | 100 ++++++--------- src/lib.rs | 65 +++++----- src/network_event.rs | 20 ++- src/network_event/client_event.rs | 72 ++++++----- src/network_event/server_event.rs | 77 ++++++------ src/network_event/test_events.rs | 22 ++-- src/parent_sync.rs | 45 +++---- src/server.rs | 107 ++++++---------- src/server/despawn_tracker.rs | 28 +++-- src/server/removal_tracker.rs | 38 +++--- src/tick.rs | 51 -------- src/world_diff.rs | 33 +---- 17 files changed, 383 insertions(+), 495 deletions(-) delete mode 100644 assets/FiraSans-Bold.ttf delete mode 100644 src/tick.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 650c9219..14553433 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Update to `bevy` 0.11. +- Mappable network events now need to implement `MapEventEntities` instead of `MapEntities`. + +### Removed + +- `ClientState` and `ServerState`, use conditions from `bevy_renet` and `resource_added()` / `resource_exists()` / `resource_removed()`. +- `ServerSet::Authority`, use `has_authority()` instead. + ## [0.6.1] - 2023-07-09 ### Changed @@ -43,7 +53,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Swap `registry` and `event` arguments in `BuildEventSerializer` for consistency with `ReflectSerializer`. -- Migrate to bevy_renet `0.0.12`. +- Update to `bevy_renet` 0.0.12. ## [0.3.0] - 2023-04-15 diff --git a/Cargo.toml b/Cargo.toml index 0e306200..ae6fa4cd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,10 +19,8 @@ license = "MIT OR Apache-2.0" include = ["/src", "/LICENSE*"] [dependencies] -bevy_renet = "0.0.8" -bevy = { version = "0.10.1", default-features = false, features = [ - "bevy_scene", -] } +bevy_renet = { git = "https://github.com/lucaspoffo/renet" } +bevy = { version = "0.11", default-features = false, features = ["bevy_scene"] } bincode = "1.3" serde = "1.0" strum = { version = "0.25", features = ["derive"] } @@ -34,7 +32,7 @@ derive_more = { version = "0.99", default-features = false, features = [ serde_test = "1.0" anyhow = "1.0" clap = { version = "4.1", features = ["derive"] } -bevy = { version = "0.10", default-features = false, features = [ +bevy = { version = "0.11", default-features = false, features = [ "bevy_asset", "bevy_core_pipeline", "bevy_render", @@ -42,4 +40,5 @@ bevy = { version = "0.10", default-features = false, features = [ "bevy_text", "bevy_ui", "x11", + "default_font", ] } diff --git a/assets/FiraSans-Bold.ttf b/assets/FiraSans-Bold.ttf deleted file mode 100644 index 95e16602406c4cba92fb24e6aea2560bf10a0f5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 438028 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%0DX34M6$B#q*KVGdtpMO&$ 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쩁>KCRMjZc^qGf4CMlar~J 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П;IU)!}uL{K*-hJ{?a*DUv+j_NnLYu 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 - .init_resource::() .init_resource::() .init_resource::() .replicate::() @@ -51,35 +50,41 @@ impl Plugin for TicTacToePlugin { .replicate::() .add_client_event::(SendPolicy::Ordered) .insert_resource(ClearColor(BACKGROUND_COLOR)) - .add_startup_systems(( - Self::ui_setup_system, - Self::cli_system.pipe(system_adapter::unwrap), - )) - .add_systems(( - Self::connecting_text_system.in_schedule(OnEnter(ClientState::Connecting)), - Self::server_waiting_text_system.in_schedule(OnEnter(ServerState::Hosting)), - Self::client_disconnected_text_system.in_schedule(OnEnter(GameState::Disconnected)), - Self::winner_text_system.in_schedule(OnEnter(GameState::Winner)), - Self::tie_text_system.in_schedule(OnEnter(GameState::Tie)), - Self::server_event_system.in_set(OnUpdate(ServerState::Hosting)), - Self::start_game_system - .in_set(OnUpdate(ClientState::Connected)) - .in_set(OnUpdate(GameState::WaitingForPlayer)) - .run_if(any_component_added::), // Wait until client replicates players before starting the game. - )) .add_systems( - (Self::turn_text_system, Self::symbol_turn_text_system) - .in_schedule(OnEnter(GameState::InGame)), + Startup, + ( + Self::ui_setup_system, + Self::cli_system.pipe(system_adapter::unwrap), + ), + ) + .add_systems( + OnEnter(GameState::InGame), + (Self::turn_text_system, Self::symbol_turn_text_system), ) .add_systems( + OnEnter(GameState::Disconnected), + Self::client_disconnected_text_system, + ) + .add_systems(OnEnter(GameState::Winner), Self::winner_text_system) + .add_systems(OnEnter(GameState::Tie), Self::tie_text_system) + .add_systems( + Update, ( - Self::picking_system.in_set(ServerSet::Authority), - Self::symbol_init_system, - Self::turn_advance_system.run_if(any_component_added::), - Self::cell_interatction_system.run_if(Self::local_player_turn), - Self::symbol_turn_text_system.run_if(resource_changed::()), - ) - .in_set(OnUpdate(GameState::InGame)), + Self::connecting_text_system.run_if(resource_added::()), + Self::server_waiting_text_system.run_if(resource_added::()), + Self::server_event_system.run_if(resource_exists::()), + Self::start_game_system + .run_if(client_connected) + .run_if(any_component_added::()), // Wait until client replicates players before starting the game. + ( + Self::cell_interatction_system.run_if(local_player_turn()), + Self::picking_system.run_if(has_authority()), + Self::symbol_init_system, + Self::turn_advance_system.run_if(any_component_added::()), + Self::symbol_turn_text_system.run_if(resource_changed::()), + ) + .run_if(in_state(GameState::InGame)), + ), ); } } @@ -95,11 +100,7 @@ const TEXT_SECTION: usize = 0; const SYMBOL_SECTION: usize = 1; impl TicTacToePlugin { - fn ui_setup_system( - mut commands: Commands, - game_font: Res, - symbol_font: Res, - ) { + fn ui_setup_system(mut commands: Commands, symbol_font: Res) { commands.spawn(Camera2dBundle::default()); const LINES_COUNT: usize = GRID_SIZE + 1; @@ -148,12 +149,13 @@ impl TicTacToePlugin { const BUTTON_MARGIN: f32 = (CELL_SIZE + LINE_THICKNESS - BUTTON_SIZE) / 2.0; const TEXT_COLOR: Color = Color::rgb(0.5, 0.5, 1.0); - const FONT_SIZE: f32 = 50.0; + const FONT_SIZE: f32 = 40.0; commands .spawn(NodeBundle { style: Style { - size: Size::all(Val::Percent(100.0)), + width: Val::Percent(100.0), + height: Val::Percent(100.0), align_items: AlignItems::Center, justify_content: JustifyContent::Center, ..Default::default() @@ -166,7 +168,8 @@ impl TicTacToePlugin { NodeBundle { style: Style { flex_direction: FlexDirection::Column, - size: Size::all(Val::Px(BOARD_SIZE - LINE_THICKNESS)), + width: Val::Px(BOARD_SIZE - LINE_THICKNESS), + height: Val::Px(BOARD_SIZE - LINE_THICKNESS), ..Default::default() }, ..Default::default() @@ -178,10 +181,8 @@ impl TicTacToePlugin { parent .spawn(NodeBundle { style: Style { - size: Size::new( - Val::Px(BOARD_SIZE - LINE_THICKNESS), - Val::Px(CELL_SIZE + LINE_THICKNESS), - ), + width: Val::Px(BOARD_SIZE - LINE_THICKNESS), + height: Val::Px(CELL_SIZE + LINE_THICKNESS), ..Default::default() }, ..Default::default() @@ -190,7 +191,8 @@ impl TicTacToePlugin { for _ in 0..GRID_SIZE { parent.spawn(ButtonBundle { style: Style { - size: Size::all(Val::Px(BUTTON_SIZE)), + width: Val::Px(BUTTON_SIZE), + height: Val::Px(BUTTON_SIZE), margin: UiRect::all(Val::Px(BUTTON_MARGIN)), ..Default::default() }, @@ -216,9 +218,9 @@ impl TicTacToePlugin { TextSection::new( String::new(), TextStyle { - font: game_font.0.clone(), font_size: FONT_SIZE, color: TEXT_COLOR, + ..Default::default() }, ), TextSection::new( @@ -305,6 +307,43 @@ impl TicTacToePlugin { Ok(()) } + fn turn_text_system(mut bottom_text: Query<&mut Text, With>) { + bottom_text.single_mut().sections[0].value = "Current turn: ".into(); + } + + fn symbol_turn_text_system( + mut bottom_text: Query<&mut Text, With>, + current_turn: Res, + ) { + let symbol_section = &mut bottom_text.single_mut().sections[SYMBOL_SECTION]; + symbol_section.value = current_turn.glyph().into(); + symbol_section.style.color = current_turn.color(); + } + + fn client_disconnected_text_system(mut bottom_text: Query<&mut Text, With>) { + let sections = &mut bottom_text.single_mut().sections; + sections[TEXT_SECTION].value = "Client disconnected".into(); + sections[SYMBOL_SECTION].value.clear(); + } + + fn winner_text_system(mut bottom_text: Query<&mut Text, With>) { + bottom_text.single_mut().sections[TEXT_SECTION].value = "Winner: ".into(); + } + + fn tie_text_system(mut bottom_text: Query<&mut Text, With>) { + let sections = &mut bottom_text.single_mut().sections; + sections[TEXT_SECTION].value = "Tie".into(); + sections[SYMBOL_SECTION].value.clear(); + } + + fn connecting_text_system(mut bottom_text: Query<&mut Text, With>) { + bottom_text.single_mut().sections[TEXT_SECTION].value = "Connecting".into(); + } + + fn server_waiting_text_system(mut bottom_text: Query<&mut Text, With>) { + bottom_text.single_mut().sections[TEXT_SECTION].value = "Waiting player".into(); + } + /// Waits for client to connect to start the game or disconnect to finish it. /// /// Only for server. @@ -345,7 +384,7 @@ impl TicTacToePlugin { for (button_entity, button_parent, interaction, mut background) in &mut cells { match interaction { - Interaction::Clicked => { + Interaction::Pressed => { let buttons = children.get(**button_parent).unwrap(); let column = buttons .iter() @@ -484,53 +523,17 @@ impl TicTacToePlugin { current_turn.0 = current_turn.next(); } } +} - fn connecting_text_system(mut bottom_text: Query<&mut Text, With>) { - bottom_text.single_mut().sections[TEXT_SECTION].value = "Connecting".into(); - } - - fn server_waiting_text_system(mut bottom_text: Query<&mut Text, With>) { - bottom_text.single_mut().sections[TEXT_SECTION].value = "Waiting for player".into(); - } - - fn client_disconnected_text_system(mut bottom_text: Query<&mut Text, With>) { - let sections = &mut bottom_text.single_mut().sections; - sections[TEXT_SECTION].value = "Client disconnected".into(); - sections[SYMBOL_SECTION].value.clear(); - } - - fn turn_text_system(mut bottom_text: Query<&mut Text, With>) { - bottom_text.single_mut().sections[0].value = "Current turn: ".into(); - } - - fn symbol_turn_text_system( - mut bottom_text: Query<&mut Text, With>, - current_turn: Res, - ) { - let mut symbol_section = &mut bottom_text.single_mut().sections[SYMBOL_SECTION]; - symbol_section.value = current_turn.glyph().into(); - symbol_section.style.color = current_turn.color(); - } - - fn winner_text_system(mut bottom_text: Query<&mut Text, With>) { - bottom_text.single_mut().sections[TEXT_SECTION].value = "Winner: ".into(); - } - - fn tie_text_system(mut bottom_text: Query<&mut Text, With>) { - let sections = &mut bottom_text.single_mut().sections; - sections[TEXT_SECTION].value = "Tie".into(); - sections[SYMBOL_SECTION].value.clear(); - } - - /// Returns `true` if the local player can select cells. - fn local_player_turn( - current_turn: Res, - client_transport: Option>, - players: Query<(&Player, &Symbol)>, - ) -> bool { +/// Returns `true` if the local player can select cells. +fn local_player_turn( +) -> impl FnMut(Res, Option>, Query<(&Player, &Symbol)>) -> bool +{ + |current_turn, client_transport, players| { let client_id = client_transport .map(|client| client.client_id()) .unwrap_or(SERVER_ID); + players .iter() .any(|(player, &symbol)| player.0 == client_id && symbol == current_turn.0) @@ -538,8 +541,8 @@ impl TicTacToePlugin { } /// A condition for systems to check if any component of type `T` was added to the world. -fn any_component_added(components: Query<(), Added>) -> bool { - !components.is_empty() +fn any_component_added() -> impl FnMut(Query<(), Added>) -> bool { + |components| !components.is_empty() } const PORT: u16 = 5000; @@ -569,17 +572,6 @@ impl Default for Cli { } } -/// Font for in-game text. -#[derive(Resource)] -struct GameFont(Handle); - -impl FromWorld for GameFont { - fn from_world(world: &mut World) -> Self { - let asset_server = world.resource::(); - Self(asset_server.load("FiraSans-Bold.ttf")) - } -} - /// Font to display unicode characters for [`Symbol`]. #[derive(Resource)] struct SymbolFont(Handle); @@ -594,7 +586,7 @@ impl FromWorld for SymbolFont { #[derive(States, Clone, Copy, Debug, Eq, Hash, PartialEq, Default)] enum GameState { #[default] - WaitingForPlayer, + WaitingPlayer, InGame, Winner, Tie, @@ -716,5 +708,5 @@ struct Player(u64); /// /// We don't replicate the whole UI, so we can't just send the picked entity because on server it may be different. /// So we send the cell location in grid and calculate the entity on server based on this. -#[derive(Clone, Copy, Debug, Deserialize, Serialize, Deref)] +#[derive(Clone, Copy, Debug, Deref, Deserialize, Event, Serialize)] struct CellPick(BoardCell); diff --git a/src/client.rs b/src/client.rs index 86710195..aadb3d2c 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1,20 +1,15 @@ -use bevy::ecs::schedule::run_enter_schedule; use bevy::{ - ecs::{entity::EntityMap, reflect::ReflectMapEntities, system::Command}, + ecs::{component::Tick, entity::EntityMap, reflect::ReflectMapEntities, system::Command}, prelude::*, reflect::TypeRegistryInternal, utils::HashMap, }; -use bevy_renet::{ - renet::{transport::NetcodeClientTransport, RenetClient}, - transport::NetcodeClientPlugin, - RenetClientPlugin, -}; +use bevy_renet::transport::client_connected; +use bevy_renet::{renet::RenetClient, transport::NetcodeClientPlugin, RenetClientPlugin}; use bincode::{DefaultOptions, Options}; use serde::{de::DeserializeSeed, Deserialize, Serialize}; use crate::{ - tick::Tick, world_diff::{ComponentDiff, WorldDiff, WorldDiffDeserializer}, Replication, REPLICATION_CHANNEL_ID, }; @@ -23,48 +18,27 @@ pub struct ClientPlugin; impl Plugin for ClientPlugin { fn build(&self, app: &mut App) { - app.add_plugin(RenetClientPlugin) - .add_plugin(NetcodeClientPlugin) - .add_state::() - .init_resource::() - .init_resource::() + app.add_plugins((RenetClientPlugin, NetcodeClientPlugin)) .add_systems( - ( - Self::no_connection_state_system - .run_if(resource_removed::()), - Self::connecting_state_system - .run_if(bevy_renet::transport::client_connecting) - .run_if(state_exists_and_equals(ClientState::NoConnection)), - Self::connected_state_system - .run_if(bevy_renet::transport::client_connected) - .run_if(state_exists_and_equals(ClientState::Connecting)), - ) - .before(run_enter_schedule::) - .in_base_set(CoreSet::StateTransitions), + PreUpdate, + Self::init_system.run_if(resource_added::()), ) - .add_system(Self::client_reset_system.in_schedule(OnExit(ClientState::Connected))) .add_systems( + Update, ( Self::world_diff_receiving_system, Self::tick_ack_sending_system, ) .chain() - .in_set(OnUpdate(ClientState::Connected)), + .run_if(client_connected), ); } } impl ClientPlugin { - fn no_connection_state_system(mut client_state: ResMut>) { - client_state.set(ClientState::NoConnection); - } - - fn connecting_state_system(mut client_state: ResMut>) { - client_state.set(ClientState::Connecting); - } - - fn connected_state_system(mut client_state: ResMut>) { - client_state.set(ClientState::Connected); + fn init_system(mut commands: Commands) { + commands.insert_resource(LastTick::default()); + commands.insert_resource(NetworkEntityMap::default()); } fn tick_ack_sending_system(last_tick: Res, mut client: ResMut) { @@ -95,34 +69,27 @@ impl ClientPlugin { let world_diff = WorldDiffDeserializer::new(®istry) .deserialize(&mut deserializer) .expect("server should send only world diffs over replication channel"); - last_tick.0 = world_diff.tick; + *last_tick = world_diff.tick.into(); commands.apply_world_diff(world_diff); } } - - fn client_reset_system(mut commands: Commands) { - commands.insert_resource(LastTick::default()); - commands.insert_resource(NetworkEntityMap::default()); - } -} - -#[derive(States, Clone, Copy, Debug, Eq, Hash, PartialEq, Default)] -pub enum ClientState { - #[default] - NoConnection, - Connecting, - Connected, } /// Last received tick from server. /// /// Exists only on clients, sent to the server. -#[derive(Resource, Serialize, Deserialize, Deref, DerefMut)] -pub(super) struct LastTick(pub(super) Tick); +#[derive(Default, Deserialize, Resource, Serialize)] +pub(super) struct LastTick(u32); -impl Default for LastTick { - fn default() -> Self { - Self(Tick::new(0)) +impl From for LastTick { + fn from(value: Tick) -> Self { + Self(value.get()) + } +} + +impl From for Tick { + fn from(value: LastTick) -> Self { + Self::new(value.0) } } @@ -139,14 +106,20 @@ impl ApplyWorldDiffExt for Commands<'_, '_> { struct ApplyWorldDiff(WorldDiff); impl Command for ApplyWorldDiff { - fn write(self, world: &mut World) { + fn apply(self, world: &mut World) { let registry = world.resource::().clone(); let registry = registry.read(); world.resource_scope(|world, mut entity_map: Mut| { // Map entities non-lazily in order to correctly map components that reference server entities. for (entity, components) in map_entities(world, &mut entity_map, self.0.entities) { for component_diff in components { - apply_component_diff(world, &entity_map, ®istry, entity, &component_diff); + apply_component_diff( + world, + &mut entity_map, + ®istry, + entity, + &component_diff, + ); } } @@ -178,7 +151,7 @@ fn map_entities( fn apply_component_diff( world: &mut World, - entity_map: &NetworkEntityMap, + entity_map: &mut NetworkEntityMap, registry: &TypeRegistryInternal, client_entity: Entity, component_diff: &ComponentDiff, @@ -196,9 +169,12 @@ fn apply_component_diff( ComponentDiff::Changed(component) => { reflect_component.apply_or_insert(&mut world.entity_mut(client_entity), &**component); if let Some(reflect_map_entities) = registration.data::() { - reflect_map_entities - .map_specific_entities(world, entity_map.to_client(), &[client_entity]) - .unwrap_or_else(|e| panic!("entities in {type_name} should be mappable: {e}")); + // TODO 0.12: Remove mutable access. + reflect_map_entities.map_entities( + world, + &mut entity_map.server_to_client, + &[client_entity], + ); } } ComponentDiff::Removed(_) => reflect_component.remove(&mut world.entity_mut(client_entity)), diff --git a/src/lib.rs b/src/lib.rs index 4ab17b44..f8fd977d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -88,9 +88,8 @@ mapping. Therefore, to replicate such components properly, they need implement struct MappedComponent(Entity); impl MapEntities for MappedComponent { - fn map_entities(&mut self, entity_map: &EntityMap) -> Result<(), MapEntitiesError> { - self.0 = entity_map.get(self.0)?; - Ok(()) + fn map_entities(&mut self, entity_mapper: &mut EntityMapper) { + self.0 = entity_map.get_or_reserve(self.0); } } @@ -230,13 +229,13 @@ fn event_receiving_system(mut dummy_events: EventReader>) } } -#[derive(Debug, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Deserialize, Event, Serialize)] struct DummyEvent; ``` Just like components, if an event contains [`Entity`], then the client should map it before sending it to the server. -To do this, use [`ClientEventAppExt::add_mapped_client_event()`]: +To do this, use [`ClientEventAppExt::add_mapped_client_event()`] and implement [`MapEventEntities`]: ```rust # use bevy::{ @@ -255,9 +254,9 @@ app.add_mapped_client_event::(SendPolicy::Ordered); #[derive(Deserialize, Serialize, Debug)] struct MappedEvent(Entity); -impl MapEntities for MappedEvent { - fn map_entities(&mut self, entity_map: &EntityMap) -> Result<(), MapEntitiesError> { - self.0 = entity_map.get(self.0)?; +impl MapEventEntities for MappedEvent { + fn map_entities(&mut self, entity_map: &EntityMap) -> Result<(), MapError> { + self.0 = entity_map.get(self.0).ok_or(MapError(self.entity))?; Ok(()) } } @@ -341,16 +340,17 @@ let connection_config = ConnectionConfig { For full example of how to initialize server or client see the example in the repository. -## System sets and states +## System sets and conditions When configuring systems for multiplayer game, you often want to run some systems only on when you have authority over the world simulation (on server or in single-player session). For example, damage registration or -procedural level generation systems. For this just add your systems to the -[`ServerSet::Authority`] system set. If you want your systems to run only on +procedural level generation systems. For this just add [`has_authority()`] +condition on such system. If you want your systems to run only on frames when server send updates to clients use [`ServerSet::Tick`]. -We also have states for server and client: [`ServerState`] or [`ClientState`]. +To check if you running server or client, you can use conditions based on +[`RenetClient`] and [`RenetServer`] resources. They rarely used for gameplay systems (since you write the same logic for multiplayer and single-player!), but could be used for server creation / connection systems and corresponding UI. @@ -364,16 +364,16 @@ pub mod replication_core; pub mod server; #[cfg(test)] mod test_network; -mod tick; mod world_diff; pub mod prelude { pub use super::{ - client::{ClientPlugin, ClientState}, + client::ClientPlugin, + has_authority, network_event::{ client_event::{ClientEventAppExt, FromClient}, server_event::{SendMode, ServerEventAppExt, ToClients}, - BuildEventDeserializer, BuildEventSerializer, SendPolicy, + BuildEventDeserializer, BuildEventSerializer, MapError, MapEventEntities, SendPolicy, }, parent_sync::{ParentSync, ParentSyncPlugin}, renet::{RenetClient, RenetServer}, @@ -381,7 +381,7 @@ pub mod prelude { AppReplicationExt, NetworkChannels, Replication, ReplicationCorePlugin, ReplicationRules, }, - server::{ServerPlugin, ServerSet, ServerState, TickPolicy, SERVER_ID}, + server::{ServerPlugin, ServerSet, TickPolicy, SERVER_ID}, ReplicationPlugins, }; } @@ -404,11 +404,17 @@ impl PluginGroup for ReplicationPlugins { } } +/// Condition that returns `true` if server is present or in singleplayer. +pub fn has_authority() -> impl FnMut(Option>) -> bool + Clone { + move |client| client.is_none() +} + #[cfg(test)] mod tests { use bevy::{ ecs::{ - entity::{EntityMap, MapEntities, MapEntitiesError}, + component::Tick, + entity::{EntityMapper, MapEntities}, reflect::ReflectMapEntities, }, utils::HashMap, @@ -421,14 +427,12 @@ mod tests { replication_core::{AppReplicationExt, Replication}, server::{despawn_tracker::DespawnTracker, removal_tracker::RemovalTracker, AckedTicks}, test_network::TestNetworkPlugin, - tick::Tick, }; #[test] fn acked_ticks_cleanup() { let mut app = App::new(); - app.add_plugins(ReplicationPlugins) - .add_plugin(TestNetworkPlugin); + app.add_plugins((ReplicationPlugins, TestNetworkPlugin)); let mut client_transport = app.world.resource_mut::(); client_transport.disconnect(); @@ -447,8 +451,7 @@ mod tests { #[test] fn tick_acks_receiving() { let mut app = App::new(); - app.add_plugins(ReplicationPlugins) - .add_plugin(TestNetworkPlugin); + app.add_plugins((ReplicationPlugins, TestNetworkPlugin)); for _ in 0..10 { app.update(); @@ -466,7 +469,7 @@ mod tests { let mut app = App::new(); app.add_plugins(ReplicationPlugins) .replicate::() - .add_plugin(TestNetworkPlugin); + .add_plugins(TestNetworkPlugin); app.update(); @@ -504,7 +507,7 @@ mod tests { .replicate::() .replicate::() .not_replicate_if_present::() - .add_plugin(TestNetworkPlugin); + .add_plugins(TestNetworkPlugin); app.update(); @@ -546,7 +549,7 @@ mod tests { let mut app = App::new(); app.add_plugins(ReplicationPlugins) .replicate::() - .add_plugin(TestNetworkPlugin); + .add_plugins(TestNetworkPlugin); app.update(); @@ -573,7 +576,7 @@ mod tests { let mut app = App::new(); app.add_plugins(ReplicationPlugins) .register_type::() - .add_plugin(TestNetworkPlugin); + .add_plugins(TestNetworkPlugin); app.update(); @@ -601,8 +604,7 @@ mod tests { #[test] fn despawn_replication() { let mut app = App::new(); - app.add_plugins(ReplicationPlugins) - .add_plugin(TestNetworkPlugin); + app.add_plugins((ReplicationPlugins, TestNetworkPlugin)); app.update(); @@ -612,7 +614,7 @@ mod tests { .spawn_empty() .push_children(&[children_entity]) .id(); - let current_tick = Tick::new(app.world.read_change_tick()); + let current_tick = app.world.read_change_tick(); let mut despawn_tracker = app.world.resource_mut::(); despawn_tracker .despawns @@ -639,9 +641,8 @@ mod tests { struct MappedComponent(Entity); impl MapEntities for MappedComponent { - fn map_entities(&mut self, entity_map: &EntityMap) -> Result<(), MapEntitiesError> { - self.0 = entity_map.get(self.0)?; - Ok(()) + fn map_entities(&mut self, entity_map: &mut EntityMapper) { + self.0 = entity_map.get_or_reserve(self.0); } } diff --git a/src/network_event.rs b/src/network_event.rs index 589d847a..c419e537 100644 --- a/src/network_event.rs +++ b/src/network_event.rs @@ -3,9 +3,13 @@ pub mod server_event; #[cfg(test)] mod test_events; -use std::{marker::PhantomData, time::Duration}; +use std::{ + fmt::{self, Display, Formatter}, + marker::PhantomData, + time::Duration, +}; -use bevy::{prelude::*, reflect::TypeRegistryInternal}; +use bevy::{ecs::entity::EntityMap, prelude::*, reflect::TypeRegistryInternal}; use bevy_renet::renet::SendType; /// Holds a channel ID for `T`. @@ -65,3 +69,15 @@ impl From for SendType { } } } + +pub trait MapEventEntities { + fn map_entities(&mut self, entity_map: &EntityMap) -> Result<(), MapError>; +} + +pub struct MapError(pub Entity); + +impl Display for MapError { + fn fmt(&self, f: &mut Formatter) -> fmt::Result { + write!(f, "unable to map entity {:?}", self.0) + } +} diff --git a/src/network_event/client_event.rs b/src/network_event/client_event.rs index bcbfa280..d75ebe0c 100644 --- a/src/network_event/client_event.rs +++ b/src/network_event/client_event.rs @@ -1,21 +1,22 @@ use std::fmt::Debug; -use bevy::{ - ecs::{entity::MapEntities, event::Event}, - prelude::*, +use bevy::{ecs::event::Event, prelude::*}; +use bevy_renet::{ + renet::{RenetClient, RenetServer, SendType}, + transport::client_connected, }; -use bevy_renet::renet::{RenetClient, RenetServer, SendType}; use bincode::{DefaultOptions, Options}; use serde::{ de::{DeserializeOwned, DeserializeSeed}, Serialize, }; -use super::{BuildEventDeserializer, BuildEventSerializer, EventChannel}; +use super::{BuildEventDeserializer, BuildEventSerializer, EventChannel, MapEventEntities}; use crate::{ - client::{ClientState, NetworkEntityMap}, + client::NetworkEntityMap, + has_authority, prelude::NetworkChannels, - server::{ServerSet, ServerState, SERVER_ID}, + server::{ServerSet, SERVER_ID}, }; /// An extension trait for [`App`] for creating client events. @@ -27,7 +28,7 @@ pub trait ClientEventAppExt { ) -> &mut Self; /// Same as [`Self::add_client_event`], but additionally maps client entities to server before sending. - fn add_mapped_client_event( + fn add_mapped_client_event( &mut self, policy: impl Into, ) -> &mut Self; @@ -50,7 +51,7 @@ pub trait ClientEventAppExt { policy: impl Into, ) -> &mut Self where - T: Event + Debug + MapEntities, + T: Event + Debug + MapEventEntities, S: BuildEventSerializer + 'static, D: BuildEventDeserializer + 'static, for<'a> S::EventSerializer<'a>: Serialize, @@ -60,8 +61,8 @@ pub trait ClientEventAppExt { fn add_client_event_with( &mut self, policy: impl Into, - sending_system: impl IntoSystemConfig, - receiving_system: impl IntoSystemConfig, + sending_system: impl IntoSystemConfigs, + receiving_system: impl IntoSystemConfigs, ) -> &mut Self; } @@ -73,7 +74,9 @@ impl ClientEventAppExt for App { self.add_client_event_with::(policy, sending_system::, receiving_system::) } - fn add_mapped_client_event( + fn add_mapped_client_event< + T: Event + Serialize + DeserializeOwned + Debug + MapEventEntities, + >( &mut self, policy: impl Into, ) -> &mut Self { @@ -101,7 +104,7 @@ impl ClientEventAppExt for App { fn add_mapped_client_reflect_event(&mut self, policy: impl Into) -> &mut Self where - T: Event + Debug + MapEntities, + T: Event + Debug + MapEventEntities, S: BuildEventSerializer + 'static, D: BuildEventDeserializer + 'static, for<'a> S::EventSerializer<'a>: Serialize, @@ -117,8 +120,8 @@ impl ClientEventAppExt for App { fn add_client_event_with( &mut self, policy: impl Into, - sending_system: impl IntoSystemConfig, - receiving_system: impl IntoSystemConfig, + sending_system: impl IntoSystemConfigs, + receiving_system: impl IntoSystemConfigs, ) -> &mut Self { let channel_id = self .world @@ -128,13 +131,18 @@ impl ClientEventAppExt for App { self.add_event::() .add_event::>() .insert_resource(EventChannel::::new(channel_id)) - .add_system(sending_system.in_set(ServerSet::SendEvents).run_if( - resource_exists::>().and_then(in_state(ClientState::Connected)), - )) - .add_system(local_resending_system::.in_set(ServerSet::Authority)) - .add_system(receiving_system.in_set(ServerSet::ReceiveEvents).run_if( - resource_exists::>().and_then(in_state(ServerState::Hosting)), - )); + .add_systems( + Update, + ( + sending_system + .in_set(ServerSet::SendEvents) + .run_if(client_connected), + local_resending_system::.run_if(has_authority()), + receiving_system + .in_set(ServerSet::ReceiveEvents) + .run_if(resource_exists::()), + ), + ); self } @@ -152,7 +160,7 @@ fn sending_system( } } -fn mapping_and_sending_system( +fn mapping_and_sending_system( mut events: ResMut>, mut client: ResMut, entity_map: Res, @@ -161,7 +169,7 @@ fn mapping_and_sending_system( for mut event in events.drain() { event .map_entities(entity_map.to_server()) - .unwrap_or_else(|e| panic!("client event {event:?} should map its entities: {e}")); + .unwrap_or_else(|e| panic!("client event {event:?} should be mappable: {e}")); let message = bincode::serialize(&event).expect("mapped client event should be serializable"); client.send_message(channel.id, message); @@ -196,7 +204,7 @@ fn mapping_and_sending_reflect_system( channel: Res>, registry: Res, ) where - T: Event + MapEntities + Debug, + T: Event + MapEventEntities + Debug, S: BuildEventSerializer, for<'a> S::EventSerializer<'a>: Serialize, { @@ -204,9 +212,7 @@ fn mapping_and_sending_reflect_system( for mut event in events.drain() { event .map_entities(entity_map.to_server()) - .unwrap_or_else(|e| { - panic!("client reflect event {event:?} should map its entities: {e}") - }); + .unwrap_or_else(|e| panic!("client reflect event {event:?} should be mappable: {e}")); let serializer = S::new(&event, ®istry); let message = bincode::serialize(&serializer) .expect("mapped client reflect event should be serializable"); @@ -282,7 +288,7 @@ fn receiving_reflect_system( /// An event indicating that a message from client was received. /// Emited only on server. -#[derive(Clone, Copy)] +#[derive(Clone, Copy, Event)] pub struct FromClient { pub client_id: u64, pub event: T, @@ -325,7 +331,7 @@ mod tests { let mut app = App::new(); app.add_plugins(ReplicationPlugins) .add_client_event::(SendPolicy::Ordered) - .add_plugin(TestNetworkPlugin); + .add_plugins(TestNetworkPlugin); app.world .resource_mut::>() @@ -343,7 +349,7 @@ mod tests { let mut app = App::new(); app.add_plugins(ReplicationPlugins) .add_mapped_client_event::(SendPolicy::Ordered) - .add_plugin(TestNetworkPlugin); + .add_plugins(TestNetworkPlugin); let client_entity = Entity::from_raw(0); let server_entity = Entity::from_raw(client_entity.index() + 1); @@ -373,7 +379,7 @@ mod tests { app.add_plugins(ReplicationPlugins) .register_type::() .add_client_reflect_event::(SendPolicy::Ordered) - .add_plugin(TestNetworkPlugin); + .add_plugins(TestNetworkPlugin); app.world .resource_mut::>() @@ -395,7 +401,7 @@ mod tests { app.add_plugins(ReplicationPlugins) .register_type::() .add_mapped_client_reflect_event::(SendPolicy::Ordered) - .add_plugin(TestNetworkPlugin); + .add_plugins(TestNetworkPlugin); let client_entity = Entity::from_raw(0); let server_entity = Entity::from_raw(client_entity.index() + 1); diff --git a/src/network_event/server_event.rs b/src/network_event/server_event.rs index 71684b51..7e6374ef 100644 --- a/src/network_event/server_event.rs +++ b/src/network_event/server_event.rs @@ -1,21 +1,22 @@ use std::fmt::Debug; -use bevy::{ - ecs::{entity::MapEntities, event::Event}, - prelude::*, +use bevy::{ecs::event::Event, prelude::*}; +use bevy_renet::{ + renet::{RenetClient, RenetServer, SendType}, + transport::client_connected, }; -use bevy_renet::renet::{RenetClient, RenetServer, SendType}; use bincode::{DefaultOptions, Options}; use serde::{ de::{DeserializeOwned, DeserializeSeed}, Serialize, }; -use super::{BuildEventDeserializer, BuildEventSerializer, EventChannel}; +use super::{BuildEventDeserializer, BuildEventSerializer, EventChannel, MapEventEntities}; use crate::{ - client::{ClientState, NetworkEntityMap}, + client::NetworkEntityMap, + has_authority, prelude::NetworkChannels, - server::{ServerSet, ServerState, SERVER_ID}, + server::{ServerSet, SERVER_ID}, }; /// An extension trait for [`App`] for creating server events. @@ -27,7 +28,7 @@ pub trait ServerEventAppExt { ) -> &mut Self; /// Same as [`Self::add_server_event`], but additionally maps server entities to client after receiving. - fn add_mapped_server_event( + fn add_mapped_server_event( &mut self, policy: impl Into, ) -> &mut Self; @@ -50,7 +51,7 @@ pub trait ServerEventAppExt { policy: impl Into, ) -> &mut Self where - T: Event + Debug + MapEntities, + T: Event + Debug + MapEventEntities, S: BuildEventSerializer + 'static, D: BuildEventDeserializer + 'static, for<'a> S::EventSerializer<'a>: Serialize, @@ -60,8 +61,8 @@ pub trait ServerEventAppExt { fn add_server_event_with( &mut self, policy: impl Into, - sending_system: impl IntoSystemConfig, - receiving_system: impl IntoSystemConfig, + sending_system: impl IntoSystemConfigs, + receiving_system: impl IntoSystemConfigs, ) -> &mut Self; } @@ -73,7 +74,9 @@ impl ServerEventAppExt for App { self.add_server_event_with::(policy, sending_system::, receiving_system::) } - fn add_mapped_server_event( + fn add_mapped_server_event< + T: Event + Serialize + DeserializeOwned + Debug + MapEventEntities, + >( &mut self, policy: impl Into, ) -> &mut Self { @@ -101,7 +104,7 @@ impl ServerEventAppExt for App { fn add_mapped_server_reflect_event(&mut self, policy: impl Into) -> &mut Self where - T: Event + Debug + MapEntities, + T: Event + Debug + MapEventEntities, S: BuildEventSerializer + 'static, D: BuildEventDeserializer + 'static, for<'a> S::EventSerializer<'a>: Serialize, @@ -117,8 +120,8 @@ impl ServerEventAppExt for App { fn add_server_event_with( &mut self, policy: impl Into, - sending_system: impl IntoSystemConfig, - receiving_system: impl IntoSystemConfig, + sending_system: impl IntoSystemConfigs, + receiving_system: impl IntoSystemConfigs, ) -> &mut Self { let channel_id = self .world @@ -128,19 +131,21 @@ impl ServerEventAppExt for App { self.add_event::() .init_resource::>>() .insert_resource(EventChannel::::new(channel_id)) - .add_system(receiving_system.in_set(ServerSet::ReceiveEvents).run_if( - resource_exists::>().and_then(in_state(ClientState::Connected)), - )) .add_systems( + Update, ( - sending_system.in_set(ServerSet::SendEvents).run_if( - resource_exists::>() - .and_then(in_state(ServerState::Hosting)), - ), - local_resending_system::.in_set(ServerSet::Authority), - ) - .chain() - .in_set(ServerSet::Tick), + ( + sending_system + .in_set(ServerSet::SendEvents) + .run_if(resource_exists::()), + local_resending_system::.run_if(has_authority()), + ) + .chain() + .in_set(ServerSet::Tick), + receiving_system + .in_set(ServerSet::ReceiveEvents) + .run_if(client_connected), + ), ); self @@ -256,7 +261,7 @@ fn receiving_system( } } -fn receiving_and_mapping_system( +fn receiving_and_mapping_system( mut server_events: EventWriter, mut client: ResMut, entity_map: Res, @@ -268,7 +273,7 @@ fn receiving_and_mapping_system( channel: Res>, registry: Res, ) where - T: Event + MapEntities + Debug, + T: Event + MapEventEntities + Debug, D: BuildEventDeserializer, for<'a, 'de> D::EventDeserializer<'a>: DeserializeSeed<'de, Value = T>, { @@ -324,15 +329,13 @@ fn receiving_and_mapping_reflect_system( debug!("received mapped reflect event {event:?} from server"); event .map_entities(entity_map.to_client()) - .unwrap_or_else(|e| { - panic!("server reflect event {event:?} should map its entities: {e}") - }); + .unwrap_or_else(|e| panic!("server reflect event {event:?} should be mappable: {e}")); server_events.send(event); } } /// An event that will be send to client(s). -#[derive(Clone, Copy, Debug)] +#[derive(Clone, Copy, Debug, Event)] pub struct ToClients { pub mode: SendMode, pub event: T, @@ -385,7 +388,7 @@ mod tests { let mut app = App::new(); app.add_plugins(ReplicationPlugins) .add_server_event::(SendPolicy::Ordered) - .add_plugin(TestNetworkPlugin); + .add_plugins(TestNetworkPlugin); let client_id = app.world.resource::().client_id(); for (mode, events_count) in [ @@ -419,7 +422,7 @@ mod tests { let mut app = App::new(); app.add_plugins(ReplicationPlugins) .add_mapped_server_event::(SendPolicy::Ordered) - .add_plugin(TestNetworkPlugin); + .add_plugins(TestNetworkPlugin); let client_entity = Entity::from_raw(0); let server_entity = Entity::from_raw(client_entity.index() + 1); @@ -452,7 +455,7 @@ mod tests { app.add_plugins(ReplicationPlugins) .register_type::() .add_server_reflect_event::(SendPolicy::Ordered) - .add_plugin(TestNetworkPlugin); + .add_plugins(TestNetworkPlugin); let client_id = app.world.resource::().client_id(); for (mode, events_count) in [ @@ -486,7 +489,7 @@ mod tests { app.add_plugins(ReplicationPlugins) .register_type::() .add_mapped_server_reflect_event::(SendPolicy::Ordered) - .add_plugin(TestNetworkPlugin); + .add_plugins(TestNetworkPlugin); let client_entity = Entity::from_raw(0); let server_entity = Entity::from_raw(client_entity.index() + 1); diff --git a/src/network_event/test_events.rs b/src/network_event/test_events.rs index 86e41a45..678b564c 100644 --- a/src/network_event/test_events.rs +++ b/src/network_event/test_events.rs @@ -6,7 +6,7 @@ use std::{ }; use bevy::{ - ecs::entity::{EntityMap, MapEntities, MapEntitiesError}, + ecs::entity::EntityMap, prelude::*, reflect::{ serde::{ReflectSerializer, UntypedReflectDeserializer}, @@ -20,30 +20,30 @@ use serde::{ }; use strum::{EnumVariantNames, IntoStaticStr, VariantNames}; -use super::{BuildEventDeserializer, BuildEventSerializer}; +use super::{BuildEventDeserializer, BuildEventSerializer, MapError, MapEventEntities}; -#[derive(Reflect, FromReflect, Debug)] +#[derive(Reflect, Debug)] pub(super) struct DummyComponent; -#[derive(Deserialize, Serialize, Debug)] +#[derive(Debug, Deserialize, Event, Serialize)] pub(super) struct DummyEvent(pub(super) Entity); -impl MapEntities for DummyEvent { - fn map_entities(&mut self, entity_map: &EntityMap) -> Result<(), MapEntitiesError> { - self.0 = entity_map.get(self.0)?; +impl MapEventEntities for DummyEvent { + fn map_entities(&mut self, entity_map: &EntityMap) -> Result<(), MapError> { + self.0 = entity_map.get(self.0).ok_or(MapError(self.0))?; Ok(()) } } -#[derive(Debug)] +#[derive(Debug, Event)] pub(super) struct ReflectEvent { pub(super) entity: Entity, pub(super) component: Box, } -impl MapEntities for ReflectEvent { - fn map_entities(&mut self, entity_map: &EntityMap) -> Result<(), MapEntitiesError> { - self.entity = entity_map.get(self.entity)?; +impl MapEventEntities for ReflectEvent { + fn map_entities(&mut self, entity_map: &EntityMap) -> Result<(), MapError> { + self.entity = entity_map.get(self.entity).ok_or(MapError(self.entity))?; Ok(()) } } diff --git a/src/parent_sync.rs b/src/parent_sync.rs index 5eaf4f49..8673164e 100644 --- a/src/parent_sync.rs +++ b/src/parent_sync.rs @@ -1,12 +1,12 @@ use bevy::{ ecs::{ - entity::{EntityMap, MapEntities, MapEntitiesError}, + entity::{EntityMapper, MapEntities}, reflect::ReflectMapEntities, }, prelude::*, }; -use crate::{prelude::ServerSet, AppReplicationExt}; +use crate::{has_authority, AppReplicationExt}; pub struct ParentSyncPlugin; @@ -18,16 +18,12 @@ impl Plugin for ParentSyncPlugin { app.register_type::>() .replicate::() .add_systems( + PostUpdate, ( - Self::update_system - .before(Self::sync_system) - .in_set(ServerSet::Authority), - Self::removal_system - .before(Self::sync_system) - .in_set(ServerSet::Authority), + (Self::update_system, Self::removal_system).run_if(has_authority()), Self::sync_system, ) - .in_base_set(CoreSet::PostUpdate), + .chain(), ); } } @@ -77,11 +73,10 @@ impl ParentSyncPlugin { pub struct ParentSync(Option); impl MapEntities for ParentSync { - fn map_entities(&mut self, entity_map: &EntityMap) -> Result<(), MapEntitiesError> { + fn map_entities(&mut self, entity_mapper: &mut EntityMapper) { if let Some(ref mut entity) = self.0 { - *entity = entity_map.get(*entity)?; + *entity = entity_mapper.get_or_reserve(*entity); } - Ok(()) } } @@ -95,8 +90,7 @@ mod tests { #[test] fn update() { let mut app = App::new(); - app.add_plugin(ReplicationCorePlugin) - .add_plugin(ParentSyncPlugin); + app.add_plugins((ReplicationCorePlugin, ParentSyncPlugin)); let child_entity = app.world.spawn(ParentSync::default()).id(); app.world.spawn_empty().add_child(child_entity); @@ -112,8 +106,7 @@ mod tests { #[test] fn removal() { let mut app = App::new(); - app.add_plugin(ReplicationCorePlugin) - .add_plugin(ParentSyncPlugin); + app.add_plugins((ReplicationCorePlugin, ParentSyncPlugin)); let parent_entity = app.world.spawn_empty().id(); let child_entity = app @@ -132,8 +125,7 @@ mod tests { #[test] fn hierarchy_set() { let mut app = App::new(); - app.add_plugin(ReplicationCorePlugin) - .add_plugin(ParentSyncPlugin); + app.add_plugins((ReplicationCorePlugin, ParentSyncPlugin)); let parent_entity = app.world.spawn_empty().id(); let child_entity = app.world.spawn(ParentSync(Some(parent_entity))).id(); @@ -149,8 +141,7 @@ mod tests { #[test] fn hierarchy_unset() { let mut app = App::new(); - app.add_plugin(ReplicationCorePlugin) - .add_plugin(ParentSyncPlugin); + app.add_plugins((ReplicationCorePlugin, ParentSyncPlugin)); let child_entity = app.world.spawn_empty().id(); app.world.spawn_empty().add_child(child_entity); @@ -171,16 +162,18 @@ mod tests { #[test] fn scene_hierarchy_set() { let mut app = App::new(); - app.add_plugin(AssetPlugin::default()) - .add_plugin(ScenePlugin) - .add_plugin(ReplicationCorePlugin) - .add_plugin(ParentSyncPlugin); + app.add_plugins(( + AssetPlugin::default(), + ScenePlugin, + ReplicationCorePlugin, + ParentSyncPlugin, + )); let mut scene_world = World::new(); + scene_world.insert_resource(app.world.resource::().clone()); let parent_entity = scene_world.spawn_empty().id(); scene_world.spawn(ParentSync(Some(parent_entity))); - let dynamic_scene = - DynamicScene::from_world(&scene_world, app.world.resource::()); + let dynamic_scene = DynamicScene::from_world(&scene_world); let mut scenes = app.world.resource_mut::>(); let scene_handle = scenes.add(dynamic_scene); diff --git a/src/server.rs b/src/server.rs index 7a4c3fa9..0e72b3a4 100644 --- a/src/server.rs +++ b/src/server.rs @@ -3,11 +3,10 @@ pub(super) mod removal_tracker; use std::time::Duration; -use bevy::ecs::schedule::run_enter_schedule; use bevy::{ ecs::{ archetype::ArchetypeId, - component::{ComponentTicks, StorageType}, + component::{ComponentTicks, StorageType, Tick}, system::SystemChangeTick, world::EntityRef, }, @@ -17,10 +16,7 @@ use bevy::{ utils::HashMap, }; use bevy_renet::{ - renet::{ - transport::{NetcodeClientTransport, NetcodeServerTransport}, - RenetServer, ServerEvent, - }, + renet::{RenetServer, ServerEvent}, transport::NetcodeServerPlugin, RenetServerPlugin, }; @@ -28,7 +24,6 @@ use bevy_renet::{ use crate::{ client::LastTick, replication_core::ReplicationRules, - tick::Tick, world_diff::{ComponentDiff, WorldDiff, WorldDiffSerializer}, REPLICATION_CHANNEL_ID, }; @@ -37,15 +32,6 @@ use removal_tracker::{RemovalTracker, RemovalTrackerPlugin}; pub const SERVER_ID: u64 = 0; -pub enum TickPolicy { - /// Max number of updates sent from server per second. May be lower if update cycle duration is too long. - /// - /// By default it's 30 updates per second. - MaxTickRate(u16), - /// [`ServerSet::Tick`] must be manually configured. - Manual, -} - pub struct ServerPlugin { pub tick_policy: TickPolicy, } @@ -60,58 +46,39 @@ impl Default for ServerPlugin { impl Plugin for ServerPlugin { fn build(&self, app: &mut App) { - app.add_plugin(RenetServerPlugin) - .add_plugin(NetcodeServerPlugin) - .add_plugin(RemovalTrackerPlugin) - .add_plugin(DespawnTrackerPlugin) - .configure_set( - ServerSet::Authority.run_if(not(resource_exists::())), + app.add_plugins(( + RenetServerPlugin, + NetcodeServerPlugin, + RemovalTrackerPlugin, + DespawnTrackerPlugin, + )) + .add_systems( + PreUpdate, + Self::init_system.run_if(resource_added::()), + ) + .add_systems( + Update, + ( + Self::tick_acks_receiving_system, + Self::acked_ticks_cleanup_system, + Self::world_diffs_sending_system.in_set(ServerSet::Tick), ) - .init_resource::() - .add_state::() - .add_systems( - ( - Self::no_server_state_system - .run_if(state_exists_and_equals(ServerState::Hosting)) - .run_if(resource_removed::()), - Self::hosting_state_system - .run_if(resource_added::()) - .run_if(state_exists_and_equals(ServerState::NoServer)), - ) - .before(run_enter_schedule::) - .in_base_set(CoreSet::StateTransitions), - ) - .add_system(Self::server_reset_system.in_schedule(OnExit(ServerState::Hosting))) - .add_systems( - ( - Self::tick_acks_receiving_system, - Self::acked_ticks_cleanup_system, - Self::world_diffs_sending_system.in_set(ServerSet::Tick), - ) - .chain() - .in_set(OnUpdate(ServerState::Hosting)), - ); + .chain() + .run_if(resource_exists::()), + ); // Remove delay for tests. if cfg!(not(test)) { if let TickPolicy::MaxTickRate(max_tick_rate) = self.tick_policy { let tick_time = Duration::from_millis(1000 / max_tick_rate as u64); - app.configure_set(ServerSet::Tick.run_if(on_timer(tick_time))); + app.configure_set(Update, ServerSet::Tick.run_if(on_timer(tick_time))); } } } } impl ServerPlugin { - fn no_server_state_system(mut server_state: ResMut>) { - server_state.set(ServerState::NoServer); - } - - fn hosting_state_system(mut server_state: ResMut>) { - server_state.set(ServerState::Hosting); - } - - fn server_reset_system(mut commands: Commands) { + fn init_system(mut commands: Commands) { commands.insert_resource(AckedTicks::default()); } @@ -136,7 +103,7 @@ impl ServerPlugin { let current_tick = set.p0().read_change_tick(); for (client_id, mut world_diff) in client_diffs { - world_diff.tick.set(current_tick); // Replace last acknowledged tick with the current. + world_diff.tick = current_tick; // Replace last acknowledged tick with the current. let serializer = WorldDiffSerializer::new(&world_diff, ®istry); let message = bincode::serialize(&serializer).expect("world diff should be serializable"); @@ -158,7 +125,7 @@ impl ServerPlugin { if let Some(last_message) = last_message { match bincode::deserialize::(&last_message) { Ok(tick) => { - acked_ticks.insert(client_id, tick.0); + acked_ticks.insert(client_id, tick.into()); } Err(e) => error!("unable to deserialize tick from client {client_id}: {e}"), } @@ -276,7 +243,7 @@ fn collect_if_changed( type_name: &str, ) { for world_diff in client_diffs.values_mut() { - if ticks.is_changed(world_diff.tick.get(), world.read_change_tick()) { + if ticks.is_changed(world_diff.tick, world.read_change_tick()) { let component = reflect_component .reflect(entity) .unwrap_or_else(|| panic!("entity should have {type_name}")) @@ -299,7 +266,7 @@ fn collect_removals( for (entity, removal_tracker) in removal_trackers { for world_diff in client_diffs.values_mut() { for (&component_id, &tick) in removal_tracker.iter() { - if tick.is_newer_than(world_diff.tick, Tick::new(change_tick.change_tick())) { + if tick.is_newer_than(world_diff.tick, change_tick.this_run()) { // SAFETY: `component_id` obtained from `RemovalTracker` that always contains valid components. let component_info = unsafe { world.components().get_info_unchecked(component_id) }; @@ -321,17 +288,24 @@ fn collect_despawns( ) { for (entity, tick) in despawn_tracker.despawns.iter().copied() { for world_diff in client_diffs.values_mut() { - if tick.is_newer_than(world_diff.tick, Tick::new(change_tick.change_tick())) { + if tick.is_newer_than(world_diff.tick, change_tick.this_run()) { world_diff.despawns.push(entity); } } } } +pub enum TickPolicy { + /// Max number of updates sent from server per second. May be lower if update cycle duration is too long. + /// + /// By default it's 30 updates per second. + MaxTickRate(u16), + /// [`ServerSet::Tick`] must be manually configured. + Manual, +} + #[derive(SystemSet, Debug, Hash, PartialEq, Eq, Clone, Copy)] pub enum ServerSet { - /// Runs with server or in singleplayer. - Authority, /// Runs on server tick. Tick, /// Runs when events can be received. @@ -340,13 +314,6 @@ pub enum ServerSet { SendEvents, } -#[derive(States, Clone, Copy, Debug, Eq, Hash, PartialEq, Default)] -pub enum ServerState { - #[default] - NoServer, - Hosting, -} - /// Last acknowledged server ticks from all clients. /// /// Used only on server. diff --git a/src/server/despawn_tracker.rs b/src/server/despawn_tracker.rs index 8a91a4b2..e81cde75 100644 --- a/src/server/despawn_tracker.rs +++ b/src/server/despawn_tracker.rs @@ -1,7 +1,12 @@ -use bevy::{ecs::system::SystemChangeTick, prelude::*, utils::HashSet}; +use bevy::{ + ecs::{component::Tick, system::SystemChangeTick}, + prelude::*, + utils::HashSet, +}; +use bevy_renet::renet::RenetServer; use super::AckedTicks; -use crate::{replication_core::Replication, server::ServerState, tick::Tick}; +use crate::replication_core::Replication; /// Tracks entity despawns of entities with [`Replication`] component in [`DespawnTracker`] resource. /// @@ -11,12 +16,13 @@ pub(super) struct DespawnTrackerPlugin; impl Plugin for DespawnTrackerPlugin { fn build(&self, app: &mut App) { app.init_resource::().add_systems( + Update, ( Self::entity_tracking_system, Self::cleanup_system, Self::detection_system, ) - .in_set(OnUpdate(ServerState::Hosting)), + .run_if(resource_exists::()), ); } } @@ -40,9 +46,9 @@ impl DespawnTrackerPlugin { client_acks: Res, ) { despawn_tracker.despawns.retain(|(_, tick)| { - client_acks.values().any(|last_tick| { - tick.is_newer_than(*last_tick, Tick::new(change_tick.change_tick())) - }) + client_acks + .values() + .any(|last_tick| tick.is_newer_than(*last_tick, change_tick.this_run())) }); } @@ -58,7 +64,7 @@ impl DespawnTrackerPlugin { tracked_entities.retain(|&entity| { if entities.get(entity).is_err() { - despawns.push((entity, Tick::new(change_tick.change_tick()))); + despawns.push((entity, change_tick.this_run())); false } else { true @@ -81,14 +87,10 @@ mod tests { #[test] fn detection() { let mut app = App::new(); - app.add_plugin(DespawnTrackerPlugin) - .add_state::() + app.add_plugins(DespawnTrackerPlugin) + .insert_resource(RenetServer::new(Default::default())) .init_resource::(); - app.world - .resource_mut::>() - .set(ServerState::Hosting); - app.update(); // To avoid cleanup. diff --git a/src/server/removal_tracker.rs b/src/server/removal_tracker.rs index 65d88cc2..7ee2e331 100644 --- a/src/server/removal_tracker.rs +++ b/src/server/removal_tracker.rs @@ -1,15 +1,15 @@ use bevy::{ - ecs::{component::ComponentId, system::SystemChangeTick}, + ecs::{ + component::{ComponentId, Tick}, + system::SystemChangeTick, + }, prelude::*, utils::HashMap, }; +use bevy_renet::renet::RenetServer; use super::AckedTicks; -use crate::{ - replication_core::{Replication, ReplicationRules}, - server::ServerState, - tick::Tick, -}; +use crate::replication_core::{Replication, ReplicationRules}; /// Stores component removals in [`RemovalTracker`] component to make them persistent across ticks. /// @@ -19,12 +19,12 @@ pub(super) struct RemovalTrackerPlugin; impl Plugin for RemovalTrackerPlugin { fn build(&self, app: &mut App) { app.add_systems( - (Self::insertion_system, Self::cleanup_system).in_set(OnUpdate(ServerState::Hosting)), + Update, + (Self::insertion_system, Self::cleanup_system).run_if(resource_exists::()), ) - .add_system( - Self::detection_system - .in_base_set(CoreSet::PostUpdate) - .run_if(in_state(ServerState::Hosting)), + .add_systems( + PostUpdate, + Self::detection_system.run_if(resource_exists::()), ); } } @@ -47,9 +47,9 @@ impl RemovalTrackerPlugin { ) { for mut removal_tracker in &mut removal_trackers { removal_tracker.retain(|_, tick| { - client_acks.values().any(|last_tick| { - tick.is_newer_than(*last_tick, Tick::new(change_tick.change_tick())) - }) + client_acks + .values() + .any(|last_tick| tick.is_newer_than(*last_tick, change_tick.this_run())) }); } } @@ -63,7 +63,7 @@ impl RemovalTrackerPlugin { let entities: Vec<_> = set.p0().removed_with_id(component_id).collect(); for entity in entities { if let Ok(mut removal_tracker) = set.p1().get_mut(entity) { - removal_tracker.insert(component_id, Tick::new(current_tick)); + removal_tracker.insert(component_id, current_tick); } } } @@ -82,16 +82,12 @@ mod tests { #[test] fn detection() { let mut app = App::new(); - app.add_plugin(RemovalTrackerPlugin) - .add_state::() + app.add_plugins(RemovalTrackerPlugin) + .insert_resource(RenetServer::new(Default::default())) .init_resource::() .init_resource::() .replicate::(); - app.world - .resource_mut::>() - .set(ServerState::Hosting); - app.update(); // To avoid cleanup. diff --git a/src/tick.rs b/src/tick.rs deleted file mode 100644 index c8264fd8..00000000 --- a/src/tick.rs +++ /dev/null @@ -1,51 +0,0 @@ -//! A copy of `Tick` from Bevy latest master to achieve type safety. - -use bevy::ecs::change_detection::MAX_CHANGE_AGE; -use serde::{Deserialize, Serialize}; - -/// A value that tracks when a system ran relative to other systems. -/// This is used to power change detection. -#[derive(Copy, Clone, Debug, Serialize, Deserialize)] -pub struct Tick { - tick: u32, -} - -impl Tick { - pub const fn new(tick: u32) -> Self { - Self { tick } - } - - /// Gets the value of this change tick. - #[inline] - pub const fn get(self) -> u32 { - self.tick - } - - /// Sets the value of this change tick. - #[inline] - pub fn set(&mut self, tick: u32) { - self.tick = tick; - } - - /// Returns `true` if this `Tick` occurred since the system's `last_run`. - /// - /// `this_run` is the current tick of the system, used as a reference to help deal with wraparound. - #[inline] - pub fn is_newer_than(self, last_run: Tick, this_run: Tick) -> bool { - // This works even with wraparound because the world tick (`this_run`) is always "newer" than - // `last_run` and `self.tick`, and we scan periodically to clamp `ComponentTicks` values - // so they never get older than `u32::MAX` (the difference would overflow). - // - // The clamp here ensures determinism (since scans could differ between app runs). - let ticks_since_insert = this_run.relative_to(self).tick.min(MAX_CHANGE_AGE); - let ticks_since_system = this_run.relative_to(last_run).tick.min(MAX_CHANGE_AGE); - - ticks_since_system > ticks_since_insert - } - - /// Returns a change tick representing the relationship between `self` and `other`. - pub(crate) fn relative_to(self, other: Self) -> Self { - let tick = self.tick.wrapping_sub(other.tick); - Self { tick } - } -} diff --git a/src/world_diff.rs b/src/world_diff.rs index 09dfe2a7..c90ddfca 100644 --- a/src/world_diff.rs +++ b/src/world_diff.rs @@ -4,6 +4,7 @@ use std::{ }; use bevy::{ + ecs::component::Tick, prelude::*, reflect::{ serde::{ReflectSerializer, UntypedReflectDeserializer}, @@ -19,8 +20,6 @@ use serde::{ }; use strum::{EnumDiscriminants, EnumVariantNames, IntoStaticStr, VariantNames}; -use crate::tick::Tick; - /// Changed world data and current tick from server. /// /// Sent from server to clients. @@ -86,7 +85,7 @@ impl Serialize for WorldDiffSerializer<'_> { any::type_name::(), WorldDiffField::VARIANTS.len(), )?; - state.serialize_field(WorldDiffField::Tick.into(), &self.world_diff.tick)?; + state.serialize_field(WorldDiffField::Tick.into(), &self.world_diff.tick.get())?; state.serialize_field( WorldDiffField::Entities.into(), &EntitiesSerializer::new(&self.world_diff.entities, self.registry), @@ -191,7 +190,7 @@ impl<'de> Visitor<'de> for WorldDiffDeserializer<'_> { .next_element()? .ok_or_else(|| de::Error::invalid_length(WorldDiffField::Despawned as usize, &self))?; Ok(WorldDiff { - tick, + tick: Tick::new(tick), entities, despawns, }) @@ -375,24 +374,10 @@ mod tests { len: WorldDiffField::VARIANTS.len(), }, Token::Str(WorldDiffField::Tick.into()), - Token::Struct { - name: "Tick", - len: 1, - }, - Token::Str("tick"), Token::U32(world_diff.tick.get()), - Token::StructEnd, Token::Str(WorldDiffField::Entities.into()), Token::Map { len: Some(1) }, - Token::Struct { - name: "Entity", - len: 2, - }, - Token::Str("generation"), - Token::U32(Entity::PLACEHOLDER.generation()), - Token::Str("index"), - Token::U32(Entity::PLACEHOLDER.index()), - Token::StructEnd, + Token::U64(Entity::PLACEHOLDER.to_bits()), Token::Seq { len: Some(1) }, Token::NewtypeVariant { name: any::type_name::(), @@ -403,15 +388,7 @@ mod tests { Token::MapEnd, Token::Str(WorldDiffField::Despawned.into()), Token::Seq { len: Some(1) }, - Token::Struct { - name: "Entity", - len: 2, - }, - Token::Str("generation"), - Token::U32(Entity::PLACEHOLDER.generation()), - Token::Str("index"), - Token::U32(Entity::PLACEHOLDER.index()), - Token::StructEnd, + Token::U64(Entity::PLACEHOLDER.to_bits()), Token::SeqEnd, Token::StructEnd, ], From be0cc9fceb0f39dd9916aa1ae565b04a05529020 Mon Sep 17 00:00:00 2001 From: Hennadii Chernyshchyk Date: Thu, 20 Jul 2023 13:05:58 +0300 Subject: [PATCH 2/2] Update to renet 0.0.9 --- Cargo.toml | 2 +- examples/tic_tac_toe.rs | 2 +- src/client.rs | 2 +- src/network_event/client_event.rs | 2 +- src/network_event/server_event.rs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index ae6fa4cd..cdfc3ee8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ license = "MIT OR Apache-2.0" include = ["/src", "/LICENSE*"] [dependencies] -bevy_renet = { git = "https://github.com/lucaspoffo/renet" } +bevy_renet = "0.0.9" bevy = { version = "0.11", default-features = false, features = ["bevy_scene"] } bincode = "1.3" serde = "1.0" diff --git a/examples/tic_tac_toe.rs b/examples/tic_tac_toe.rs index 73852eed..0ef86447 100644 --- a/examples/tic_tac_toe.rs +++ b/examples/tic_tac_toe.rs @@ -74,7 +74,7 @@ impl Plugin for TicTacToePlugin { Self::server_waiting_text_system.run_if(resource_added::()), Self::server_event_system.run_if(resource_exists::()), Self::start_game_system - .run_if(client_connected) + .run_if(client_connected()) .run_if(any_component_added::()), // Wait until client replicates players before starting the game. ( Self::cell_interatction_system.run_if(local_player_turn()), diff --git a/src/client.rs b/src/client.rs index aadb3d2c..fc15b724 100644 --- a/src/client.rs +++ b/src/client.rs @@ -30,7 +30,7 @@ impl Plugin for ClientPlugin { Self::tick_ack_sending_system, ) .chain() - .run_if(client_connected), + .run_if(client_connected()), ); } } diff --git a/src/network_event/client_event.rs b/src/network_event/client_event.rs index d75ebe0c..a926d046 100644 --- a/src/network_event/client_event.rs +++ b/src/network_event/client_event.rs @@ -136,7 +136,7 @@ impl ClientEventAppExt for App { ( sending_system .in_set(ServerSet::SendEvents) - .run_if(client_connected), + .run_if(client_connected()), local_resending_system::.run_if(has_authority()), receiving_system .in_set(ServerSet::ReceiveEvents) diff --git a/src/network_event/server_event.rs b/src/network_event/server_event.rs index 7e6374ef..728d7903 100644 --- a/src/network_event/server_event.rs +++ b/src/network_event/server_event.rs @@ -144,7 +144,7 @@ impl ServerEventAppExt for App { .in_set(ServerSet::Tick), receiving_system .in_set(ServerSet::ReceiveEvents) - .run_if(client_connected), + .run_if(client_connected()), ), );