从游戏套件编程指南 ...
多人游戏允许有兴趣玩在线多人游戏的玩家互相发现并连接到比赛中.根据您的需要,您的应用程序可以使用Game Kit将所有参与者连接在一起,或让Game Kit为您提供一系列玩家.在后一种情况下,您将提供自己的网络实现,将播放器连接到您提供的服务器
我想为游戏中心构建一个基于回合制的多人游戏iPhone游戏,并且需要编写我自己的游戏服务器.我计划使用Game Center API进行玩家身份验证,记分牌和配对玩家,但我仍然需要构建自己的回合制游戏服务器来控制多人游戏通信.这是一个基于时间的游戏,因此服务器将处理诸如同步游戏开始和在游戏完成时通知玩家以及匹配结果之类的事情.在这一点上,我只想弄清楚从哪里开始构建游戏服务器,我真的很难找到任何覆盖的好资源......
如何构建和实施基于回合制的游戏服务器.理想情况下,我想找一本书或在线文章,其中包含一些代码,但我读过的每本书都讨论了iPhone上的多人游戏,同样的事情,"开发Web服务器超出了本书的范围,但我们我将专注于连接到这样一台服务器所需的客户端代码." .我在哪里可以找到有关开发Web服务器的信息?!
要使用的好库/ API
任何人都可以帮我引导一些涵盖这个主题的好书或在线资源吗?或直接回答我的问题?我不得不认为开发游戏服务器对于任何为iOS游戏中心构建游戏的人来说都是一个非常普遍的问题,因为大多数都是多人游戏,但我无法弄清楚为什么没有资源可以解决它的工作原理.
非常感谢您的帮助!
我想用GKLocalPlayer和saveGameData方法保存游戏数据.
[localPlayer saveGameData:playerData withName:@"SolarFlares" completionHandler:^(GKSavedGame *savedGame, NSError *error) {
if (savedGame != nil) {
NSLog(@"Player data saved to GameCenter");
}else{
NSLog(@"Player=%@ data NOT saved to GameCenter, error=%@", localPlayer, error.description);
}
}];
Run Code Online (Sandbox Code Playgroud)
上面的代码在xcode模拟器上工作正常,但是当我在我的iPhone上尝试它时,我得到如下所示的错误代码.我无法弄清楚这一点.我无法控制它保存游戏数据的位置,那么为什么系统会尝试将其保存在没有权限的地方!?!
Error Domain=NSCocoaErrorDomain Code=513 "The operation couldn’t be completed. (Cocoa error 513.)" UserInfo=0x171661f80
{NSFileOriginalItemLocationKey=file:///private/var/.DocumentRevisions-V100/PerUID/501/e4/com.apple.ubiquity/iCloud~com~MJinc~SolarFlares_A3695FA3-6BFA-4862-B53A-F01E192726CC_1a.bundle/,
NSURL=file:///private/var/.DocumentRevisions-V100/PerUID/501/e4/com.apple.ubiquity/iCloud~com~MJinc~SolarFlares_A3695FA3-6BFA-4862-B53A-F01E192726CC_1a.bundle/,
NSFileNewItemLocationKey=file:///private/var/mobile/Containers/Data/Application/EF8BC999-1D4B-42B2-B8D9-0B0A79543C03/tmp/(A%20Document%20Being%20Saved%20By%20Solar%20Flares)/iCloud~com~MJinc~SolarFla
res_A3695FA3-6BFA-4862-B53A-F01E192726CC_1a.bundle, NSUnderlyingError=0x170c48b50 "The
operation couldn’t be completed. Permission denied"}
Run Code Online (Sandbox Code Playgroud)
// Micke ...
我没有在GameKit文档中找到从我的应用程序中删除玩家得分的方法.这可能吗?
我有一个非常简单的问题,但我没有找到任何解决方案.我几周前在AppStore中更新了我的应用程序名称,就在几天前,我在GameCenter中看到它没有改变.
是我必须改变的东西还是我应该与Apple支持联系?
看看:


我正在努力,GameKit.framework我正在尝试在两个iPhone之间建立可靠的通信.
我正在使用该GKMatchSendDataReliable模式发送包裹.
文件说:
GKMatchSendDataReliable数据将持续发送,直到预期收件人成功接收或连接超时.可靠的传输按发送顺序传送.当您需要保证交货时使用此选项.
适用于iOS 4.1及更高版本.在GKMatch.h中声明.
我在WiFi连接不良时遇到了一些问题.在GameKit没有声明失去了联系,但有些包永远不会到来.
我可以依靠100%可靠的通信使用,GKMatchSendDataReliable还是Apple只使用花哨的名称来实现他们没有实现的东西?
是否可以使用新的GameKit框架连接到多个设备?到目前为止,我看到的所有示例都显示了我们如何连接到1个设备.即使是默认的连接接口,用户也只能选择一个连接.
谢谢.
我想在p2p游戏中使用自定义界面连接其他iDevices.我知道我可以使用GKSession和GKSessionDelegate或使用较低级别的Bonjour浏览.但他们俩都会通过蓝牙和wifi搜索设备.
我只想列出蓝牙设备.我知道这在过去被回答为不可能,但飞行控制应用程序似乎能够做到这一点.
在我使用GameCenter开发的游戏中,我想处理以下场景:
在我的测试中,我发现通过调用"authenticateWithCompletionHandler"(由Apple的示例GameCenterManager调用)引发的警报弹出窗口建议登录到GameCenter只出现有限次数(4或5).最后一次显示,它显示"游戏中心已禁用,请使用Game Center应用程序登录以启用"Afterwards".之后,调用authenticateWithCompletionHandler不再执行任何操作 - 根本没有提示.
玩FruitNinja我试图复制这个.但是,在他们的情况下,每当我点击GameCenter项目(例如,成就)时,会出现"禁止游戏中心"的弹出窗口.
我想要做的是复制功能:也就是说,如果您没有登录到GameCenter,则在您单击Leaderboard菜单项时始终显示标准游戏中心警报.
有没有办法了解标准"登录游戏中心"警报是否已经出现,或者强制它始终出现(而不仅仅是前几次尝试)?
我正在使用新的回合制iOS5 API开发基于回合制的iOS游戏.
您需要为此实现的委托协议之一是GKTurnBasedEventHandlerDelegate.实现的方法之一是handleTurnEventForMatch.这是来自Apple文档的这种方法:
handleTurnEventForMatch
当本地玩家轮到一个回合制比赛时,发送给代表.
- (void)handleTurnEventForMatch:(GKTurnBasedMatch *)match
Run Code Online (Sandbox Code Playgroud)
参数
match - 包含匹配当前状态的匹配对象.
讨论
当您的代表收到此消息时,玩家已接受正在进行的匹配的推送通知.您的游戏应该结束它正在执行的任何任务,并切换到匹配对象提供的匹配信息.
我的大部分游戏都在运作.我收到通过上述方法收到的动作的通知.我也看到应用程序图标上的徽章正在成功更新.
但是,当转弯事件进来时,我没有收到任何其他系统通知; 通知中心没有显示任何内容等.我是否需要在GameKit之外做一些事情才能启用此功能?当我获得handleTurnEventForMatch时,是否需要手动发送本地通知?文档似乎意味着没有,因为它上面说"当你的代表收到这条消息时,玩家已经接受了正在进行的比赛的推送通知."
所以这似乎意味着玩家点击推送通知来调用此方法(但当然它们从未出现,所以我没有!)
如何在我的应用中启用基于回合制事件的推送通知,我需要做什么?当我收到上述方法时,我是否需要实际发送本地通知(考虑到上述文档的措辞,这似乎与意图相矛盾).
在更新高分之前,GameCenter在发布之前一直很好.现在,已经超过24小时,高分将根本不会更新.相反,它只在"今天"中显示我的分数并且不与任何人分享,也不会看到其他人的分数,尽管他们已经玩过这个游戏.
在发布之前它运行良好.
这就是我所做的,
在Xcode中启用了GameCenter
在iTunes Connect中创建了排行榜
已启用应用程序的排行榜
添加了正确的方法来验证播放器和显示排行榜
添加了正确的方法来发送分数
它在发布之前都在应用程序中工作,并为每个人更新了分数.现在它只是用自己的分数更新那个人的分数.
我甚至在iTunes Connect中删除了自己的分数,它不会在任何设备上更新,只是在删除之前保留分数.
即使很多人参加比赛之后,这就是今天的部分
这就是All Time看起来的样子,自发布以来它没有更新过一次
有这样的多个问题,但不是最近的,并处理沙盒(已被淘汰),一切似乎都是正确的
我缺少一个至关重要的步骤吗?Apple的服务器是否已关闭?新应用程序更新排行榜需要很长时间吗?
gamekit ×10
iphone ×6
game-center ×5
ios ×5
objective-c ×3
bluetooth ×1
bonjour ×1
center ×1
cocoa-touch ×1
ipad ×1
p2p ×1
swift ×1