问题标签 [gkturnbasedmatch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
92 浏览

objective-c - Game Center 回合制比赛。一场比赛中有多种类型的比赛?

我使用 Game Center 回合制比赛来扩展我的游戏。但是我的游戏有 4 种游戏模式,我想为所有人制作一个多人游戏模式。我已经成功创建了第一个模式,但是如果我尝试加载另一个 GKTurnBasedMatchMakerViewController,我会得到与第一个模式相同的匹配和相同的游戏。有没有办法在一场比赛中进行不同类型的比赛?

0 投票
1 回答
995 浏览

android - Google Play 游戏服务 Mutli player 未收到邀请

我目前正在开发基于回合的多人游戏,并为此使用 Google Play 游戏服务。所有设置都已完成。用户可以正常登录并选择要与之竞争的玩家。在用户按下播放按钮时选择后没有什么特别的事情发生。onActivityResult 显示已准备好受邀者列表,并根据定义的标准创建了匹配项。我通过日志检查。但在受邀者电话上,我从未收到任何邀请。我检查了模拟器(与 Android SDk 的默认模拟器相比,提供 Google Play 服务的 GenyMotion)和 2 部不同的 Android 手机,但无法收到邀请。我已经按照这里的建议进行了设置

https://developers.google.com/games/services/android/turnbasedMultiplayer

下面是我的代码。请任何人调查一下,让我知道问题出在哪里。

(PS 我还知道邀请是通过 Google Cloud Messaging 发送的,我在开发者控制台中为游戏启用了这项服务)

MultiPlayerInit.java

AndroidManifest.xml

0 投票
1 回答
354 浏览

ios - Game Center - 回合制游戏问题

我正在为 iOS 开发一款带有自定义界面的回合制游戏,我发现我的匹配界面存在一个非常奇怪的问题。以下代码用于显示活动匹配列表,我验证用户,然后获取匹配列表,最后一步是加载匹配,以便我可以显示所有信息。

当我构建应用程序时出现问题,转到配对视图控制器并将其放置 5 分钟;然后当我尝试删除匹配项时出现错误loadingMatchWithID:

代码每次都可以正常工作,删除,创建匹配,刷新,但是如果我将视图控制器单独放置 5 分钟,然后尝试删除,我会收到错误消息。奇怪的是,localPlayer 通过了身份验证测试,并正确加载了匹配数组,然后停止加载匹配。

发生另一件事,如果出现错误并且我按下主页按钮并打开应用程序,所有单词都会再次出现并且匹配正确加载。

我认为身份验证有问题,但错误在哪里?

更新:问题出现在 iOS7 中,但在 iOS6 中有效!

0 投票
1 回答
214 浏览

ios - 如何在显示 UI 之前等到 Game Center 比赛数据下载

我正在使用 Game Center 和GKTurnBasedMatch.

为了在我的根控制器的表格视图中显示游戏列表,我调用了以下方法:

我希望任务的顺序是:

1) 隐藏matchesTable并启动活动指示器
2) 调用loadMatchesWithCompletionHandler
3) 对于每场比赛,调用loadMatchDataWithCompletionHandler
4)[self processMatches]在每场比赛上调用
5) 将每场比赛放入相关数组
6) 停止活动指示器并显示matchesTable

但是,代码一直运行得如此之快,以至于在任何匹配数据有时间下载之前执行第 6 点,这意味着旧数据显示在我的表中。

所以我的大问题是:如何让程序等到每场比赛都下载了比赛数据,然后再继续执行其余的方法?(即在第 4 点后暂停,只有在每场比赛的比赛数据下载完成后才开始第 5 点)

0 投票
1 回答
64 浏览

ios - GKTurnBasedMatch 网络问题

我一直在尝试实施一种方法来通知我的应用何时与 Game Center 断开连接,因为在断开连接时结束一个回合会破坏应用程序。我刚开始在我的 iPad 上关闭 WiFi 进行测试,发现即使我完全退出应用程序,它也会自动验证我的播放器并将我登录到游戏中心。它甚至可以从最近的游戏中加载游戏数据。然后我尝试使用游戏中心应用程序本身,导致网络错误的唯一原因是单击“游戏”选项卡。显然,大部分数据都被缓存了,所以我不知道要检查什么来查看我是否已断开连接。

那么如何测试设备是否连接到游戏中心呢?比赛数据、参与者或他们的任何属性都不是零,并且玩家总是经过身份验证。

0 投票
0 回答
525 浏览

ios - GKAchievement reportAchievements 给出 NSIllegalArgumentException

我在 GKTurnBasedMatch 中实现了 GKAchievement,它最初是有效的。现在我在为其他玩家报告成就时收到此错误。有趣的是,相同的代码将成就奖励给本地玩家

这是我用于报告 GKAchievement 的代码

这是结束 GKTurnBasedMatch 的代码

在这方面帮助我。
谢谢。

0 投票
1 回答
257 浏览

