问题标签 [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.
ios - 如何使用 GameKit 将一名玩家生成的常见测验数据分享给所有其他实时比赛,避免被所有玩家盯着看?
我正在使用 GameKit 开发一个带有实时比赛的测验。我怎么知道是谁发起了比赛,因为匹配发生在双方球员的一边。问题是,如果其中一名球员产生一些随机问题,并且相同的问题将在所有球员之间共享。我想避免分享所有玩家的问题。有什么解决办法吗?
game-center - Game Center 比赛 (GKMatch) 可用多长时间?
在 iOS 10 中,Game Center 应用程序已经消失,所以我认为提供直接从应用程序中删除比赛的可能性是个好主意,但 Game Center 会自己做一些内务处理吗?
如果用户不手动删除匹配项,匹配项是否会永远列出?一段时间后(可能是 6 个月)删除已完成或已放弃的比赛是个好主意吗?还是 Game Center 已经做了类似的事情?
ios - 如何查看 Game Center 的“附近玩家”设置是否开启?
我GameKit's
GKMatchMaker
用来寻找附近的玩家startBrowsingForNearbyPlayers()
。我被卡住了一段时间,因为我不知道游戏中心窗格中的“附近玩家”切换Settings
已关闭。
手机可以看到附近的其他玩家,但他们看不到。打开“附近的玩家”解决了这个问题。
正常的 GameKit 配对技术在没有“附近玩家”的情况下仍然有效,因此一个人(甚至是重度 Game Center 用户)完全有可能将其关闭而不知道它。但是由于我的应用程序依赖于附近的玩家匹配,它会默默地失败,用户会认为它不起作用。
我希望能够测试“附近的玩家”设置,以便在浪费时间之前警告用户其他玩家看不到他们。如果我能提示他们打开“附近的玩家”就更好了。GKLocalPlayer
似乎没有任何相关的属性,我不知道还能去哪里看。
有什么方法可以检查“附近的玩家”是否启用?
ios - 使用 GKGameSession 进行自动匹配
我想切换到 GKGameSession(而不是传统的 GameCenter),但我的应用程序做了很多自动匹配。我如何使用 Sessions 做到这一点?是否可以使用传统的 MatchMaker 视图控制器创建游戏,然后传递足够的信息让每个人都连接到会话?
例如,我可以只传递会话标识符或 URL 吗?
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”
任何想法可能导致此问题?我什么都试过了。
ios - GKTurnBasedMatchmaker 是如何使用的?
我正在尝试创建一个简单的基于回合的 2 人游戏,但我很难理解如何使用 GKTurnBasedMatchmaker
这是我到目前为止的步骤:
- 验证本地播放器
- 使我的视图控制器成为 GKTurnbasedMatchmakerViewControllerDelegate
像这样呈现匹配视图控制器:
/li>
我现在不知道在这之后该怎么办。
如何判断 matchmakerViewController 是否成功找到匹配项,我应该转换到游戏吗?
didFindMatch 回调似乎是显而易见的解决方案,但它已被弃用
swift - 如何处理来自游戏中心游戏的邀请链接?
我想使用 GameCenterMatchMakerViewController
邀请朋友加入我的多人实时游戏。邀请朋友时,他会通过 iMessage 收到邀请链接。单击该链接时,我想处理邀请,但现在我不知道该怎么做。
在以前的线程中,inviteHandler用于接收传入邀请的事件,但在 Apple Docs 中,此方法被标记为已弃用。
通读文档我发现了这个方法,但我没有尝试实现它。在投入更多精力实施之前,我想知道我是否选择了正确的方法来处理游戏中心邀请?在苹果弃用之后,有人知道正确的方法inviteHandler
吗?
谢谢!
ios - 游戏中心对接会自定义邀请
我确信对此有一个“简单”的答案,但我一直很难找到它。
我创建了一个在游戏中心运行的 iOS 纸牌游戏。目前,它会自动确定在线玩家并且工作正常。
我想做的是让用户邀请他们的游戏中心朋友玩。文档并没有真正帮助我。
我正在快速完成我的项目,我觉得我正在处理已弃用的项目和旧文档?
我已经设法获得了用户的朋友列表,然后我假设我需要用该朋友列表实例化一个媒人。
我坚持的是,试图按照苹果的指导方针实施“RecipientResponseHandler”代码:
问题一:首先,^符号在swift语言中代表什么?
问题 2:XCode 似乎不喜欢参数中的 * 符号...我尝试过类似...
但是,我找不到 XCode 允许的措辞方式......
问题 3:如何编写此响应处理程序以使其工作?
问题 4:另外,要收听邀请,我需要实现GKLocalPlayerListener
协议...还有什么?
问题 5:我觉得我错过了一些明显的东西?
我一直在自学,有时在没有任何方向的情况下理解概念需要一段时间,所以请在我的互联网上放轻松。我刚刚开始了解完成处理程序和闭包......
提前感谢您的帮助。
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 不会调用这个过时的方法
我在文档中看不到任何替代方法。非常感谢您的帮助。
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。而且我仍然看不到如何处理匹配请求子系统。
邀请朋友并进行配对的正确方法是什么?