2

首先,我承认我没有在代码中尝试过这个,所以我很抱歉,如果这是跳枪。我意识到足够的努力和研究是发布好问题的先决条件。但是在阅读了 GameKit 和 Game Center 文档,以及 iOS 开发者食谱之后,我似乎无法在 GameKit 中找到正确的功能,并且想知道如何在 API 之外冒险来解决这个问题。

在最简单的层面上,我想实现一个限时的两人游戏,在一个玩家意外或恶意断开连接后不会关闭(我目前不区分,不知道我在技术上是否可以)。本质上,一旦进行了一场比赛,两人的比赛开始了,我希望比赛一直持续到一名球员获胜,或者比赛时间(比如 10 分钟)到期。

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

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

4

2 回答 2

0

您是否考虑过带有超时的回合制比赛?如果远程玩家没有响应(超时)控制可以返回到前一个玩家,然后可以在必要时进行中间随机移动。例如,在 WWDC 2013 会议视频中讨论了类似场景的超时应用。

于 2013-10-18T12:32:38.800 回答
0

如果您还实现了用户可以在本地与计算机玩家一起开始游戏的模式,那么将任何超时的 GameCenter 游戏重新加载为针对 UI 的本地游戏将是微不足道的。

我的假设是,一旦您使用 AI 实现了本地游戏,每次玩家行动时,您都会在本地保存回合。此外,我假设您将对两种类型的游戏使用相同的数据格式(可能会更改为“计算机播放器”而不是“远程播放器”)。

当 GC 播放器超时时,您编写游戏代码以将一种类型的播放器换成另一种类型的播放器。在 GC 中注册为获胜/超时,并允许玩家继续使用本地/AI 玩家。

于 2018-12-27T11:04:40.083 回答