标签: gamekit

为回合制多人iPhone游戏构建自己的游戏服务器

游戏套件编程指南 ...

多人游戏允许有兴趣玩在线多人游戏的玩家互相发现并连接到比赛中.根据您的需要,您的应用程序可以使用Game Kit将所有参与者连接在一起,或让Game Kit为您提供一系列玩家.在后一种情况下,您将提供自己的网络实现,将播放器连接到您提供的服务器

我想为游戏中心构建一个基于回合制的多人游戏iPhone游戏,并且需要编写我自己的游戏服务器.我计划使用Game Center API进行玩家身份验证,记分牌和配对玩家,但我仍然需要构建自己的回合制游戏服务器来控制多人游戏通信.这是一个基于时间的游戏,因此服务器将处理诸如同步游戏开始和在游戏完成时通知玩家以及匹配结果之类的事情.在这一点上,我只想弄清楚从哪里开始构建游戏服务器,我真的很难找到任何覆盖的好资源......

  1. 如何构建和实施基于回合制的游戏服务器.理想情况下,我想找一本书或在线文章,其中包含一些代码,但我读过的每本书都讨论了iPhone上的多人游戏,同样的事情,"开发Web服务器超出了本书的范围,但我们我将专注于连接到这样一台服务器所需的客户端代码." .我在哪里可以找到有关开发Web服务器的信息?!

  2. 要使用的好库/ API

  3. 安全问题和常见解决方案
  4. 现有的开源软件包
  5. 我一直想为其他即将开展的项目学习Ruby on Rails,我想一举两得,这个框架能否很好地实现回合制游戏服务器?

任何人都可以帮我引导一些涵盖这个主题的好书或在线资源吗?或直接回答我的问题?我不得不认为开发游戏服务器对于任何为iOS游戏中心构建游戏的人来说都是一个非常普遍的问题,因为大多数都是多人游戏,但我无法弄清楚为什么没有资源可以解决它的工作原理.

非常感谢您的帮助!

iphone ruby-on-rails gamekit ios

16
推荐指数
1
解决办法
5064
查看次数

GKLocalPlayer和saveGameData的问题

我想用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 ...

objective-c gamekit ios game-center

14
推荐指数
1
解决办法
711
查看次数

有没有办法以编程方式删除Apple游戏中心的分数?

我没有在GameKit文档中找到从我的应用程序中删除玩家得分的方法.这可能吗?

center gamekit

12
推荐指数
3
解决办法
8299
查看次数

应用程序名称已更新但未在GameCenter上更新

我有一个非常简单的问题,但我没有找到任何解决方案.我几周前在AppStore中更新了我的应用程序名称,就在几天前,我在GameCenter中看到它没有改变.

是我必须改变的东西还是我应该与Apple支持联系?

看看:

名称已在iTunes Connect中正确更改

该应用程序的旧名称相同

iphone gamekit ios game-center

12
推荐指数
1
解决办法
891
查看次数

GameKit的通信与GKMatchSendDataReliable一起可靠吗?

我正在努力,GameKit.framework我正在尝试在两个iPhone之间建立可靠的通信.

我正在使用该GKMatchSendDataReliable模式发送包裹.

文件说:

GKMatchSendDataReliable

数据将持续发送,直到预期收件人成功接收或连接超时.可靠的传输按发送顺序传送.当您需要保证交货时使用此选项.

适用于iOS 4.1及更高版本.在GKMatch.h中声明.

我在WiFi连接不良时遇到了一些问题.在GameKit没有声明失去了联系,但有些包永远不会到来.

我可以依靠100%可靠的通信使用,GKMatchSendDataReliable还是Apple只使用花哨的名称来实现他们没有实现的东西?

objective-c gamekit ios game-center

12
推荐指数
1
解决办法
655
查看次数

iPhone p2p - 有没有办法连接到多个设备?

是否可以使用新的GameKit框架连接到多个设备?到目前为止,我看到的所有示例都显示了我们如何连接到1个设备.即使是默认的连接接口,用户也只能选择一个连接.

谢谢.

iphone gamekit iphone-sdk-3.0

11
推荐指数
1
解决办法
5594
查看次数

仅通过蓝牙和没有GKPeerPickerController设置iPhone P2P

我想在p2p游戏中使用自定义界面连接其他iDevices.我知道我可以使用GKSessionGKSessionDelegate或使用较低级别的Bonjour浏览.但他们俩都会通过蓝牙和wifi搜索设备.

我只想列出蓝牙设备.我知道这在过去被回答为不可能,但飞行控制应用程序似乎能够做到这一点.

iphone p2p bonjour bluetooth gamekit

