问题标签 [gkmatchmaker]

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 回答
50 浏览

ios - 如何使用 GameKit 将一名玩家生成的常见测验数据分享给所有其他实时比赛,避免被所有玩家盯着看?

我正在使用 GameKit 开发一个带有实时比赛的测验。我怎么知道是谁发起了比赛,因为匹配发生在双方球员的一边。问题是,如果其中一名球员产生一些随机问题,并且相同的问题将在所有球员之间共享。我想避免分享所有玩家的问题。有什么解决办法吗?

0 投票
1 回答
81 浏览

game-center - Game Center 比赛 (GKMatch) 可用多长时间?

在 iOS 10 中,Game Center 应用程序已经消失,所以我认为提供直接从应用程序中删除比赛的可能性是个好主意,但 Game Center 会自己做一些内务处理吗?

如果用户不手动删除匹配项,匹配项是否会永远列出?一段时间后(可能是 6 个月)删除已完成或已放弃的比赛是个好主意吗?还是 Game Center 已经做了类似的事情?

0 投票
0 回答
315 浏览

ios - 如何查看 Game Center 的“附近玩家”设置是否开启?

GameKit's GKMatchMaker用来寻找附近的玩家startBrowsingForNearbyPlayers()。我被卡住了一段时间,因为我不知道游戏中心窗格中的“附近玩家”切换Settings已关闭。

在此处输入图像描述

手机可以看到附近的其他玩家,但他们看不到。打开“附近的玩家”解决了这个问题。

正常的 GameKit 配对技术在没有“附近玩家”的情况下仍然有效,因此一个人(甚至是重度 Game Center 用户)完全有可能将其关闭而不知道它。但是由于我的应用程序依赖于附近的玩家匹配,它会默默地失败,用户会认为它不起作用。

我希望能够测试“附近的玩家”设置,以便在浪费时间之前警告用户其他玩家看不到他们。如果我能提示他们打开“附近的玩家”就更好了。GKLocalPlayer似乎没有任何相关的属性,我不知道还能去哪里看。

有什么方法可以检查“附近的玩家”是否启用?

0 投票
1 回答
190 浏览

ios - 使用 GKGameSession 进行自动匹配

我想切换到 GKGameSession(而不是传统的 GameCenter),但我的应用程序做了很多自动匹配。我如何使用 Sessions 做到这一点?是否可以使用传统的 MatchMaker 视图控制器创建游戏,然后传递足够的信息让每个人都连接到会话?

例如,我可以只传递会话标识符或 URL 吗?

0 投票
0 回答
353 浏览

ios - 斯威夫特 - GKMatchDelegate

我对 Swift 很陌生,最近开始开发自己的应用程序。我一直在尝试实现 Game Center 多人游戏。我项目的当前结构是(标准游戏中心结构):

  • GameViewController - UIViewController, GKGameCenterControllerDelegate
  • GameKitHelper - NSObject、GKGameCenterControllerDelegate、GKMatchmakerViewControllerDelegate、GKMatchDelegate
  • GameKitHelperDelegate - 协议(matchStarted、matchEnded、match)
  • MultiplayerNetwork - GameKitHelperDelegate(用于发送和处理消息)

我面临的问题是在多人游戏的早期阶段。在 GameViewController 上,我有以下代码来触发多人游戏:

上面触发的 findMatchWithMinPlayers 方法如下:

上面的方法在 GameKitHelper 中,它有以下方法:

一旦两个用户配对并且游戏准备好开始,只要 GKMatchmakerViewController 被关闭,应用程序就会在执行此操作的 matchmakerViewController 方法中崩溃:

通过异常断点,我发现导致上述问题的确切行如下:

我得到的错误如下:

2017-07-12 19:15:47.472473+0100 xxx[2653:492023] -[xxx.GameKitHelper match:didReceiveData:fromPlayer:]: 无法识别的选择器发送到实例 0x17047a600 2017-07-12 19:15:47.507642+0100 xxx [2653:492023] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[xxx.GameKitHelper 匹配:didReceiveData:fromPlayer:]:无法识别的选择器发送到实例 0x17047a600”

任何想法可能导致此问题?我什么都试过了。

0 投票
1 回答
126 浏览

ios - GKTurnBasedMatchmaker 是如何使用的?

我正在尝试创建一个简单的基于回合的 2 人游戏,但我很难理解如何使用 GKTurnBasedMatchmaker

这是我到目前为止的步骤:

  • 验证本地播放器
  • 使我的视图控制器成为 GKTurnbasedMatchmakerViewControllerDelegate
  • 像这样呈现匹配视图控制器:

    /li>