ios - 当参与者QuitOutOfTurnWithOutcome 时正确的 GKTurnBasedMatch 比赛结束

在我的回合制比赛中,当一名不按顺序的玩家退出比赛时,我无法干净利落地结束比赛。我相信这会阻止我重新开始比赛。

这是我观察到的。当我从玩家 1 设备的 GKTurnBasedMatchmakerViewController 中查看该游戏的已完成游戏状态时,显示玩家 1 的比赛结果为 Quit,玩家 2 的比赛结果为“轮到此玩家”。但是,如果我从玩家 2 设备的 GKTurnBasedMatchmakerViewController 中查看该游戏的已完成游戏状态,则显示玩家 1 的比赛结果是 Quit,而玩家 2 的比赛结果是“赢”。但是,如果我从玩家 1 设备中的 GKTurnBasedMatchmakerViewController 中单击“查看游戏”,则玩家 2 的比赛结果会切换为“获胜”。如何正确结束此游戏,以便玩家 2 的比赛结果为“获胜” “从玩家 1 的角度来看?

在我的场景中,玩家 1 开始比赛并轮到他。然后玩家 2 开始他的回合。在此期间,玩家 1 退出比赛。那么代码序列如下:

玩家 1:

玩家 2 - 在收到对 handleTurnEventForMatch:didBecomeActive 的调用后:

玩家 1 收到提示,询问他们是否想要重赛。如果用户回答是肯定的,则发送以下内容:

不幸的是,由于玩家 2 的状态不正确,上述重赛尝试失败。上面的结果错误消息是:

以下堆栈溢出问题表明这是由于上述错误的匹配数据:Trouble Using the new rematchWithCompletionHandler method from Game Center

0 投票
1 回答
283 浏览

ios - endMatchInTurnWithMatchData:completionHandler: 失败,状态无效

在我的回合制游戏中,我收到以下错误,表明会话处于无效状态并且游戏未处于活动状态:

当我调用 endMatchInTurnWithMatchData:completionHandler: 时发生此错误(此时轮到本地玩家,他正在退出游戏)。但是,我不明白当前状态有什么问题。在调用此方法之前,我打印了匹配对象。以下是内容:

如您所见,比赛的状态是 GKTurnBasedMatchStatusOpen。如果我没记错的话,这告诉我游戏是活跃的。此外,每个参与者都有一个非“无”的 matchOutcome,这是发送 endMatchInTurnWithMatchData:completionHandler: 之前的要求。

这是我在本地玩家退出时结束比赛的代码序列:

请告诉我我结束比赛的方法有什么问题,或者导致此错误的会话/比赛状态有什么问题,或者向我建议我还应该验证什么以确定问题的根源。

0 投票
0 回答
56 浏览

android - 在 TurnBasedMatch 中隐藏对手的分数

如何在 TurnBasedMatch 中向用户隐藏对手的分数?

为了进一步阐述,我创建了一个 UI,显示比赛中的所有球员。它显示他们的照片、他们的名字和他们的分数。对于每个不是“你”的玩家,我想将他们的分数设置为“隐藏”。因此,例如,登录到 Google 游戏服务的用户 A 会将用户 B 的分数视为“隐藏”,但能够看到她/他自己的分数。同样,同样在单独设备上登录 Google 游戏服务的用户 B 会将用户 A 的分数视为“隐藏”,但能够看到他/她自己的分数。比赛结束后,所有参与的玩家都可以看到所有分数。

关于如何实现这一点的任何建议?是否可以获取当前登录用户的 ID 并将其与比赛的所有参与者 ID 进行比较(从而将每个“不相等”的 ID 标记为“隐藏”)?

谢谢。

注意:分数保存为比赛数据的一部分,可通过 TurnBasedMatch.getData() 访问;

0 投票
1 回答
91 浏览

android - IllegalStateException ParticipantResult 回合制多人游戏

我是新手,所以请原谅我的不良编码习惯,但我遇到了一个IllegalStateException错误,但我不知道为什么。

我正在制作一个游戏,我希望每个玩家的比赛是 1 回合。所以,如果你和我一起玩,我开始比赛,那么我会先轮到我,然后给你发送所需的信息,然后你轮到你玩,然后把你的数据和比赛结果一起发回。

但是,我在完成轮到我时遇到问题(“我的”是开始比赛的人)。我想将信息发送给其他玩家,但是(根据我收集的信息)我必须完成比赛并发送所需的数据。我使用以下代码执行此操作:

我得到的错误在我的帖子底部提到。第 2717 行是这一行:

那么我在这里做错了什么?据我所知,这应该可行...老实说,我想避免发送参与者结果,但是由于我需要发送数据,因此我需要根据以下内容提及结果:com.google.android.gms.games.multiplayer.turnbased.TurnBasedMultiplayer.finishMatch(GoogleApiClient arg0, String arg1, byte[] arg2, List<ParticipantResult> arg3)