Skip to content

Commit 76c3948

Browse files
committed
Merge remote-tracking branch 'origin/master' into 0.14.0-rc
2 parents fe995bc + b3f1505 commit 76c3948

8 files changed

Lines changed: 52 additions & 22 deletions

File tree

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.26.3] - 2024-06-09
11+
12+
### Added
13+
14+
- Logging for sending and receiving messages.
15+
16+
### Changed
17+
18+
- Do not send empty ack messages from client.
19+
1020
## [0.27.0-rc.1] - 2024-06-07
1121

1222
### Changed
@@ -516,6 +526,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
516526
Initial release after separation from [Project Harmonia](https://github.com/projectharmonia/project_harmonia).
517527

518528
[unreleased]: https://github.com/projectharmonia/bevy_replicon/compare/v0.27.0-rc.1...HEAD
529+
[0.26.3]: https://github.com/projectharmonia/bevy_replicon/compare/v0.26.2...v0.26.3
519530
[0.27.0-rc.1]: https://github.com/projectharmonia/bevy_replicon/compare/v0.26.2...v0.27.0-rc.1
520531
[0.26.2]: https://github.com/projectharmonia/bevy_replicon/compare/v0.26.1...v0.26.2
521532
[0.26.1]: https://github.com/projectharmonia/bevy_replicon/compare/v0.26.0...v0.26.1

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ See also [What kind of networking should X game use?](https://github.com/bevyeng
3939

4040
Check out the [quick start guide](https://docs.rs/bevy_replicon).
4141

42-
See also [examples](bevy_replicon_renet/examples) with [`bevy_replicon_renet`](bevy_replicon_renet) as a messaging backed.
42+
See also [examples](bevy_replicon_renet/examples) with [`bevy_replicon_renet`](bevy_replicon_renet) as a messaging backend.
4343

4444
Have any questions? Feel free to ask in the dedicated [`bevy_replicon` channel](https://discord.com/channels/691052431525675048/1090432346907492443) in Bevy's Discord server.
4545

bevy_replicon_renet/examples/simple_box.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,13 @@ impl SimpleBoxPlugin {
8989
});
9090

9191
let current_time = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH)?;
92-
let public_addr = SocketAddr::new(Ipv4Addr::LOCALHOST.into(), port);
93-
let socket = UdpSocket::bind(public_addr)?;
92+
let socket = UdpSocket::bind((Ipv4Addr::UNSPECIFIED, port))?;
9493
let server_config = ServerConfig {
9594
current_time,
9695
max_clients: 10,
9796
protocol_id: PROTOCOL_ID,
9897
authentication: ServerAuthentication::Unsecure,
99-
public_addresses: vec![public_addr],
98+
public_addresses: Default::default(),
10099
};
101100
let transport = NetcodeServerTransport::new(server_config, socket)?;
102101

@@ -130,7 +129,7 @@ impl SimpleBoxPlugin {
130129
let current_time = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH)?;
131130
let client_id = current_time.as_millis() as u64;
132131
let server_addr = SocketAddr::new(ip, port);
133-
let socket = UdpSocket::bind((ip, 0))?;
132+
let socket = UdpSocket::bind((Ipv4Addr::UNSPECIFIED, 0))?;
134133
let authentication = ClientAuthentication::Unsecure {
135134
client_id,
136135
protocol_id: PROTOCOL_ID,

bevy_replicon_renet/examples/tic_tac_toe.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -262,14 +262,13 @@ impl TicTacToePlugin {
262262
});
263263

264264
let current_time = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH)?;
265-
let public_addr = SocketAddr::new(Ipv4Addr::LOCALHOST.into(), port);
266-
let socket = UdpSocket::bind(public_addr)?;
265+
let socket = UdpSocket::bind((Ipv4Addr::UNSPECIFIED, port))?;
267266
let server_config = ServerConfig {
268267
current_time,
269268
max_clients: 1,
270269
protocol_id: PROTOCOL_ID,
271270
authentication: ServerAuthentication::Unsecure,
272-
public_addresses: vec![public_addr],
271+
public_addresses: Default::default(),
273272
};
274273
let transport = NetcodeServerTransport::new(server_config, socket)?;
275274

@@ -290,7 +289,7 @@ impl TicTacToePlugin {
290289
let current_time = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH)?;
291290
let client_id = current_time.as_millis() as u64;
292291
let server_addr = SocketAddr::new(ip, port);
293-
let socket = UdpSocket::bind((ip, 0))?;
292+
let socket = UdpSocket::bind((Ipv4Addr::UNSPECIFIED, 0))?;
294293
let authentication = ClientAuthentication::Unsecure {
295294
client_id,
296295
protocol_id: PROTOCOL_ID,

src/client.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -156,12 +156,14 @@ fn apply_replication(
156156
// (unless user requested history via marker).
157157
let init_tick = *world.resource::<ServerInitTick>();
158158
let acks_size = mem::size_of::<u16>() * client.received_count(ReplicationChannel::Update);
159-
let mut acks = Vec::with_capacity(acks_size);
160-
for message in client.receive(ReplicationChannel::Update) {
161-
let update_index = read_update_message(params, buffered_updates, message)?;
162-
bincode::serialize_into(&mut acks, &update_index)?;
159+
if acks_size != 0 {
160+
let mut acks = Vec::with_capacity(acks_size);
161+
for message in client.receive(ReplicationChannel::Update) {
162+
let update_index = read_update_message(params, buffered_updates, message)?;
163+
bincode::serialize_into(&mut acks, &update_index)?;
164+
}
165+
client.send(ReplicationChannel::Init, acks);
163166
}
164-
client.send(ReplicationChannel::Init, acks);
165167

166168
apply_update_messages(world, params, buffered_updates, init_tick)
167169
}

src/client/replicon_client.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ impl RepliconClient {
6363
.get_mut(channel_id as usize)
6464
.unwrap_or_else(|| panic!("client should have a receive channel with id {channel_id}"));
6565

66+
trace!(
67+
"received {} message(s) from channel {channel_id}",
68+
channel_messages.len()
69+
);
70+
6671
channel_messages.drain(..)
6772
}
6873

@@ -73,7 +78,12 @@ impl RepliconClient {
7378
return;
7479
}
7580

76-
self.sent_messages.push((channel_id.into(), message.into()));
81+
let channel_id: u8 = channel_id.into();
82+
let message: Bytes = message.into();
83+
84+
trace!("sending {} bytes over channel {channel_id}", message.len());
85+
86+
self.sent_messages.push((channel_id, message));
7787
}
7888

7989
/// Sets the client connection status.

src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ fn send_events(mut dummy_events: EventWriter<DummyEvent>) {
279279
dummy_events.send_default();
280280
}
281281
282-
/// Receives event on server and single-player.
282+
/// Receives events on server or single-player.
283283
fn receive_events(mut dummy_events: EventReader<FromClient<DummyEvent>>) {
284284
for FromClient { client_id, event } in dummy_events.read() {
285285
info!("received event {event:?} from {client_id:?}");
@@ -338,7 +338,7 @@ from the send list):
338338
# let mut app = App::new();
339339
# app.add_plugins(RepliconPlugins);
340340
app.add_server_event::<DummyEvent>(ChannelKind::Ordered)
341-
.add_systems(Update, (send_events, receive_events.run_if(has_authority)));
341+
.add_systems(Update, (send_events.run_if(has_authority), receive_events));
342342
343343
/// Sends an event from server or single-player.
344344
fn send_events(mut dummy_events: EventWriter<ToClients<DummyEvent>>) {
@@ -348,7 +348,7 @@ fn send_events(mut dummy_events: EventWriter<ToClients<DummyEvent>>) {
348348
});
349349
}
350350
351-
/// Receives event on client and single-player.
351+
/// Receives events on client or listen server.
352352
fn receive_events(mut dummy_events: EventReader<DummyEvent>) {
353353
for event in dummy_events.read() {
354354
info!("received event {event:?} from server");

src/server/replicon_server.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,17 @@ impl RepliconServer {
5656
}
5757

5858
let channel_id = channel_id.into();
59-
let receive_channel = self
59+
let channel_messages = self
6060
.received_messages
6161
.get_mut(channel_id as usize)
6262
.unwrap_or_else(|| panic!("server should have a receive channel with id {channel_id}"));
6363

64-
receive_channel.drain(..)
64+
trace!(
65+
"received {} message(s) from channel {channel_id}",
66+
channel_messages.len()
67+
);
68+
69+
channel_messages.drain(..)
6570
}
6671

6772
/// Sends a message to a client over a channel.
@@ -76,8 +81,12 @@ impl RepliconServer {
7681
return;
7782
}
7883

79-
self.sent_messages
80-
.push((client_id, channel_id.into(), message.into()));
84+
let channel_id: u8 = channel_id.into();
85+
let message: Bytes = message.into();
86+
87+
trace!("sending {} bytes over channel {channel_id}", message.len());
88+
89+
self.sent_messages.push((client_id, channel_id, message));
8190
}
8291

8392
/// Marks the server as running or stopped.

0 commit comments

Comments
 (0)