标签: gamekit

iPhone:使用Game Kit发送大量数据

我正在尝试编写一个应用程序,通过Game Kit框架与运行应用程序的其他iPhone交换数据.iPhone发现彼此并且连接正常,但是当我发送数据时会出现问题.我知道iPhone已正确连接,因为当我序列化NSString并通过连接发送它时,另一端就好了.但是当我尝试存档一个更大的对象(使用NSKeyedArchiver)时,我收到错误消息"AGPSessionBroadcast failed(801c0001)".

我假设这是因为我发送的数据太大(我的文件大小约为500k,Apple似乎建议最多95k).我已经尝试将数据分成几个转移,但我永远无法在另一端正确地取消归档.我想知道是否有其他人遇到过这个问题,以及你是如何解决它的.

iphone objective-c gamekit

5
推荐指数
1
解决办法
4254
查看次数

在运行相同应用程序的两个iOS设备之间传输对象的最佳方法是什么?

我试图让我的iOS应用程序能够将对象转移到运行相同应用程序的另一个iOS设备.该对象的订单是几千KB的内存.有没有人建议如何做到这一点?我正在考虑使用FTP,但这看起来有点混乱.有没有人对可能使用GameKit有任何建议?或者是其他东西?

iphone data-transfer file gamekit ios

5
推荐指数
1
解决办法
780
查看次数

在互联网上的游戏套件

关于wifi文档的游戏套件谈论本地wifi,它建立在bonjour之上.这是否意味着它不能通过互联网工作,将用户/播放器定位在不同的子网,不同的ISP等等

如果我需要连接到互联网上的播放器/用户,我认为我需要设置服务器,对吧?

iphone cocoa-touch gamekit

5
推荐指数
1
解决办法
2057
查看次数

是否可以从iOS发送蓝牙数据到Android?

我想知道是否有可能制作GameKit广播数据,以便Android设备可以获取信息.如果可能的话,我打算发送XML数据(一个Plist,没什么复杂的).我不需要在iOS设备上进行任何确认,我只想发送信息.

理论上,Android应该能够接收原始编码的字节(或位),然后在Android上解码它们,成为我的问题,但我无法对GameKit广播信息进行成像,直到它有一个"同行"发送给.

是否可以通过蓝牙将信息从iOS设备发送到Android设备?

iphone android bluetooth gamekit

5
推荐指数
1
解决办法
3740
查看次数

Game Kit Peer to Peer

我编写了一个使用游戏套件对等连接的炸弹人应用程序.问题是,一段时间后游戏不再同步.

我查看了GKTanks的示例代码并使用了他们的模型.同伴之间没有客户/服务器关系,所以我没有在我的游戏中使用一个.两个同伴都维持一个游戏状态,他们根据收到的数据更新.

我有一个NSTimer,用于在每一帧运行游戏循环.NSTimers并不是同步的,所以有时游戏状态会变得与众不同:玩家大约在同一时间接通电源并且他们都获得了通电,因为发送数据需要一段时间.

我很感激任何关于使应用程序工作的想法.我正在考虑重写代码以使用客户端 - 服务器,但我不确定这是不是一个好主意......

谢谢!

编辑:我更改了代码,以便选择随机播放器作为主机.每当玩家放置炸弹时,他会询问服务器放置它的位置.服务器返回玩家位置(如服务器上所示),然后告诉玩家放置炸弹的位置.

对于加电,服务器检查玩家是否接通了电源,如果他这样做,则发送一个通知他的数据包.

现在出现了另一个问题.设备之间的延迟很高(我正在使用蓝牙连接).在客户端轻敲按钮放置炸弹后,放置炸弹大约需要0.2秒.

我可靠地发送所有数据.我这样做了吗?

iphone networking gamekit ios

5
推荐指数
1
解决办法
982
查看次数

iOS和Android设备之间的对等通信

所以我是一个相对较新的iOS开发人员,但多亏了Stackoverflow,我设法为我的应用程序提供点对点数据通信,而无需使用gamekit/GKSessions的服务器.基本上,一个iOS设备充当服务器,而其他设备只是连接到它以接收特定于应用程序的数据.

现在,该应用程序目前正在Android上移植,我想知道是否有一种方法可以让Android设备连接到iOS应用程序,其行为方式与ios应用程序相同.Android开发人员建议alljoyn是Android的最佳解决方案,但似乎iOS尚未推出.

