Bevy Renet

Latest version Documentation MIT Apache

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

```rust let mut app = App::new(); app.add_plugin(RenetServerPlugin);

let server = RenetServer::new(...); app.insert_resource(server);

app.addsystem(sendmessagesystem); app.addsystem(receivemessagesystem); app.addsystem(handleevents_system);

// Systems

fn sendmessagesystem(mut server: ResMut) { let channelid = 0; // Send a text message for all clients server.broadcastmessage(channelid, "server message".asbytes().to_vec()); }

fn receivemessagesystem(mut server: ResMut) { let channelid = 0; // Send a text message for all clients for clientid in server.clientsid().intoiter() { while let Some(message) = server.receivemessage(clientid, channel_id) { // Handle received message } } }

fn handleeventssystem(mut serverevents: EventReader) { while let Some(event) = server.getevent() { for event in serverevents.iter() { match event { ServerEvent::ClientConnected(id, userdata) => { println!("Client {} connected", id); } ServerEvent::ClientDisconnected(id) => { println!("Client {} disconnected", id); } } } } ```

Client

```rust let mut app = App::new(); app.add_plugin(RenetClientPlugin);

let client = RenetClient::new(...); app.insert_resource(client);

app.addsystem(sendmessagesystem); app.addsystem(receivemessagesystem);

// Systems

fn sendmessagesystem(mut client: ResMut) { let channelid = 0; // Send a text message to the server client.sendmessage(channelid, "server message".asbytes().to_vec()); }

fn receivemessagesystem(mut client: ResMut) { let channelid = 0; while let Some(message) = client.receivemessage(channel_id) { // Handle received message } } ```

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|