Bevy Client Server Events
Simple event-based client-server networking library for Bevy.
Easily send bevy events to/from a client/server without worrying about serialization or network transport details.
Builds off of the renet/bevy_renet library and attempts to simplify the configuration and management of types to be sent through a network.
Goals:
- Simplified network setup and configuration
- Easily send any types to/from a client/server
Todo:
- Support secure authentication
Examples
See the examples/ping.rs file for a simple ping-pong example.
In one terminal session, start the server: cargo run --example ping -- -s
In another terminal session, connect with a client: cargo run --example ping
With the client window in focus, hit ENTER to send a Ping. The server will respond with a Pong.
Overview
In this example, we want to send a Ping event to the server and receive a Pong event in return.
;
;
As of version 0.4, the Event, Encode, and Decode derives are required.
When setting up our App, we need to feed it to a macro and provide all the events to be sent over the network.
You can provide type-specific network configuration, such as reliability, resend time, max memory usage, etc.
The macro should be run regardless of whether this instance will be a server or a client.
You can choose to start a server instance or connect to a server as a client using events.
Then you can send/receive events as desired.
You can also broadcast a message to all clients using EventWriter<SendToClients<T>>.
Networking errors can be handled via EventReader<NetcodeTransportError>.
Bevy Compatibility
| bevy | bevy_client_server_events |
|---|---|
| 0.11 | 0.4.1 |