Reach new players with Game Center dashboard
Graphics & Games 进阶 20m

通过 Game Center 面板触达新玩家

Reach new players with Game Center dashboard

2022年6月6日

在 Apple 官方观看视频

一句话判断

Game Center 今年的重头戏是 Activity Feed——如果你已经接入了 GameKit 的排行榜和成就,你的游戏会自动出现在玩家的社交信息流中。

这场 Session 讲了什么

Game Center 在 2022 年做了重大改版,核心是全新的 Activity 功能:

Activity Feed:重新设计的 Game Center Dashboard 现在包含一个社交信息流,展示玩家好友的游戏动态。包括获得新成就、排行榜排名跃升、好友间分数超越等事件。玩家还会收到好友超越自己分数的推送通知——这个通知由 Game Center 系统发送,不需要你请求推送权限。

已有功能自动产生 Activity:如果你已经在用 GameKit 的排行榜和成就,不需要写任何新代码,Activity 就会自动生成。排行榜排名进入前 25%、超越好友分数、完成所有成就等都会产生动态。

Unity 插件:Apple 官方发布了 GameKit 的 Unity 插件,提供完整的 C# API。Session 中的代码示例同时提供了 Swift 和 C# 版本。

Access Point:在游戏内显示 Game Center 入口的悬浮按钮,玩家点击即可打开 Dashboard 查看 Activity。

值得深挖的点

Activity Feed 的零成本社交传播是这次更新对开发者最有价值的部分。过去游戏内的社交互动需要玩家主动打开排行榜页面。现在好友的游戏动态会以信息流的形式推送到 Dashboard,你的游戏只要有人玩就有机会被更多人看到。这是一个不需要额外开发成本的发现机制。

推送通知由系统代发这个细节很重要。你的游戏不需要请求用户授权通知权限,Game Center 系统自己发送”好友超越了你的分数”这类通知。这降低了社交互动的摩擦,也避免了”请求通知权限”这个容易让用户反感的弹窗。

Recurring Leaderboards 的持续回访策略值得重视。Session 建议通过循环排行榜(每周/每月重置)创造持续的竞争理由,让玩家有动力反复回到你的游戏。

代码片段

Game Center 认证(Swift):

import GameKit

// 尽早在游戏启动时调用(甚至可以在标题画面)
GKLocalPlayer.local.authenticateHandler = { viewController, error in
    if let vc = viewController {
        // 需要展示登录界面
        present(vc, animated: true)
    }
    if error != nil {
        // 处理认证错误
        print("Game Center 认证失败: \(error!)")
    }
}

Game Center 认证(Unity C#):

// Unity 开发者使用 C# API
using Apple.GameKit;

var localPlayer = await GKLocalPlayer.Authenticate();
// 认证成功,localPlayer 包含玩家信息
Debug.Log($"玩家已认证: {localPlayer.DisplayName}");

显示 Access Point:

// Swift: 设置 Access Point 位置并激活
GKAccessPoint.shared.location = .topLeading
GKAccessPoint.shared.isActive = true
// Access Point 会出现在游戏画面上方
// 玩家点击后自动打开 Dashboard
// Unity C#: 设置 Access Point
GKAccessPoint.Location = GKAccessPoint.GKAccessPointLocation.TopLeading;
GKAccessPoint.IsActive = true;

提交排行榜分数:

// 排行榜分数提交后自动产生 Activity
let score = GKScore(leaderboardIdentifier: "weekly_high_score")
score.value = Int64(playerScore)
GKScore.submit([score]) { error in
    if let error = error {
        print("提交分数失败: \(error)")
    }
    // 提交成功后:
    // - 好友能看到你的分数动态
    // - 超越好友时系统发通知
    // - 排名前 25% 会被突出展示
}

最佳实践

  • 认证放在游戏最早时机:标题画面是最合适的位置
  • Access Point 放在游戏菜单页:不要在游戏进行中显示,会干扰操作
  • 创建循环排行榜:每周/每月重置,给玩家持续回访的理由
  • 设计有层次的成就:从简单到困难,让不同水平的玩家都有获得成就的满足感
  • 利用成就讲故事:成就名称和描述可以引导玩家探索游戏的隐藏内容

还有什么值得关注

  • Activity Feed 在 iPad、Mac 和 Apple TV 上都可查看
  • 玩家在好友 Profile 页也能看到好友的最近游戏动态
  • 隐私控制仍然有效——玩家可以选择在 Game Center 设置中控制 Profile 的可见性
  • 排行榜集(Leaderboard Sets)可以帮助组织多个排行榜
WWDC 2022