iOS GameCenter分析

584 阅读3分钟
  1. 定义

Apple的游戏社交平台

  1. 影响

可以看到GameCenter好友正在玩的游戏,提高曝光机会;排行榜被好友超越,会收到GameCenter的推送,可提高用户活跃度;另外还有可能会被App Store的推荐。

  1. 提供的功能

  1. 身份认证
  2. 排行榜
  3. 成就
  4. 多人游戏
  5. 好友系统
  1. 框架

玩家限制类型:

  1. isUnderage(低于年龄要求)
  2. isMultiplayerGamingRestricted(禁止多人游戏)
  3. isPersonalizedCommunicationRestricted(禁止交流)

以上属性都是由Game Center自动设置,基于用户的年龄和国家/地区的法律规定来确定用户是否有权限,我们需要根据上面的授权情况对游戏内容进行调整

GKLocalPlayer 和 GKPlayer的区别

GKLocalPlayer 是一个系统单例,保存当前玩家的信息,不可自己创建

GKPlayer 是用户的信息数据的model,可以自己创建,会话的用户信息也是通过GKPlay封装

  1. 仪表盘(Dashboard)

作用:

提供了统一的、一站式的UI,可以快捷地访问玩家的资料、排行榜、成就、挑战和好友列表。如:

实现:

使用GKGameCenterViewController类

typedef NS_ENUM(NSInteger, GKGameCenterViewControllerState) {
    GKGameCenterViewControllerStateDefault = -1,
    GKGameCenterViewControllerStateLeaderboards, //排行榜
    GKGameCenterViewControllerStateAchievements, //成就
    GKGameCenterViewControllerStateChallenges, //挑战
    GKGameCenterViewControllerStateLocalPlayerProfile, //用户信息
    GKGameCenterViewControllerStateDashboard, //用户在GameCenter上全部的信息
    GKGameCenterViewControllerStateLocalPlayerFriendsList //好友列表
};
  1. 访问点

作用:

可作为游戏中进入用户信息页面的一个入口

实现:

使用GKAccessPoint类(是个单例),指定位置(只能指定四个角的位置),是否高亮、是否激活显示

GKAccessPoint *accessPoint = [GKAccessPoint sharedAccessPoint];
accessPoint.location = GKAccessPointLocationBottomLeading; 
accessPoint.showHighlights = YES;
accessPoint.isActive = YES;
  1. 好友

作用:

  1. 排行榜

  2. 成就

  3. 挑战

  4. 多人游戏

  5. 好友资料(可以在游戏里显示一些好友信息,如果头像,昵称等)

注意:游戏获取GameCenter好友列表,需要获取授权,Info.plist上面需要写说明

if ([GKLocalPlayer localPlayer].isAuthenticated) {
    [[GKLocalPlayer localPlayer] loadFriendsWithCompletionHandler:^(NSArray *friends, NSError *error) {
        if (error != nil) {
            NSLog(@"获取好友列表失败:%@", [error localizedDescription]);
        } else {
            NSLog(@"已获取好友列表");
            for (GKPlayer *friend in friends) {
                NSLog(@"%@", friend.alias ?: @"未知");
            }
        }
    }];
}
  1. 排行榜

类型:

  1. 经典排行榜

    1. 一个累计行榜,数据是持久化的
  2. 循环排行榜

    1. 重复出现的短时间的排行榜,适合周期性的活动
    2. 一个时间周期之后,玩家可以回到同一起跑线重新开始争夺排名
  • 注意:
    1. 配置循环排行榜时,为了保证同一个活动之间不会有重叠,活动的重启周期不能短于其时限。正确配置如:
    1. 历史查询:

      1. 经典排行榜:指定id,时间,地区即可

      2. 循环排行榜:活动事件在过期之后还可以保存30天,本地玩家只能访问当前和上一个事件(每个用户最多只能看到两个循环排行榜)

  •   排行榜类型:
    1. Gamekit默认UI
    2. 自定义UI(自己拉取排行榜数据)
  1. 成就

四种状态:

  1. 多人游戏

      作用:   提供游戏开始时的好友匹配,邀请玩家的便捷功能

      匹配游戏类型:

    1. 即时制(搜索玩家,建立连接,发送数据)

      1. 格斗/赛车/动作游戏
    2. 回合制(搜索玩家,建立连接,发送数据,回合管理,结合iCloud进行保存数据)

      1. 扑克/桌面游戏
        • GKTurnBasedMatch:这是一个代表 GameCenter 多人游戏匹配的类,可以用来管理游戏回合。它提供了开始游戏、轮流操作、结束游戏等方法,同时还可以获取玩家信息、游戏状态等信息。
        • GKTurnBasedEventHandler:这是一个 GameCenter 事件处理程序,用于处理与 GKTurnBasedMatch 相关的事件,例如玩家加入或退出游戏、玩家回合结束等。在事件发生时,可以使用该接口的方法进行相应的处理。
    3. 自建服务器(提供玩家列表)

      1. MOBA/荒野求生