Is the GameKit's communication reliable with GKMatchSendDataReliable? Is the GameKit's communication reliable with GKMatchSendDataReliable? objective-c objective-c

Is the GameKit's communication reliable with GKMatchSendDataReliable?


My users also complain that some data may be accidentally lost during the game. I wrote a test app and figured out that GKMatchSendDataReliable is not really reliable. On weak internet connection (e.g. EDGE) some packets are regularly lost without any error from the Game Center API.

So the only option is to add an extra transport layer for truly reliable delivery.

I wrote a simple lib for this purpose: RoUTP. It saves all sent messages until acknowledgement for each received, resends lost and buffers received messages in case of broken sequence.In my tests combination "RoUTP + GKMatchSendDataUnreliable" works even beter than "RoUTP + GKMatchSendDataReliable" (and of course better than pure GKMatchSendDataReliable which is not really reliable).


It nearly 100% reliable but maybe not what you need sometimes… For example you dropped out of network all the stuff that you send via GKMatchSendDataReliable will be sent in the order you've send them. This is brilliant for turn-based games for example, but if fast reaction is necessary a dropout of the network would not just forget the missed packages he would get all the now late packages till he gets to realtime again.

The case GKMatchSendDataReliable doesn't send the data is a connection time out. I think this would be also the case when you close the app