[][src]Crate laminar

Laminar is a semi-reliable UDP-based protocol for multiplayer games. This library implements wrappers around the UDP-protocol, and provides a lightweight, message-based interface which provides certain guarantees like reliability and ordering.

Laminar was designed to be used within the Amethyst game engine but is usable without it.


This library is loosely based off of Gaffer on Games and has features similar to RakNet, Steam Socket, and netcode.io. The idea is to provide a native Rust low-level UDP-protocol which supports the use of cases of video games that require multiplayer features. The library itself provides a few low-level types of packets that provide different types of guarantees. The most basic are unreliable and reliable packets. Ordering, sequencing can be done on multiple streams. For more information, read the projects README.md, book, docs or examples.



Contains the configuration options to configure laminar for special use-cases.


Network simulator. Used to simulate network conditions as dropped packets and packet delays. For use in Socket::set_link_conditioner.


This is a user friendly packet containing the payload, endpoint, and reliability guarantees. A packet could have reliability guarantees to specify how it should be delivered and processed.


A reliable UDP socket implementation with configurable reliability and ordering guarantees.



Enum to specify how a packet should be delivered.


Enum with all possible network errors that could occur.


Enum to specify how a packet should be arranged.


Events that can occur in laminar and that will be pushed through the event_receiver returned by Socket::bind.

Type Definitions


Wrapped result type for Laminar errors.