我现在不知道在这之后该怎么办。

如何判断 matchmakerViewController 是否成功找到匹配项,我应该转换到游戏吗?

didFindMatch 回调似乎是显而易见的解决方案,但它已被弃用

0 投票
1 回答
98 浏览

swift - 如何处理来自游戏中心游戏的邀请链接?

我想使用 GameCenterMatchMakerViewController邀请朋友加入我的多人实时游戏。邀请朋友时,他会通过 iMessage 收到邀请链接。单击该链接时,我想处理邀请,但现在我不知道该怎么做。

在以前的线程中,inviteHandler用于接收传入邀请的事件,但在 Apple Docs 中,此方法被标记为已弃用。

通读文档我发现了这个方法,但我没有尝试实现它。在投入更多精力实施之前,我想知道我是否选择了正确的方法来处理游戏中心邀请?在苹果弃用之后,有人知道正确的方法inviteHandler吗?

谢谢!

0 投票
2 回答
233 浏览

ios - 游戏中心对接会自定义邀请

我确信对此有一个“简单”的答案,但我一直很难找到它。

我创建了一个在游戏中心运行的 iOS 纸牌游戏。目前,它会自动确定在线玩家并且工作正常。

我想做的是让用户邀请他们的游戏中心朋友玩。文档并没有真正帮助我。

我正在快速完成我的项目,我觉得我正在处理已弃用的项目和旧文档?

我已经设法获得了用户的朋友列表,然后我假设我需要用该朋友列表实例化一个媒人。

我坚持的是,试图按照苹果的指导方针实施“RecipientResponseHandler”代码:

问题一:首先,^符号在swift语言中代表什么?

问题 2:XCode 似乎不喜欢参数中的 * 符号...我尝试过类似...

但是,我找不到 XCode 允许的措辞方式......

问题 3:如何编写此响应处理程序以使其工作?

问题 4:另外,要收听邀请,我需要实现GKLocalPlayerListener协议...还有什么?

问题 5:我觉得我错过了一些明显的东西?

我一直在自学,有时在没有任何方向的情况下理解概念需要一段时间,所以请在我的互联网上放轻松。我刚刚开始了解完成处理程序和闭包......

提前感谢您的帮助。

0 投票
1 回答
173 浏览

swift - 无法在 IOS 14 中使用 GKMatch.sendData(toAllPlayers:, with: ) 发送数据

我正在使用 Gamekit 在 iOS 中编写多人游戏。我正在尝试使用以下方法将数据从玩家发送到其他人

它在 ios 13 上运行良好,但在 ios 14 (Beta 2) 和 Xcode 12.0 (beta 2) 上构建,我看到以下消息

[错误] 警告:-[GKMatch sendData:toPlayers:dataMode:error:] 已过时。从 iOS/tvOS 14.0 和 macOS 10.16 开始,Game Center 不会调用这个过时的方法

我在文档中看不到任何替代方法。非常感谢您的帮助。

0 投票
0 回答
34 浏览

swift - 使用 GKMatchmakerViewController 的好友邀请永远不会出现

我基本上只是按照本教程https://www.raywenderlich.com/7544-game-center-for-ios-building-a-turn-based-gametried。我试图制作一个点对点的实时比赛,而不是一个回合制游戏。这是我的代码:

GKMatchmakerViewController 正确显示。它可以自动为我成功找到匹配项。唯一的问题是,如果我在播放器插槽中手动添加一个朋友并按开始,它会说它一直在等待另一个播放器,但我朋友的手机上什么也没有显示。我什至不知道邀请发生时应该是什么样子。

player(_ player: GKPlayer, didRequestMatchWithOtherPlayers playersToInvite: [GKPlayer])我实现了 GKLocalPlayerListener和GKMatchmakerViewControllerDelegate,但从player(_ player: GKPlayer, didAccept invite: GKInvite)未被调用。

编辑:在调用之前我没有看到这样的回调来处理邀请matchmakerViewController(_ viewController: GKMatchmakerViewController, didFind match: GKMatch),这就是为什么我没有匹配请求子系统的代码。我在文档中看到了 GKInviteEventListener 协议,它告诉我使用 GKLocalPlayerListener 代替,谁的方法永远不会被调用。我还阅读了此文档https://developer.apple.com/documentation/gamekit/finding_multiple_players_for_a_game。而且我仍然看不到如何处理匹配请求子系统。

邀请朋友并进行配对的正确方法是什么?