首先,我将承认我没有在代码中尝试过此操作,因此,如果这没有成功,我深表歉意。我意识到充分的努力和研究是发布好问题的前提。但是,在阅读完GameKit和Game Center文档以及iOS开发者食谱之后,我似乎在GameKit中找不到正确的功能,并且想知道如何在API之外尝试解决这个问题。

在最简单的层次上,我想实现一个有时间限制的两人游戏,该游戏在一个玩家偶然或恶意断开连接后不会关闭(我目前没有区别,也不知道我在技术上能否做到)。本质上,一旦进行了一场比赛,并且开始了两人比赛,我希望比赛继续进行,直到一名球员获胜,或者比赛时间(例如10分钟)到期为止。

我想建议的事情是当一个玩家断开连接时如何保持比赛进行。 (当前,两个玩家同时并过早断开连接会导致比赛立即终止并且没有可见的结果,因此在那里没有问题。)如何设置iOS客户端以在用户断开连接时随机选择一个动作?我需要该程序在服务器上运行还是在两个iOS客户端上运行?是否最好在Objective-C中完成以匹配iOS应用程序,或者它应该是采用其他某种网络语言(例如PHP)的服务器端代码?是否有任何API可以很好地处理此行为?在每个回合中,就像剪刀石头布一样,玩家有​​1分钟的时间限制来选择进攻或防守等动作,并且如果计时器到期而没有选择,则计算机程序会为玩家随机选择一个动作。我想以同样的方式对待一个断线的球员:如果他或她没有与比赛连接以提供行动选择,那么计算机将在一分钟结束时为他或她随机地进行操作,例如如果他或她已连接。我这样保持在线比赛的目的是(a。)确保在输球前不久断开连接的玩家将被视为适当的输人;(b。)真诚在线的玩家将被视为应得的胜利,并且(c 。)意外或无意断开连接的玩家仍可以通过及时返回来挽救他们的比赛。我敢肯定,很多在线游戏都可以做到这一点,但是我只是没有找到合适的API或过去的iOS示例,也没有找到两个在iPhone上连接的播放器。 Game Center似乎放弃了比赛,或者在回合制游戏中,据我所知,没有一些可实施的回合计时器。在文档中,我没有找到一种方法来告诉谁断开了连接,并且在出现故障的情况下,也没有看到任何明显的方法使某些内容保持在线状态,但是计时器继续运行。对等中的所有内容似乎都模拟了一种客户端-服务器关系(一个客户端对等,一个服务器),在这种情况下,如果服务器单元断开连接,则比赛必须结束;如果断开连接的玩家重新连接,则比赛无法恢复。

简而言之,我不会反对代码解决方案,但是即使对于有关支持这种行为的框架的一些指针或建议,也将非常感谢。谢谢!

最佳答案

您是否考虑将turn-based matches与超时一起使用?如果远程播放器没有响应(超时),则控制权可以返回到先前的播放器,后者可以在必要时进行中间随机移动。类似情况下超时的应用例如在WWDC 2013 session 视频中进行了讨论。

08-04 15:29