Crate in development, not stable/secure for production usage!
lyanne
Efficient, tick-oriented communication framework for server-client architectures.
- ✅ Flexible Runtimes: Choose between
rt_async_executor,rt_async_std,rt_bevy,rt_smolorrt_tokioruntime environments for seamless integration with your ecosystem. - ✅ Custom Serialization: Use the
sd_bincodefeature for efficient packet serialization and deserialization. - ❗ Cryptography: Secure your communication with the
auth_tlsfeature using rustls for TLS encryption, or opt forauth_tcpwith a reverse proxy like NGINX for encrypted TCP communication. WARNING: Further testing is required to validate the security of authenticators. - ✅ Tick-Based Synchronization: Optimized for round-trip (tick) oriented communication, ensuring precise timing and synchronization.
- ✅ Guaranteed Message Ordering: Maintain strict message order with built-in sequencing mechanisms.
- ✅ Zero Packet Loss: Ensure reliable data transmission with lossless packet delivery.
- ✅ Low Latency: Achieve minimal message latency using UDP communication.
- ✅ IP Agnostic: Support for scenarios where IP addresses can be ignored.
- ✅ Granular Authentication: Tailor client authentication with fine-grained control over connection acceptance based on specific criteria.
- ✅ Throttled Communication: Limit and control the flow of communication to meet your application's needs.
- ✅ Async Performance: Handle intensive tasks efficiently with asynchronous processing.
- ✅ Synchronous Control: Manage operations, such as packet sending and tick handling, without relying on asynchronous code.
- ❌ No Automatic ECS Replication: Entity Component System (ECS) replication is not automated.
- ❌ No WASM Support: WebAssembly (WASM) not yet available.
Examples
Adding lyanne dependency in server:
[]
= { = "0.4", = [
"rt_smol", # We need one runtime.
"sd_bincode", # Serde + Bincode will help our packet serialization/deserialization.
"server", # Server exclusive feature.
] }
# Our runtime.
= "^2.0.0"
# Our serializer.
= { = "^1.0.0", = ["derive"] }
= "^1.0.0"
Adding lyanne dependency in client:
[]
= { = "0.4", = [
# ...
"client", # Same as the server, but using "client" instead of "server".
] }
Creating packets with sd_bincode:
use Packet;
use ;
Sending packet to clients:
use ;
use crateMessagePacket;
Sending packet to server:
use ;
use crateMessagePacket;
See more complete examples in examples folder, and in crate documentation.