我制作了一个简单的游戏,使用GKSession从GameKit连接到其他同行。设置起来很容易,但我发现了一些问题:
我在文档中找不到任何关于如何对时间进行渲染的东西。问题是,开始游戏的“主人”码头会立即开始播放音乐,然后所有其他码头的人都会在稍晚一点才收到消息,因此在延迟后开始播放。
然后,我试图延迟播放游戏音乐后,发送开始信息给所有码头,但有时延迟较低或更高,我只是无法得到一个良好的可靠同步。
是否有一个开放源码框架,使对等同步和时钟同步在iOS上更可靠和更容易使用?
发布于 2012-12-05 01:54:55
不幸的是,你在这里受到了巨大的伤害。在网络接口上进行精确的时钟同步是非常困难的。你需要你的设备同步到20毫秒以内。
我建议这样做:每隔50 at发送一串ping数据包,使客户端立即响应。取其平均值给出平均往返时间(RTT),然后将其减半以估计单程延迟。然后发送你的‘开始时钟’信息,并在一个循环中旋转,直到你已经等待你的单向延迟,并开始在你的一端播放音乐。客户应在收到“启动时钟”后立即播放其音乐。
这里有一个更健壮的长期同步解决方案:Protocol。
https://stackoverflow.com/questions/13440064
复制相似问题