我开始制作多人游戏,但由于我没有经验,我尝试过不同的方式,但有些东西对我来说并不合适。 所以,我真的需要一个关于我应该使用哪种平台/工具/语言/技术的建议。 我必须说我不相信诸如:Photon,AppWrap,Skiller,Gamooga等等。我不认为他们的规模很大,不会太贵,或者他们太大(我不是指大小,我指的是他们有多少东西,我不需要)满足我的需求。构建基于回合的多人游戏服务器
首先,我将描述简化的游戏会话过程。
- 三名球员在开始游戏会话
- 每个玩家收到的问题,应该在10秒钟内应答。
- 当玩家回答时,他应该能够看到任何其他玩家已经给出的答案(如果有的话),并且他应该能够在给出答案时立即看到答案。基本上,任何答案都应该由其他客户实时接收,但只有在我们回答之后(以避免作弊)。如果时间到了,那么没有回答的人将不会收到分数,下一个问题就会发生。
- 决定胜利者并进入下一个问题。 N轮结束后进行游戏。
其次,我会解释一些我考虑过的要求。
- 游戏应该在iOS/Android/Web上运行。这让我别无选择,只能使它基于HTTP。
- 我寻找了我真正喜欢的Google Cloud Endpoints。它有iOS/Android/JS SDK,Google Cloud Platform有Google BigQuery,还有很多其他很棒的东西。 但,因为我需要实时答案交付我不知道是否适合(有渠道API,但没有客户端SDK的iOS和人们说它不是很好)。
- 然后我查找Node.js和长轮询(客户端的AFNetworking),但它很难管理。我需要为客户端提供游戏状态更新(并且我需要发送增量)。这样我需要为每个玩家分别跟踪所有更改。当玩家连接时,我应该检查是否有任何改变;如果它立即发送;如果不是,那么听'改变'事件然后发送。在最后的代码看起来很尴尬,很难理解,我不知道如何做正确的。有socket.io应该使服务器端的东西变得更好,但又没有客户端的iOS SDK。
我不知道该从哪里出发。任何帮助将非常感激。
>您可以在客户端有一个预测计时器,但服务器需要是计时器的权限以避免作弊。但如果一个客户端有70毫秒的延迟,而其他客户端有500毫秒的话。这意味着首先会处于劣势。有什么方法可以解决这个问题,而且不允许作弊吗? – bobby 2013-05-12 16:41:21
没有优势,如果不使用预测,游戏UI可能需要一点时间才能指示会话结束,但服务器在计时器结束后将忽略任何答案。您的互联网可能会非常缓慢,以致您的答案在计时器用完之前可能无法进入,但您必须考虑到某个地方的滞后时间。如果定时器在客户端上,则很容易破解。 – 2013-05-12 17:09:40
啊,对不起,我忘了说。问题的答案是数字。有三名球员,并根据他们的答案每个将获得第一,第二或第三名。如果没有人是正确的,那么第一名会得到那个答案与最接近的答案。如果没有最接近的答案,那么第一名将获得首先回答的玩家。所以,在这种情况下,延迟较小的玩家会占据优势,对吧? – bobby 2013-05-12 20:58:08