gpt4 book ai didi

ios - Spaceteam 如何运作?

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

对于那些不知情的人,Spaceteam是一款非常流行且非常有趣的 iOS 多人游戏。

它允许在临时 Wifi 网络上的多个设备之间进行实时游戏 - 它是如何做到这一点的?

是否有已发布的库描述如何在临时网络库之上构建协议(protocol)?它是特定于 iOS 的,还是可以跨不同平台构建各种应用程序?

快点,在我们撞上小行星之前回答!

最佳答案

具体你对哪方面感兴趣?移动设备或 ad hoc Wi-Fi 网络没有什么特别之处(ad hoc 网络除外,并非所有设备都可以相互通信,因此一些网状网络可以提供帮助,但在正常情况下会不必要地使事情复杂化。

我会先回答更广泛的问题,因为它更有趣。根据我的经验,有几个主要的考虑因素:

  • 服务器/客户端还是点对点?我的意思是是否有一个“主人”决定世界的真实状态并将其传达给所有客户端。 Avara是我所知道的唯一一款从这个意义上说是“点对点”的游戏(点对点向所有其他点发送命令;事实证明,这对于调制解调器用户在 6 人游戏中的带宽占用很大)。我不知道有游戏使用更复杂的网络拓扑来传达游戏状态(例如,只向每个 LAN 上的一个客户端发送数据)。
  • 您如何处理延迟?Avara 是我所知道的唯一一款在“延迟容忍度”方面落后于每个人的游戏,以便获得一致的状态世界,如果有人在调制解调器上,那就太糟糕了(关闭压缩有很大帮助)。有多种方法可以进行“延迟补偿”(例如 Half-Life/CS),其中一些方法也适用于点对点游戏。
  • 时间同步?对于客户端-服务器游戏,您至少需要担心 RTT 的变化。对于点对点游戏,我认为您还想就最大限度减少有效最大延迟的时间安排达成一致。
  • 如果客户不同意世界的状态怎么办?Avara 只是让同行决定他们自己的世界状态(如果它感觉到不匹配,则显示“检测到现实碎片”,这可能会发生由于丢包或“延迟容忍度”太低)。
  • 如果玩家离开怎么办?对于 P2P 游戏,您可能必须就一致的游戏状态达成一致(例如,如果玩家在向其他玩家的子集发送命令后断开连接)。对于客户端-服务器游戏,您可能必须选出一个新的主人。

现在,看完 Spaceteam 预告片后:

我不知道它是如何工作的,因为我没有对协议(protocol)进行逆向工程。但是,要足够好制作一些东西非常简单:

  • 使用某种 P2P 发现来寻找播放器(例如 Bonjour;那里应该有很多文档和示例)。
  • 与同行交流。我在 iOS 3/4 左右使用 GameKit 完成了此操作(我不确定它是否仍然可以通过 Wi-Fi 工作)。
  • 选出一位大师。这可以很简单,谁最后按“就绪”就试图成为主人。在某些极端情况下,您可能必须处理失败。
  • 让主人决定一切。 Spaceteam 对延迟敏感; Wi-Fi 延迟往往最多只有几毫秒,没有人会真正注意到一台设备是否慢了 100 毫秒(只要 UI 响应速度足够快)。

关于ios - Spaceteam 如何运作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14970637/

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