问题标签 [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 回答
2027 浏览

iphone - Game Center 以编程方式邀请好友

我很难邀请朋友参加比赛。

问题是我从未在登录到该帐户的第二台设备上收到邀请通知 - G:1102359306。当我使用 GKMatchmakerViewController(取消注释以上 2 行)并评论 GKMatchmaker 块时,我已经自动检查了好朋友 - G:1102359306,当我邀请他时,会显示带有接受/拒绝的通知,这就是我知道它是正确的方式。

你看到上面的代码有什么问题吗?我想用我自己的 UI 来处理多人模式。奇怪的问题是我在控制台中也没有看到任何日志匹配/其他错误,并且 [错误描述] 仅在我两次调用上述代码时才打印 - 它表示先前的请求已被取消。

0 投票
1 回答
212 浏览

ios - GKMatchmakerViewController - 如何检测按下“立即播放”

有没有办法检测何时按下 GKMatchmakerViewController 中的“立即播放”按钮?

我可以在参考文档中找到的是:

– matchmakerViewController:didFindMatch:

– matchmakerViewController:didFindPlayers:

– matchmakerViewControllerWasCancelled:

– matchmakerViewController:didFailWithError:

– matchmakerViewController:didReceiveAcceptFromHostedPlayer:

0 投票
0 回答
538 浏览

ios - GameKit 托管的配对是否真的有效?

我真的希望我对此是错误的,但据我所知,如果玩家邀请一些朋友参加比赛但留下一些空位供自动机使用,GameKit 托管的配对根本不起作用。我可以让每个案例单独工作,但是当混合时,没有人可以连接。

考虑三个玩家:A、B 和 C。A 邀请 B 参加比赛并留下第三个空位。C选择匹配成三人游戏。

现在,当 B 处理来自 A 的邀请时(由于在 GKMatchmaker 上注册了一个邀请处理程序),他联系托管服务器进行连接并设置他的玩家就绪状态。然后玩家 A 将收到一条委托消息给 matchmakerViewController:didReceiveAcceptFromHostedPlayer: 说 B 已连接。在两人游戏中,此时 B 可以开始游戏并继续进行。相反,单击“立即播放”按钮会导致媒人等待第三位玩家到达。

同时玩家 C 已选择自动添加到比赛中。如果 A 和 B 也要求自动添加,则所有三个都将通过委托 matchmakerViewController:didFindPlayers: 方法收到匹配通知。然而,相反,单击“立即播放”按钮会导致媒人等待……永远。玩家 A 也在等待……永远。玩家 B 只知道邀请者玩家 A,所以理论上他可以尝试开始游戏,但这毫无意义,因为 A 只知道一些参与者。

我很难相信这个系统会有这样一个灾难性的缺陷,但我已经运行了这个场景,并跟踪了相关 GameKit 类中暴露的所有委托方法,当玩家进入无限等待状态时,没有发送的委托消息。就好像 GameCenter 并不完全知道 A 和 B 的存在,这将有助于解释为什么 A 必须明确地将 B 标记为存在于视图控制器中,尽管显然已经“足够”可见以首先收到邀请. 我还尝试让玩家 C 仅请求两人游戏,其想法可能是这意味着玩家 A 仅被视为一个“可见”玩家。

有没有人对这个 API 有任何直接的经验,并且可以明确声明它适用于这个用例(或不适用)?这对我来说是一个严重的问题;这几乎意味着我必须扔掉基于 GameKit 的配对代码并完全从头开始编写一些东西。

提前感谢您提供任何信息。

0 投票
1 回答
340 浏览

objective-c - 游戏中心对接会不起作用

这是我的 Menu.m 的 onEnter 方法:

我尝试使用设备和模拟器,但它们无法匹配。

我还尝试按照 Ray Wenderlich 的教程进行操作:

但是后来,连matchmakerviewcontroller都没有出现。我不知道我做错了什么。

提前致谢。

0 投票
1 回答
349 浏览

ios - 使用 monogame 构建默认 iOS 解决方案时出现错误消息

当我尝试在 Monotouch 上构建默认的“MonoGame.Framework.iOS.sln”时,有人知道为什么会收到以下错误消息吗?我该如何解决这个问题?:

在指南源文件的第 468 行(从 MonoGame.Framework.iOS>iOS>GamerServices>Guide.cs 我得到,

// 该行的错误是——类型“MonoTouch.GameKit.GKMatchmakerViewController”不包含采用“0”参数的构造函数。

0 投票
1 回答
80 浏览

objective-c - GKMatchmakerViewController 不处理触摸

我正在展示这个 modalView,它不处理触摸。我正在使用 cocos2d-iphone。

0 投票
1 回答
1833 浏览

ios - ios:以编程方式要求 Game Center 登录?

我有一个简单的问题,但我查看了 Apple 的文档并进行了一些搜索,但找不到答案。

是否可以以编程方式调出 Game Center 的登录视图?我有一个UIButton需要 Game Center 的应用程序,如果打开应用程序时客户端未登录(iOS 在启动时拉出登录视图),我想为用户提供第二次登录机会。

0 投票
1 回答
1475 浏览

iphone - iOS Gamecenter 程序化匹配

我正在尝试使用自定义 UI(否)实现实时多人游戏GKMatchMakerViewController。我startBrowsingForNearbyPlayersWithReachableHandler: ^(NSString *playerID, BOOL reachable)用来寻找本地玩家,然后使用GKMatchmaker单例发起匹配请求(我已经发起了)。

这就是我遇到麻烦的地方。当我发送请求时,完成处理程序几乎立即触发,没有错误,并且它返回的匹配项的预期玩家计数为零。同时,对方玩家肯定没有回应这个请求。

相关代码:

0 投票
0 回答
206 浏览

ios - 使用 GKMatchMakerViewController initWithRequest 时,配对邀请好友立即失败

这是我关于 Stack Overflow 的第一个问题,所以提前致谢。我正在为我的 iPhone 游戏添加简单的 1v1 多人游戏功能,但我正在为 Matchmaker 功能而苦苦挣扎。目前我有一个 ViewController 作为默认 MatchMaker 的代表。我让 matchmaker 视图控制器毫无问题地出现,但是当我尝试邀请我作为朋友的另一个 Sandbox 帐户时,它立即失败。接受对话框永远不会在其他设备上弹出,并且我的邀请处理程序永远不会被调用。这是我用来调用 Match Maker 的代码片段:

不太确定我做错了什么,但这可能是愚蠢的。任何帮助,将不胜感激。谢谢。

0 投票
2 回答
491 浏览

ios - 建立连接之前自动匹配的 playerID 存储在哪里?

我已经实现了一个自定义媒人作为 GKMatchmakerViewController 的直接替代品,仅在 iOS6+ 中运行时显示。它运行良好,但 GKMatchmakerViewController 中有一部分用户界面我似乎无法弄清楚。

当启动 2 人 (request.minPlayers = 2, request.maxPlayers = 2) 自动匹配时,GKMatchmakerViewController 能够使用在玩家更改为连接状态之前找到的玩家的显示名称和照片更新其 UI .

我使用以下代码启动自动匹配。建立连接,游戏开始,一切都很好。

但是,在他们通过以下方式更改为 GKPlayerStateConnected 之前,我无法获取 playerID:

找到匹配后,该玩家处于 GKPlayerStateUnknown 中。但是,代码中的匹配 NSLog() 显示了 playerID(它绝对不是 localPlayer 的 ID;真实数字已被编辑):

匹配的 playerIDs 数组(第二个 NSLog())在匹配创建后立即为空,这是有道理的,因为尚未正式建立连接:

我终于回答了问题(感谢您的耐心等待):

1a) 处于未知状态的玩家的ID是从哪里来的?

1b)它显然在比赛中,但它到底存储在哪里?我看到的唯一与 playerID 相关的是空数组。

2) 是否有其他(合法)方式来获取该 playerID?即在它们变为连接状态之前