问题标签 [gamekit]

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 投票
0 回答
170 浏览

iphone - 为什么我会收到 GKVoiceChatServiceUnableToConnectError?怎么了?

我正在尝试实现 GK 的语音聊天。我通过wifi而不是蓝牙完成了底层网络。在模拟器和我的测试设备之间,我能够接受邀请。但紧接着,我接到了 didNotStartWithParticipantID 的电话,出现以下错误:

有任何想法吗?这是什么原因造成的?

0 投票
2 回答
915 浏览

core-data - 使用 GameKit 通过 NSDictionary 在 iPhone 之间传输 CoreData 数据

我有一个应用程序,我想通过 Core Data 在两部 iPhone 之间交换信息。

首先将 Core Data 对象转换为 NSDictionary(非常简单的转换为 NSData 以进行传输)。

我的 CoreData 有 3 个字符串属性,2 个可转换的图像属性。

我查看了 NSDictionary API,但没有任何运气,创建或添加 CoreData 信息。

任何有关此的帮助或示例代码将不胜感激。

0 投票
2 回答
1116 浏览

iphone - GKSession sendDataToAllPeers:withDataMode:error: 是异步的 - 如何获取何时完成的消息?

GKSession sendDataToAllPeers:withDataMode:error: 是异步的......或者我理解。除了发送应用程序级 ACK(这将非常笨拙)的对等方之外,是否有办法找出它何时完成发送?

M。

0 投票
1 回答
2072 浏览

iphone - GKSession 不会在第二次连接上向对等方发送数据

我的点对点 iPhone 游戏运行良好。我创建了一个表格来显示可用的对等点,我可以连接(到目前为止)多达四个设备并从头到尾玩一整轮游戏:

对等选择器

但这是我的问题...

GKSession在一台设备上GKSessionModeClientGKSessionModeServer. 客户端看到服务器,选择连接它,然后服务器批准。然后,当所有对等点都连接时,服务器可以点击“开始游戏”。

如果——在服务器开始游戏之前——客户端点击“返回”按钮转到上一个屏幕,自定义对等选择器显示从视图中弹出并且会话被“销毁”......

现在,如果客户端返回对等选择器并再次加入服务器,我会再次获得一个GKSessionStateConnected状态,但是当我sendDataToAllPeers:什么都没有到达客户端时。如果一台设备开始游戏并且三台设备加入,然后服务器点击“开始游戏”,它可以完美运行。但是如果有人在游戏开始前退出,那么重新创建会话并加入会失败。

有任何想法吗?在这一点上,我能想到的唯一技巧是阻止用户在连接到服务器后点击“返回”,但这很糟糕……如果他们改变主意,他们将不得不完全退出应用程序。除了这个连接问题之外,我对这个应用程序正在运行以及我喜欢它,我对此束手无策。一种边缘情况,但我可以看到如果用户无法启动游戏而无需重新启动应用程序以清除会话,他们会感到恼火。

当我可以的时候,我会把它变成一个赏金。请帮忙!

编辑@byteclub

  • 如果客户端在游戏开始前离开,服务器是否正确清理了所有相关的数据结构?

如果客户端在服务器接受他们的连接后离开游戏大厅,则客户端的会话被破坏:

不过,我不会在服务器设备上调用任何 disconnectFromPeers 方法。

游戏已经开始了吗?

稍微,如果客户端断开连接,那么每个人都会收到“对等退出”通知并且游戏结束。在这种情况下,我不担心重新连接。主要是在游戏大厅,客户端可以“取消”回到问题所在的主屏幕。在这种情况下,客户端的会话被破坏。如果他们随后返回大厅并分配了一个的GKSession,他们仍然可以连接到服务器,但是一旦连接,sendDataToAllPeers 将不再工作。

客户端,但让服务器按原样运行?

客户端可以在任何情况下重新连接。我可以退出,返回,重新启动应用程序并重新连接没有问题。除非服务器和客户端都重新启动,否则 sendDataToPeers 会失败。

当用户点击“返回”时?

是的。(见上面的代码)

我意识到从远处进行调试可能很疯狂,但是如果您对我可以研究的内容有任何建议,我将不胜感激。

0 投票
2 回答
454 浏览

objective-c - 未能创建 oob 消息?

