问题标签 [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 投票
2 回答
426 浏览

request - GKTurnBasedMatch 识别玩家组

我正在开发一款基于游戏的回合制比赛。这是一个不同语言的文字游戏。

玩家可以选择为每个他想玩的游戏设置语言。我想使用 GKMatchRequest 的 playergroup 属性来区分语言。

但是在发送 GKMatchRequest 并且我收到一个 GKTurnBasedMatch 对象之后,我如何判断哪个玩家组(语言)属于该匹配项?据我所知,GKTurnBasedMatch 对象没有 playergroup 属性,我也无法将 GKTurnBasedMatch 对象与 GKMatchRequest 匹配,没有标识符。

0 投票
1 回答
966 浏览

ios - handleTurnEventForMatch:didBecomeActive:回调仅在某些时候到达

这是对这个问题的跟进。如果您没有收到任何回调handleTurnEventForMatch:didBecomeActive:,请尝试那里的答案。

在我的游戏中,我有时只会收到回合事件通知。但是如果我回到matchMakerViewController并重新加载比赛,状态总是正确的。

我的游戏在每个回合中多次上传回合状态。有趣的是,如果另一台设备收到一个通知对手轮到的通知,它就不太可能收到同一轮的进一步通知。但是,这不是 100%。

一般来说,我的互联网连接似乎工作得很好。

有什么想法可能导致这种情况吗?

0 投票
1 回答
125 浏览

ios - 本地化的 GKTurnBasedMatch 消息

GKTurnBasedMatch 的 message 属性允许更改下一个参与者收到的推送通知中的文本,但是如何本地化呢?我尝试使用 Localizable.strings 但这不起作用。我知道常规推送通知可以轻松本地化,但由于 Game Center 可以完全控制这些通知,因此似乎无法做到这一点。

0 投票
1 回答
160 浏览

iphone - 使用 NSData 更新 GKTurnBasedMatch 中的转弯

我正在尝试创建一个 2 人回合制比赛游戏。玩家目前可以轮流进行,但数据实际上并未填充到 NSData 中。我在如何存档和序列化方面找到了这种方法,但我觉得我只是在做错事。这是在玩家 1 完成他们的回合后执行的代码。目前,我真的只需要保存分数(我之所以这样说是因为我将 player1id 保存在数据字典中,而我真的不需要)。

轮到发送,myscore 里面确实有分数,但是 NSData *data 里面没有数据!(注意:目前我收到此错误:)

“'NSUInteger' 类型的集合元素(又名 'unsigned in')不是 Objective-C 对象”

撕开我的代码,告诉我我做错了什么!

编辑:在输出中添加:

和输出:

2013-03-01 15:49:10.174 玩家 1 轮到他们了

2013-03-01 15:49:10.174 这是什么:3042

2013-03-01 15:49:10.175 我的分数是:3042

2013-03-01 15:49:10.175 myMatchDataDictionary 播放器 1 得分:0

2013-03-01 15:49:10.175 发送转

我开始认为这与 [AppDelegate getGameState].gameDetail.player1Score 有关

0 投票
0 回答
318 浏览

ios6 - GKTurnBasedMatch handleMatchEnded:未调用

我正在使用GameKitGKTurnBased API 编写一个简单的 2 人棋盘游戏,我的问题是在我的游戏结束时,我想检测一个玩家赢了另一个输了。

首先,handleTurnEventForMatch:didBecomeActive:方法被触发,在这个方法中,我检查了其他参与者的状态:

我现在的问题是永远不会调用handleMatchEnded:方法......奇怪的是,这个方法是与handleTurnEventForMatch:didBecomeActive:相同的委托协议的一部分,它实际上是有效的。

欢迎任何想法。

干杯。

03/17 更新: 由于我的第一个玩家退出是轮到的,而第二个玩家结束了比赛,我认为这两个玩家不会收到该事件。此事件可能是为游戏中的其他玩家制作的,或者当其他玩家离开时玩家不在应用程序内时。在文档中没有找到任何相关的内容,但它似乎是合乎逻辑的。

西里尔

0 投票
1 回答
244 浏览

ios5 - 不使用 GKTurnBasedParticipant IOS 5 iphone 发送转弯

我正在为 iPad 和 iPhone 开发一个具有 Game Center 功能的应用程序。游戏从 iPad 2 IOS 6 正确发送一个参与者转弯,但是当我尝试从 iPhone 4 IOS 5 将转弯发送给另一个参与者时,出现以下错误:

我正在使用以下在 IOS 6 上完美运行的方法:

错误号 3 是 GKErrorCommunicationsFailure,但我不明白这是怎么回事!

当应用程序从游戏中心启动时我正确登录

0 投票
2 回答
818 浏览

iphone - 在没有游戏中心视图控制器的情况下处理对 GKTurnBasedMatch 的邀请

我正在开发一个简单的回合制文字游戏,但我很难弄清楚邀请是如何工作的。当用户 A 邀请用户 B 参加游戏时,我希望用户 B 能够在我的自定义匹配界面(即列出用户 B 的所有游戏的屏幕)中看到该游戏。如果用户 B 在被邀请参加游戏时单击通知,一切都很好,但如果用户 B 只是自己导航到应用程序,我仍然希望游戏通过我自己的界面可见。

每当出现此比赛界面屏幕时,我都会使用[GKTurnBasedMatch loadMatchesWithCompletionHandler:]它来获取本地玩家的所有比赛。有了这个,我假设用户 B 可以看到他被邀请参加的比赛,但是这个新的比赛没有出现。如果我通过 接受邀请GKTurnBasedMatchmakerViewController,则用户按预期进入游戏,但更令人费解的是,如果我打开我的GKTurnBasedMatchmakerViewController然后取消而不接受邀请,现在我的自定义匹配界面中会出现一个新的匹配,但它缺少用户 A 发送的匹配数据。

总而言之,我真的只是想知道如何GKTurnBasedMatch使用自定义界面(而不是必须使用GKTurnBasedMatchmakerViewController)正确显示和接受邀请。谢谢!

0 投票
3 回答
13016 浏览

ios - 如何识别显示为空括号的空 NSData 对象?

我正在处理 Game Kit 的 GKTurnBasedMatch 类(请参阅此线程)中的一个损坏问题,该问题有时会导致无效的游戏状态,并带有损坏的 matchData。

因此,作为一种解决方法,我正在创建一种方法来识别这些无效匹配,以便我可以适当地处理它们。损坏的 matchData 似乎是执行此操作的好方法。但是,到目前为止,我一直无法识别它们。当我这样做时:

我得到以下信息:

所以匹配数据显示为一对空括号“<>”,我希望可以将其标识为nil,但显然不是。

顺便说一句,我将此 matchData 存储在核心数据实体中,位于 NSData 属性下。当我保存 NSManagedObjectContext,然后 NSLog NSManagedObject 以查看其中的内容时,有问题的 NSData 属性仍然显示为“<>”!

但是,如果我随后创建一个的NSManagedObjectContext,从中检索相同的 NSManagedObject,然后NSLog 其值,则 NSData 属性现在显示为nil

因此,在某些时候,核心数据似乎正在将属性“清理”为它的 poper nil值。我的问题是,当我将它添加到核心数据存储时,我实际上需要在该点之前将该值标识为nil 。

0 投票
1 回答
977 浏览

ios - 保存游戏中心数据的良好做法(GKTurnBasedMatch)?

我正在使用游戏中心制作游戏应用程序。

我想问一下在应用程序中保存整个对象(GKTurnBasedMatch)等游戏数据的好习惯是什么?

因为,每场比赛都有 matchData。我打算将这个 GKTurnBasedMatch 保存在 NSDefault 中,但是从 nsdefault 中检索它没有运气。那么,有什么好的方法吗?

大家能给我一些建议吗?我的考虑只是如果我更新应用程序,NSDefault 数据会在应用程序更新后被删除吗?

0 投票
1 回答
487 浏览

ios - GKTurnBasedMatch 接收数据

我正在尝试实现一个基于回合的应用程序,发送回合数据没有问题,但我看不到自动接收数据的方法。到目前为止,我发现了这么多:

  • 有一个GKTurnBasedEventHandlerDelegate-协议。这很容易实现,但是我在哪里将该对象设置为任何它必须是委托的委托?它似乎不是GKTurnBasedMatch, or GKTurnBasedMatchmakerViewController, or的代表GKMatchMaker

  • 还有一种方法GKTurnBasedMatch被称为loadMatchDataWithCompletionhandler,但据我了解,它只在您有点直觉需要更新匹配时才调用一次。我怎么知道它必须更新?我必须每隔一秒左右触发一次这个功能吗?

提前致谢。

更新:我已设置[GKTurnBasedEventHandler sharedTurnBasedEventHandler].delegate为实现GKTurnBasedEventHandlerDelegate. 它仍然永远不会被调用。