- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的纸牌游戏使用 Game Center 回合制比赛。感觉很合适,因为人们有时想在转弯之间检查他们的电子邮件或写一段文字。一些用户表示他们确实希望能够获得非常异步的播放体验。
对于在回合之间保持游戏开放的人,我想更新屏幕以反射(reflect)其他玩家在回合中所做的事情。我在 GKLocalPlayer
上设置了一个监听器响应 player:receivedTurnEventForMatch:didBecomeActive
.文档说,当另一个玩家保存比赛数据时,即使没有轮到玩家(当前设备上的玩家),也会调用它。这似乎不是 100% 的真实情况。事实上,它似乎只有大约三分之一的时间被调用,比赛数据被其他玩家保存。轮到玩家时似乎更可靠,但即使这样也不是 100% 可靠。
我正在使用 saveCurrentTurnWithMatchData:completionHandler:
在 GKTurnBasedMatch
保存不会结束当前玩家回合的比赛数据,我正在调用 endTurnWithNextParticipants:turnTimeout:matchData:completionHandler:
在 GKTurnBasedMatch
当它结束当前玩家的回合时保存数据。有几种情况我想调用saveCurrentTurn…
使用更新的 matchData。在我的游戏中,你也可以让电脑在你的多人游戏中玩。因此,人类玩家可能会打出一张牌,然后计算机可能会在此之前打出一张牌GKPlayer
的回合结束。在某些情况下,单个玩家可能会玩两次。 (例如,玩家在一个戏法中打出最后一张牌。该玩家接受了这个戏法并开始领导下一个戏法。)
我已经设置了大量的日志记录,我可以看到一个设备调用 saveCurrentTurn…
的清晰场景。并且在没有错误的情况下调用了完成处理程序,并且其他设备不会通过调用 player:receivedTurnEvent…
得到通知我还添加了日志记录以验证每次调用 saveCurrentTurn…
我用新的 matchData 来调用它。我不会打多余的电话。
如果我转到未获取更新 matchData 的设备并强制它再次加载 matchData 以进行匹配,它将获取更新的数据。所以,肯定得救了。
我尝试限制对 saveCurrentTurn…
的调用这样它们就不会立即连续发生,这没有帮助。
我测试的两台设备都运行 iOS 8.4。 iOS 8.3 中似乎存在一个现已修复的问题 (see this question)。 This Apple forum post 2 年前还报告了这个问题,并且似乎已提交错误报告并标记为已修复。
有没有其他人看过这个?我很想知道我做错了什么。任何想法都非常受欢迎。
最佳答案
我做类似的事情。在我的游戏中,每个玩家都有多个棋子,当每个棋子移动时保存比赛,以便其他玩家——如果他们在游戏中——可以实时观看正在发生的事情。就像你描述的那样,Game Center 消息几乎完全没用。
正如您所提到的,在 8.3 中,“回合结束”消息完全被破坏了。从 8.4 开始,它们发生在 最多 ,但不是全部。如您所见,“比赛已保存”通知也不稳定。以下是我用来提高成功率的一些技巧:
saveCurrentTurnWithMatchData
,如果保存成功,则将项目从堆栈中弹出,然后设置一个新的计时器稍后再次调用自己。我正在使用 2 秒的间隔,这似乎运作良好。 writeToFile
:用于维护待处理保存列表的功能。如果用户在刷新队列之前退出游戏,我会在下次启动时从磁盘重新加载队列 NSArray player:receivedTurnEventForMatch:didBecomeActive
.据 receivedTurnEventForMatch
: 知道,它是因为一个事件而推出的,它愉快地继续着它的业务。 关于ios - 当 matchData 发生变化时,GameKit 基于回合的监听器不会被可靠地调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31979049/
GameKit 允许我们在比赛结束时为下一位参赛者设置超时。但是,我找不到为第一个参与者的第一步设置超时的方法。有办法吗? 编辑我开始明白为什么 Apple 会把它从 GameKit 中剔除。当您刚刚
我正在寻找一种在 iPhone 和桌面客户端之间建立无线连接的方法。 Gamekit 看起来很有前途,但所有示例/文档都只是解释 iPhone 到 iPhone。 是否有桌面版 Gamekit 对等体
我正在尝试使用 GameKit 框架通过蓝牙发送文件。我遇到的问题是我一次只能发送一个 NSData 对象,但我需要将其保存在另一端。如果不知道文件名,这显然是不可能的,但我不知道如何传输它。我尝试将
我在iPhone上实现了一个通过蓝牙(Gamekit)共享照片的应用程序。 我想知道如何获得一定比例的照片发送。 请告诉我。 谢谢 最佳答案 为了使传输的数据量保持在最大范围内,您必须支持分解数据。
发送回合时,endTurnWithNextParticipants 频繁(可能是 30%-50% 的时间)给出:Error Domain=GKErrorDomain Code=3 “由于与服务器通信时
我对游戏套件非常陌生,所以我从一个基本游戏开始。屏幕上有 2 个玩家,此时允许他们四处移动。 我正在使用 ipad 和手机测试游戏,因此我很快意识到 ipad 用户拥有更多的空间,而不是调整相同的空间
Apple 没有任何 GameKit 配对示例项目吗?我找不到任何 - 只有一个关于排行榜和成就的(称为 GKTapper) 最佳答案 也许GKTank苹果示例代码 关于iphone - GameKi
我目前正在一个应用程序上实现游戏中心。我已经遵循了这个教程Tutorial 1还有这个Tutorial 2他们都有这个 GKLocalPlayer 行 [GKLocalPlayer localPlay
我正在开发一个可以向用户发送文件和操作的应用程序。用户可以随时向服务器请求文件(客户端服务器模型)。有时文件可能相当大(例如 10 MB),在发送时可能会延迟其他小 Action 发送给连接的用户。G
我正在尝试连接 2 台设备,iOS 模拟器和 iPhone 设备。 _picker = [[GKPeerPickerController alloc] init]; _picker.delegate
使用 iOS GameKit 实现服务器应用程序的最佳方式是什么?我应该创建一个单独的服务器线程以某种方式响应所有委托(delegate)事件(接收到的数据等)吗?或者也许使用 NSRunLoops?
这似乎是一个愚蠢的问题,但是 GameKit 可以用于游戏以外的应用程序吗?也就是说,Apple 会批准将 GameKit 用于蓝牙目的但不用于游戏的应用程序吗?还是他们会基于“滥用硬件/软件”或其他
我编写了一个程序,使用 gamekit/蓝牙将使用压缩的 jpeg 的低质量视频从一台 iOS 设备传输到另一台。我确实已经意识到 gamekit/bluetooth 不应该用于此目的(对于小块数据)
我读到,从 iPhone OS 3.1 开始,GameKit 支持 wifi 连接。但文档指出: "If your application configures the peer picker to
在 iOS 上,您可以从设置应用程序中导出 GameKit 日志文件。但是它没有告诉你在哪里可以找到这些日志文件。您也无法从 Xcode->devices 查看它们。 最佳答案 我终于找到了这个信息。
我决定实现自己的接口(interface)来连接运行我的游戏的两个设备,而不是使用 GKPeerPickerController。这实际上运作得很好。但我刚刚意识到,在创建 GKSession 时,我
我想使用 GKSession 连接两台设备,其中一台作为服务器,另一台作为客户端。使用此配置我无法使用 GKPeerPickerController。 我在连接两个设备时遇到问题: 仅使用蓝牙:不可能
我想知道是否可以在 iPhone OS 3.0 或更高版本中直接通过蓝牙使用 bonjour,而不使用 GameKit。谁能提供一些例子吗? 最佳答案 只需宣布服务即可,就像 tc. has said
我正在尝试将 Apple 的游戏中心集成到我的应用程序中。我可以成功地将分数发布到排行榜,并显示排行榜,但是当我尝试关闭排行榜模态视图时,问题就来了。我从游戏工具包编程指南([url]http://d
如何检测 GameKit 自动匹配是否失败? 等待 2 分钟后,即使没有找到自动匹配的玩家,也会调用 GKMatchmakerViewControllerDelegate matchmakerView
我是一名优秀的程序员,十分优秀!