11
推荐指数
1
解决办法
1890
查看次数

GameCenter登录提醒

在我使用GameCenter开发的游戏中,我想处理以下场景:

  1. 用户启动游戏.系统会显示系统警报,提示他登录GameCenter.他暂时忽略了它.
  2. 过了一会儿,用户想要登录GameCenter并点击(例如)Leaderboards菜单项.他现在选择取消而不是登录.
  3. 这个过程重复了好几次.最终用户想要登录GameCenter.他再次单击Leaderboard菜单项.

在我的测试中,我发现通过调用"authenticateWithCompletionHandler"(由Apple的示例GameCenterManager调用)引发的警报弹出窗口建议登录到GameCenter只出现有限次数(4或5).最后一次显示,它显示"游戏中心已禁用,请使用Game Center应用程序登录以启用"Afterwards".之后,调用authenticateWithCompletionHandler不再执行任何操作 - 根本没有提示.

玩FruitNinja我试图复制这个.但是,在他们的情况下,每当我点击GameCenter项目(例如,成就)时,会出现"禁止游戏中心"的弹出窗口.

我想要做的是复制功能:也就是说,如果您没有登录到GameCenter,则在您单击Leaderboard菜单项时始终显示标准游戏中心警报.

有没有办法了解标准"登录游戏中心"警报是否已经出现,或者强制它始终出现(而不仅仅是前几次尝试)?

iphone gamekit game-center

11
推荐指数
2
解决办法
1万
查看次数

如何获得GameKit回合制比赛的通知?

我正在使用新的回合制iOS5 API开发基于回合制的iOS游戏.

您需要为此实现的委托协议之一是GKTurnBasedEventHandlerDelegate.实现的方法之一是handleTurnEventForMatch.这是来自Apple文档的这种方法:

handleTurnEventForMatch

当本地玩家轮到一个回合制比赛时,发送给代表.

- (void)handleTurnEventForMatch:(GKTurnBasedMatch *)match
Run Code Online (Sandbox Code Playgroud)

参数

match - 包含匹配当前状态的匹配对象.

讨论

当您的代表收到此消息时,玩家已接受正在进行的匹配的推送通知.您的游戏应该结束它正在执行的任何任务,并切换到匹配对象提供的匹配信息.

我的大部分游戏都在运作.我收到通过上述方法收到的动作的通知.我也看到应用程序图标上的徽章正在成功更新.

但是,当转弯事件进来时,我没有收到任何其他系统通知; 通知中心没有显示任何内容等.我是否需要在GameKit之外做一些事情才能启用此功能?当我获得handleTurnEventForMatch时,是否需要手动发送本地通知?文档似乎意味着没有,因为它上面说"当你的代表收到这条消息时,玩家已经接受了正在进行的比赛的推送通知."

所以这似乎意味着玩家点击推送通知来调用此方法(但当然它们从未出现,所以我没有!)

如何在我的应用中启用基于回合制事件的推送通知,我需要做什么?当我收到上述方法时,我是否需要实际发送本地通知(考虑到上述文档的措辞,这似乎与意图相矛盾).

iphone cocoa-touch objective-c gamekit ipad

11
推荐指数
1
解决办法
3297
查看次数

GameCenter排行榜在发布后不会更新

在更新高分之前,GameCenter在发布之前一直很好.现在,已经超过24小时,高分将根本不会更新.相反,它只在"今天"中显示我的分数并且不与任何人分享,也不会看到其他人的分数,尽管他们已经玩过这个游戏.

在发布之前它运行良好.

这就是我所做的,

在Xcode中启用了GameCenter

在此输入图像描述

在iTunes Connect中创建了排行榜

在此输入图像描述

已启用应用程序的排行榜

在此输入图像描述

添加了正确的方法来验证播放器和显示排行榜

在此输入图像描述

添加了正确的方法来发送分数

在此输入图像描述

它在发布之前都在应用程序中工作,并为每个人更新了分数.现在它只是用自己的分数更新那个人的分数.

我甚至在iTunes Connect中删除了自己的分数,它不会在任何设备上更新,只是在删除之前保留分数.

即使很多人参加比赛之后,这就是今天的部分

在此输入图像描述

这就是All Time看起来的样子,自发布以来它没有更新过一次

在此输入图像描述

有这样的多个问题,但不是最近的,并处理沙盒(已被淘汰),一切似乎都是正确的

我缺少一个至关重要的步骤吗?Apple的服务器是否已关闭?新应用程序更新排行榜需要很长时间吗?

gamekit ios game-center swift

11
推荐指数
1
解决办法
1017
查看次数