Bevy Renet

A Bevy Plugin for the renet crate.
A network crate for Server/Client with cryptographically secure authentication and encypted packets.
Designed for fast paced competitive multiplayer games.
Usage
Bevy renet is a small layer over the renet crate, it adds systems to call the client/server updateand send_packets. RenetClient and RenetServer need to be added as a resource, so the setup is similar to renet itself:
Server
let mut app = App::new();
app.add_plugin(RenetServerPlugin);
let server = RenetServer::new(...);
app.insert_resource(server);
app.add_system(send_message_system);
app.add_system(receive_message_system);
app.add_system(handle_events_system);
fn send_message_system(mut server: ResMut<RenetServer>) {
let channel_id = 0;
server.broadcast_message(channel_id, "server message".as_bytes().to_vec());
}
fn receive_message_system(mut server: ResMut<RenetServer>) {
let channel_id = 0;
for client_id in server.clients_id().into_iter() {
while let Some(message) = server.receive_message(client_id, channel_id) {
}
}
}
fn handle_events_system(mut server_events: EventReader<ServerEvent>) {
while let Some(event) = server.get_event() {
for event in server_events.iter() {
match event {
ServerEvent::ClientConnected(id, user_data) => {
println!("Client {} connected", id);
}
ServerEvent::ClientDisconnected(id) => {
println!("Client {} disconnected", id);
}
}
}
}
Client
let mut app = App::new();
app.add_plugin(RenetClientPlugin);
let client = RenetClient::new(...);
app.insert_resource(client);
app.add_system(send_message_system);
app.add_system(receive_message_system);
fn send_message_system(mut client: ResMut<RenetClient>) {
let channel_id = 0;
client.send_message(channel_id, "server message".as_bytes().to_vec());
}
fn receive_message_system(mut client: ResMut<RenetClient>) {
let channel_id = 0;
while let Some(message) = client.receive_message(channel_id) {
}
}
Example
You can run the simple example with:
- Server:
cargo run --example simple -- server
- Client:
cargo run --example simple -- client
If you want a more complex example you can checkout the demo_bevy sample:
Bevy Demo.webm
Bevy Compatibility
| bevy |
bevy_renet |
| 0.8 |
0.0.5 |
| 0.7 |
0.0.4 |