Laminar has the option for you to choose different reliabilities. This is a very important concept which could be at first sight difficult but which will be very handy later on.
As you know we have two opposites, TCP on one hand and UDP on the other.
TCP has a lot of feature UDP does not have, like shown below.
- Guarantee of delivery.
- Guarantee for order.
- Packets will not be dropped.
- Duplication not possible.
- Automatic fragmentation
- No guarantee for delivery.
- No guarantee for order.
- No way of getting dropped packets.
- Duplication possible.
- No fragmentation
So handy would be if you somehow could specify which features you want on top of UDP. You could say for example I want the guarantee for my packets to arrive, however, they don’t need to be in order.
Laminar supports three types of reliabilities:
Like TCP we can guarantee all packets send will be arrived. This is handy when you want to send packets that really matters like a building command. If we send packets in order 1,2,3,4,5,6 we get: 1,2,3,4,5,6.
Sequenced means that we only want the newest packets. If packets arrive in order: 1,2,5,4,6,3 we get: 1,2,5,6. This is handy for things like position updates. We don’t care about old locations something was at.
Like UDP packets can be dropped, duplicated or arrive without order. If we send packets in order 1,2,3,4,5,6 we get: 1,3,4,6,2,5 (extreme example though).
Some examples of reliabilities we want to support:
|Reliability Type||Packet Drop||Packet Duplication||Packet Order||Packet Fragmentation||Packet Delivery|
Note: that not all types are supported yet, currently only Unreliable Unordered and Reliable Unordered is supported. There is a PR about sequenced packets.