如果您对此有任何想法,请建议.如果有一个解决方案涉及到iOS端的返工,那么我愿意接受它!

android p2p gamekit ios

5
推荐指数
1
解决办法
7372
查看次数

iOS6 TurnBasedMatch问题

在使用iOS6实现回合制游戏时,我偶然发现了一些奇怪的东西.

我创建了一堆比赛,游戏的图标显示为"29".但是在运行时:

[GKTurnBasedMatch loadMatchesWithCompletionHandler:^(NSArray *matches, NSError *error) {
}];
Run Code Online (Sandbox Code Playgroud)

我得到零匹配,如果我尝试创建一个新匹配,我会收到此错误:

Error Domain=GKErrorDomain Code=21
Run Code Online (Sandbox Code Playgroud)

哪个指向新的 GKErrorTurnBasedTooManySessions

但我找不到那些"会议"并结束它们!

gamekit ios6

5
推荐指数
1
解决办法
394
查看次数

handleTurnEventForMatch:didBecomeActive:未调用

我在多人游戏中遇到了一些奇怪的问题.

方法

(void)handleTurnEventForMatch:(GKTurnBasedMatch *)`match `didBecomeActive:(BOOL)didBecomeActive
Run Code Online (Sandbox Code Playgroud)

应该从其他玩家转弯.

但它的工作是不一致的 - 它没有任何规律性地接受巡回演出.

1我使用真实设备进行测试.

2在Itunesconnect启用的所有内容中,版本都是正确的.

3 [GKTurnBasedEventHandler sharedTurnBasedEventHandler].delegate不是很重要.

并随机收到转弯.

有人能帮助我吗?

notifications objective-c gamekit ios game-center

5
推荐指数
0
解决办法
310
查看次数

处理Game Center身份验证

根据Apple文档,我们应该做这样的事情来处理GC身份验证:

- (void) authenticateLocalUser
{
    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];

    if(localPlayer.authenticated == NO)
    {
        [localPlayer setAuthenticateHandler:(^(UIViewController* viewcontroller, NSError *error) {
            if (!error && viewcontroller)
            {
                DLog(@"Need to log in");
                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
                [appDelegate.window.rootViewController presentViewController:viewcontroller animated:YES completion:nil];

            }
            else
            {
                DLog(@"Success");

            }
        })];

    }
}
Run Code Online (Sandbox Code Playgroud)

我们获得了这些信息:

如果设备没有经过身份验证的播放器,Game Kit会将视图控制器传递给您的身份验证处理程序.显示时,此视图控制器显示身份验证用户界面.您的游戏应该暂停需要用户交互的其他活动(例如您的游戏循环),呈现此视图控制器然后返回.当播放器完成与其交互时,视图控制器将自动关闭.

我的问题是,我们如何知道此视图控制器何时被解雇,以及我们如何知道身份验证是否成功?

显然我需要知道身份验证是否有效,我需要知道何时恢复游戏,如果我不得不暂停它,因为提出了神奇的GC视图控制器.

authentication gamekit ios game-center

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

使用GameKit时,将源文件类型更改为Objective-C++会导致链接器错误

所以我在Objective-C应用程序上使用Xcode 6.1.我的应用程序使用GameKit框架.

我试图从我的GameViewController(Objective-C源代码)调用外部C++方法.

为了使GameViewController.mm编译,我必须手动将类型设置为'Objective-C++ Source'.

但是,即使源现在编译,它也将无法链接:

    Undefined symbols for architecture x86_64:
 "_OBJC_CLASS_$_GLKViewController", referenced from:
      _OBJC_CLASS_$_GameViewController in GameViewController.o
  "_OBJC_METACLASS_$_GLKViewController", referenced from:
      _OBJC_METACLASS_$_GameViewController in GameViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

我只能通过将类型设置回'Objective-C Source'并删除对外部C++函数的调用来消除链接器错误.

如果我的源代码编译为'Objective-C++ Source'而不是'Objective-C Source'类型,为什么链接器会失败?

请注意,我在Build-phases中正确地链接了GameKit.

c++ objective-c gamekit

5
推荐指数
1
解决办法
1089
查看次数