我正在开发一款iOS回合制游戏(gamecenter)。问题是:我什么时候必须保存游戏数据?当然,当轮到玩家时,应用程序进入后台或在玩家的移动传递给其他玩家之前终止,但是还有其他应该保存游戏数据的场景吗? 最佳答案 一般而言,对于任何客户端-服务器应用程序(游戏或其他),每当用户执行服务器需要了解的操作时,客户端应将数据持久保存回服务器。换句话说,如果用户执行某个操作而服务器从不知道它会导致问题,则需要将其持久化。例如,如果用户执行了某项操作,然后他们的手机爆炸了,那么当他们在新手机上打开应用程序时,如果还没有执行某项操作,是否会出
我在通过GameCenter多人游戏在设备之间发送数据时遇到了很多问题。我可以建立匹配并连接两个用户,但由于某种原因我无法发送数据。这是我的代码:-(void)sendData{NSError*error;intmyScore=scoreInt;NSData*packet=[NSDatadataWithBytes:&myScorelength:sizeof(myScore)];[theMatchsendDataToAllPlayers:packetwithDataMode:GKMatchSendDataUnreliableerror:&error];if(error!=nil){NSL
我想知道当游戏session正在进行并且我们无法将我们的数据传送给其他玩家时,我如何获得本地玩家的断开连接消息。由于文档中没有任何内容说“只要您的连接失败,此方法就会通知您”,我有点不知所措。我试图使用这段代码,希望它能工作,但这是徒劳的。“我们断开了连接”。消息永远不会被触发。-(void)match:(GKMatch*)theMatchplayer:(NSString*)playerIDdidChangeState:(GKPlayerConnectionState)state{if(self.match!=theMatch)return;switch(state){caseGKPl
我是GameCenter的新手,我已经设法邀请friend并成功打开了按钮的IBAction。我正在使用GKTurnbasedMatch来管理回合,但对于多人游戏,如何向邀请玩家选择其类别的所有玩家显示卡片。我怎样才能得到这个? 最佳答案 这是有关Gamecenter/回合制的精彩教程:http://www.raywenderlich.com/5509/beginning-turn-based-gaming-with-ios-5-part-2特别是这部分:IfwefindthatlastTurnisnull,we’llassumet
当我创建以下GKRequest对象以创建回合制游戏时:GKMatchRequest*gameRequest=[[GKMatchRequestalloc]init];gameRequest.minPlayers=2;gameRequest.maxPlayers=2;gameRequest.playerAttributes=MY_ROLE_1;此请求不应与具有相同playerAttributes的另一个请求匹配,但它是。有谁知道回合制游戏是否会忽略playerAttributes? 最佳答案 根据此页面:http://developer
我制作了一款iOS多人GameCenter游戏,但在发布之前发现了一个我不知道如何解决的问题。在编码过程中,我使用了RayWenderlich教程http://www.raywenderlich.com/3276/how-to-make-a-simple-multiplayer-game-with-game-center-tutorial-part-12显示GameCenterViewController,创建连接并可以玩游戏,直到两个设备都在同一个Wifi网络上。如果我关闭手机上的Wifi并使用3G网络,然后尝试开始新游戏-在这种情况下不再建立连接。两个设备找到对方,但卡在“正在连接
快速版:为什么UILabel的“center”属性的值在其Size属性绑定(bind)到其父容器的顶部和底部之间发生变化,我该怎么做才能改变或者绕过这种行为?包含详细信息的长版:我正在像这样在两个标签之间画一条线(黄线):为了计算直线的终点,我使用了UILabels的中心属性(在这张照片中,标签表示2.5kHz和20Hz),然后是标签高度的+或-一半。此技术在下面的示例/图片中效果很好。然而,在我将屏幕尺寸切换为iPhone5(更高)的设计阶段,我通过在尺寸检查中更改它来将“20Hz”标签绑定(bind)到底部而不是顶部,如下面两张图片所示。请注意,在这两种情况下,原点仍在左上角:这会
我正在尝试实现一个针对iOS6的gamecenter感知应用程序。为了提供一些有关环境的信息,我在macos10.7.5上工作,XCode版本为4.5.2,xcode正在运行iphone和ipad模拟器版本6.0。问题是我无法通过ipad或iphone模拟器以沙盒模式连接到gamecenter,但在我的iphone中测试时,相同的代码可以按预期工作。我遵循了苹果开发者库中的gamecenter编程指南,我得到了这个atm,它是从appdelegate中的applicationDidFInishLaunching调用的:-(void)authenticateLocalUser:(UIVi
我有一个关于在iOS上玩多人游戏时通过GameCenter发送和接收数据的问题。在我匹配两个人后的游戏中,游戏被带到用户可以开始玩的游戏屏幕。由于两台设备不会同时加载游戏画面(由于网络原因),我的第一台设备中的viewDidLoad函数有时会在第二台设备加载画面时已经完成。这意味着例如在viewDidLoad中,我通过本地播放器别名发送到较慢的设备,因为较慢的设备在较快的设备加载时仍在加载,当屏幕加载时,我的较快的设备接收速度较慢的设备播放器别名,但反之则不然。因此,有没有什么简单的方法可以让一台设备检测另一台设备何时加载,并从那里推送任何相关代码? 最佳答
我正在制作一个iPhone应用程序(游戏),虽然这不是我的第一款游戏,但这将是我的第一款使用网络连接的游戏(我打算添加一些乘数功能)那么,现在我的问题。我希望玩家能够打开我的应用程序,登录到游戏中心,然后使用它连接到我的服务器。这可能吗?换句话说:PlayersignsintogamecenterSendsusernametomyserverif(gamecenterusernamedoesntexist){Addtheirusernametomysqldatabase}elseif(usernamedoesexist){Sendsigninsuccessfulmessagetodev