GameNetworkingSockets icon indicating copy to clipboard operation
GameNetworkingSockets copied to clipboard

Unreliable sequenced delivery

Open nxrighthere opened this issue 5 years ago • 2 comments

I was about to integrate the library into NetDynamics for tests, but unreliable sequenced message delivery is not supported unlike in other modern network transports. It solves a vector of design and gameplay problems in practice where a developer doesn't need a manual frame buffering and sequence tracking, but still needs a properly sequenced logic, so from my point of view this delivery type should be available.

nxrighthere avatar May 27 '19 12:05 nxrighthere

What exactly are the proposed semantics? What constraints are placed on allowed delivery sequences with this type of message and ordinary unreliable and reliable messages?

zpostfacto avatar May 27 '19 14:05 zpostfacto

What exactly are the proposed semantics?

A guarantee that no message with a higher sequence number will be delivered before a message with a lower sequence number, thus ensuring messages are delivered exactly in the order they are sent. Simply discard the lower sequence number message if a message with a higher sequence number has already been delivered.

What constraints are placed on allowed delivery sequences with this type of message and ordinary unreliable and reliable messages?

Kind of head-of-line blocking, but it can be solved by implementing the independently sequenced channels that are logically separated from each other (see SCTP or ENet). Channels not tied on any delivery type, delivery is specified per message basis, so channels reduce latency and ordering restrictions.

nxrighthere avatar May 27 '19 15:05 nxrighthere