gpt4 book ai didi

ios - 使用 GKSession 进行点对点时如何获得精确的时钟同步?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:12:55 25 4
gpt4 key购买 nike

我制作了一个简单的游戏,它使用 GameKit 中的 GKSession 连接到其他点。设置起来很容易,但我发现了一些问题:

  • 延迟变化很大。有时消息会立即到达其他设备。有时,向其他对等方发送数据的延迟 > 1 秒。数据只是一个包含 10 个字符的字符串。

  • 我的游戏依赖于精确的时钟同步。游戏会播放音乐,但在所有连接的设备上不同时开始播放时听起来很奇怪。

我在文档中找不到任何关于如何同步计时的内容。问题在于启动游戏的“主”码头立即开始播放音乐,然后所有其他码头稍后收到消息并因此延迟后开始播放。

然后我尝试在向所有码头发送开始消息后延迟播放游戏音乐,但有时延迟或高或低,我无法获得可靠的同步。

是否有开源框架使点对点和时钟同步在 iOS 上更可靠且更易于使用?

最佳答案

不幸的是,您正处在一个充满伤害的世界中。很难通过网络接口(interface)进行精确的时钟同步。您需要在此处将您的设备同步到 20 毫秒以内。

我会建议执行以下操作:以 50 毫秒的间隔发送一堆 ping 数据包,让客户端立即响应。取其平均值得到平均往返时间 (RTT),然后将其减半以估算单向延迟。然后发送您的“开始时钟”消息并循环旋转,直到您等待单向延迟并开始播放您这边的音乐。客户端应在收到“开始时钟”后立即播放音乐。

这里列出了一个更强大的长期同步解决方案:http://en.wikipedia.org/wiki/Precision_Time_Protocol

关于ios - 使用 GKSession 进行点对点时如何获得精确的时钟同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13440064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com