2013-02-20 18 views
3

对于那些不知情的人,Spaceteam是一款非常流行和非常有趣的iOS多人游戏。Spaceteam如何工作?

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

是否有已发布的库来描述如何在ad-hoc网络库上构建协议?它是特定于iOS还是可以在不同平台上构建各种应用程序?

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

+0

它当然不会是操作系统特定的。网络分层的方式是所有设备都使用相同的基础协议。例如,所有设备都有一个IP地址,可用于彼此通话。 – 2013-02-20 01:22:32

+0

这个游戏有没有机会使用'alljoyn' api? https://www.alljoyn.org/ – 2013-09-20 08:01:43

+0

Spaceteam开发者已经撰写了[详细介绍游戏网络的博客文章](http://www.sleepingbeastgames.com/blog/the-spaceteam-networking-post/)。 – neillb 2016-03-23 16:21:19

回答

3

具体您对哪方面感兴趣?对于移动设备或特别的 Wi-Fi网络(ad hoc网络除外,并非所有设备都可能能够彼此通信,因此一些网状网络可以帮助但不必要地使得对于正常情况)。

我会先回答更广泛的问题,因为它更有趣。根据我的经验,有几个主要注意事项:

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

而现在,看着Spaceteam拖车后:

我不知道它是如何工作的,因为我还没有逆向工程的协议。然而,这是非常简单,使一些作品不够好

  • 使用某种P2P发现的找到播放器(如卓悦,应该有大量的文档和样品在那里)。
  • 与同伴沟通。我已经使用GameKit大约iOS 3/4(我不确定它是否仍然可以通过Wi-Fi工作)完成此操作。
  • 选一个主人。这可以像那样简单,只要按下“就绪”最后的尝试成为主人。在某些边缘情况下,您可能需要处理失败。
  • 让主人决定一切。 Spaceteam是而不是延迟敏感; Wi-Fi延迟最多只有几毫秒,没有人真的会注意到,如果一个设备比100 ms慢(只要UI响应足够快)。
+0

此评论可能相当晚,但您是否有关于无缝蓝牙集成如何工作的信息? Spaceteam不需要任何形式的配对,这是一种很好的做事方式。 – Vexir 2015-12-03 03:00:27