嗨,我正在尝试在两次 ipod 触摸之间构建一个简单的聊天客户端,作为学习 Bonjour 的开始。我很好地连接了两个设备,一切似乎都可以正常工作。我可以毫无问题地发送数据(没有错误),但是我什么时候应该接收数据而我没有。当我查看日志时,我看到“GCKSessionEvent_IncomingOOBPacket:未能创建 oob 消息”我已经尝试用谷歌搜索该消息的一部分以寻找答案,但实际上只有 0 个结果。我希望这里有人可能有答案。

谢谢

KC

回复评论:

这三个电话是

0 投票
1 回答
1041 浏览

iphone - 如何在 iPad 和 iPhone 上通过 GameKit 使用多个对等点?

如果我正在开发需要与最多 4 个 iPhone/iPod Touch(客户端)通信的 iPad 应用程序(“服务器”),我该如何管理?这两个应用程序将是分开的。我应该为每部 iPhone 创建 4 个 GKSession 吗?我是否应该有 1 个连接所有 5 个设备的 GKSession,如果我这样做了,每个 iPhone 是否能够“看到”其他设备(理想情况下,这不应该发生,因为它会让事情变得简单)?这些应用程序将有点像 iPad 上的拼字游戏应用程序(不是在功能上,而是在想法上)。我应该如何管理这个?

在此先感谢,如果您需要更多信息,请发表评论。

0 投票
2 回答
1098 浏览

iphone - GameKit 4.0 还没有准备好迎接黄金时段?停止广告服务

在 4.0 下运行的 Gamekit 应用程序无法正确处理删除 GKSession 对象。在 3.1.3 或 3.2 下运行,如果对等点断开连接并且会话被清理(如在 Apple 演示中):

然后其他对等点接收状态更改并且可以更新对等点的表视图。

在我的应用程序中,一个对等点作为服务器启动,另一个作为客户端启动。客户端请求连接到服务器,并且客户端的名称出现在服务器的玩家列表中。如果服务器选择接受请求,则会话连接建立,他们可以玩游戏。但是,如果客户端在服务器接受请求之前退出,客户端会清理会话(如上),并且客户端作为响应从服务器的对等列表中消失(当它接收到状态更改时)。这在 3.1–3.2 上效果惊人

当您在 4.0 下运行相同的应用程序时,服务器和客户端会抛出错误,并且对等方需要很长时间才能接收到状态更改,并且当它们接收到状态更改时,应用程序会崩溃而没有任何错误(即使在构建中使用 NSZombieEnabled=YES论据)。服务器永远不会收到来自客户端的“状态更改”消息。相反,会引发以下错误:

我认为是关键错误:

在我看来,会话没有变得不可用(停止广告服务时出错)。实际崩溃:

我已经提交了一个错误,我的完整申请正在进行中。该应用程序本身已完成,几乎可以提交,并且在 3.1.3/3.2 下运行良好,但由于 Gamekit 的当前状态为 4.0,我无法再提交它。非常失望,因此希望此错误报告对将来有所帮助。如果有人理解这个错误或我可能做错了什么,我将不胜感激。

如果可以的话请帮忙。我要在这个应用程序上认输,它是如此接近。

0 投票
1 回答
411 浏览

iphone - 一次在 2 台设备上运行同一个 iPhone 应用程序?

我有一个在 Xcode 中使用 GameKit 的 iPhone 应用程序。我在让它工作时遇到问题,所以我需要同时查看 2 台设备上的 NSLog 输出。我的问题是,当我单击 build and go 时,它会在最近连接的设备上运行它,我想同时在 2 台设备上运行它,并且能够在这两个设备上查看控制台输出。有没有办法做到这一点?

0 投票
8 回答
6529 浏览

game-engine - 类似 PC 的 GameSalad 工具

任何人都知道像 GameSalad for PC 这样的工具,您无需编写脚本或其他任何东西,只需使用现有的行为和事件来创建自定义游戏逻辑?

谢谢

0 投票
1 回答
412 浏览

iphone - 为什么我的应用程序在通过 Game Kit 发送数据时会崩溃?

我一直在关注这个关于在 2 部 iPhone 之间设置蓝牙的好指南。

但是,我需要做的是发送二进制文件(例如视频)而不是文本。

我将数据加载到 NSData

然后发送它的一些方法

但是我的应用程序崩溃了。我需要对其进行编码吗?