• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

objective-c - GameKit:谁是大师?

[复制链接]
菜鸟教程小白 发表于 2022-12-11 20:47:47 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在构建一个应用程序(顺便说一下,已经在应用程序商店中,称为 MotAMot):一个令人难以置信的免费应用程序。

这款游戏提出了多种游戏模式:独立、多人使用相同的 iDevice 和 MULTI,其中 2 名玩家同时玩同一个游戏板,但每个人都使用自己的 iDevice。

我正在使用 GKPeerPickerController 实例来管理两个设备之间的连接。

我唯一担心的是我无法决定谁是 iPhone 将扮演服务器角色,谁是客户端。当一个玩家向另一个玩家发送邀请时,这很酷,我可以决定这个玩家将成为服务器。

例如,玩家 1 邀请玩家 2 加入游戏。但与此同时(或几秒钟后),玩家 2 在其设备上显示邀请弹出窗口之前邀请了玩家 1。我的问题:我如何确定玩家 1 首先邀请了玩家 2(或相反)?我的意思是,我当然收到了一些回调,因为我正在实现 GKPeerPickerControllerDelegate 协议(protocol)。但是似乎我在两台设备上都收到了相同的消息,无论谁真正启动了连接。

// New connection
- (void)peerPickerControllerGKPeerPickerController *)picker
          didConnectPeerNSString *)peer
               toSessionGKSession *)session
{
    // Set the session
    [self setCurrentSession:session];

    // I'm implementing the GKSessionDelegate protocol
    [session setDelegate:self];

// I'll handle any received data from my enemy
    [session setDataReceiveHandler:self withContext:nil];

// I'm cleaning the room
    [myPicker setDelegate:nil];
    [myPicker dismiss];
    [myPicker autorelease];
    myPicker = nil;
}


// A peer changed its state
- (void)sessionGKSession *)session peerNSString *)peer didChangeState:    (GKPeerConnectionState)state
{
    switch (state)
    {
        case GKPeerStateConnected:
            [self peerConnected:peer];
            break;
         case GKPeerStateDisconnected:
            // Libération de la session
            [currentSession release];
            currentSession = nil;            
            break;
        case GKPeerStateAvailable:
            break;
        case GKPeerStateConnecting:
             break;
        case GKPeerStateUnavailable:
             break;
    }
}

有人对此有任何想法吗?



Best Answer-推荐答案


你为什么不能用老式的方法解决这个问题?例如,文明 IV 会将您带到服务器机房屏幕,在这种情况下,您是等待客户端的服务器,您不接受任何新连接是有意义的。

我会做类似的事情。原来this person有一个问题(稍微相关),据我了解,它以类似的方式解决。

关于objective-c - GameKit:谁是大师?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8604980/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap