
-
开始使用 Game Center
探索 Game Center 的功能并了解如何开始使用。我们将展示实现成就、挑战、排行榜和活动的最佳实践,助你最大限度地提高游戏的曝光度、吸引新玩家并提升用户参与度。 为了充分从这个讲座中获益,我们还建议你观看“通过 Apple Games App 吸引玩家”。
章节
- 0:00 - 简介
- 2:41 - 项目设置
- 6:51 - 整合 Game Center 功能
- 10:00 - 挑战与活动
- 23:53 - 测试你的功能实现
- 26:44 - 发布到 App Store
- 28:32 - 后续步骤
资源
- Apple Unity Plug-Ins on GitHub
- Creating activities for your game
- Creating engaging challenges from leaderboards
- Game Center overview
- Human Interface Guidelines: Game Center
相关视频
WWDC25
WWDC22
-
搜索此视频…
大家好 我叫 Josh Arenson 是 Game Center 框架团队的 工程师 今天 我想介绍将 Game Center 添加到游戏的最佳方式 以及为什么应该添加! 大家好 我叫 Varokas Panusuwan 是 Game Center Server 工程师 我会为大家介绍今年有趣的新功能 以及充分利用这些功能 的最佳实践 没错! 我们还会聊一些非常酷的新内容 因此 无论你的经验水平如何 都欢迎继续观看! 如果你对 Game Center 还不熟悉 或者想快速回顾一下 那么我想告诉你的是 它是一套帮助玩家玩得更投入、 并通过好友发现新游戏的功能集合 Game Center 还让玩家能轻松与 现有联系人 沟通互动、展开竞技 同时遵循 Apple 对保护隐私的承诺 Game Center 提供一系列功能: 成就、排行榜、挑战 和活动 这些功能可以帮助你打造 更具吸引力的游戏体验 让玩家追踪进度、相互竞争 并轻松邀请好友加入游戏 如果你希望让更多玩家发现你的游戏 今年秋季起预装于 macOS、iPadOS 和 iOS 的全新 Apple Games App 是你展示游戏的重要平台 Game Center 有助于最大限度地提高 游戏在 Apple 生态系统中的曝光度 尤其是在 Games App 中 你集成的每一项 Game Center 功能 都会为操作系统提供更多信息 以便在更多位置展示你的游戏 Game Center 通过它的核心功能 提高玩家参与度:排行榜、 挑战、活动和成就 这些功能为玩家设定目标、 创造社交互动机会 让他们更投入于游戏之中 这些核心功能有助于提高玩家留存率 它们会使游戏更有趣、更具竞争性 让人流连忘返 当玩家寻找新游戏时 很多人会从 App Store 开始浏览 全新的“Top Played Games”排行榜 展示了当前 最受欢迎的游戏 全新的 Games App 也有这样的 排行榜 也就是说 Game Center 可以让你的游戏在这两个地方 都更具优势! 在 App Store 和 Games App 中 你还会看到 “Friends Are Playing”板块 看看大家都在玩什么固然很不错 但有时你会更想 找些贴合自己兴趣的推荐 这个板块可以展示你的好友 在玩的游戏 帮助你 发现可能在排行榜上找不到的 优质作品 Game Center 还能激发 轻松有趣的竞争氛围! 比如 当有好友在排行榜上超过你时 它会推送通知提醒你 现在你已经了解了什么是 Game Center 以及它 为游戏带来的一些好处 接下来 让我们来看看实际如何操作 Varokas 和我将向你展示 如何轻松地 在你的游戏中加入 Game Center 从一开始的项目设置和配置 到测试你的实现效果 再到最后 发布到 App Store 全都为你讲清楚 要将 Game Center 整合到游戏中 只需两个步骤 首先 为项目添加 Game Center 权限 这会建立游戏与 Game Center 之间的通信 然后 初始化 GameKit 这是用于与 Game Center 通信的框架 要在 Xcode 中添加 Game Center 的权限 你需要:打开项目 前往“Signing and Capabilities” 标签页 点按“+ Capability” 搜索并添加“Game Center”即可
如果你使用的是 Unity Apple 提供的官方插件可简化 添加 Game Center 权限的流程 可以从 GitHub 下载这个插件 存储库中提供了有关 构建与安装的说明 安装这个插件后 打开 Unity Editor 前往“Build Profiles”菜单 并点按“Build” 这会生成一个已经配置好正确权限 的 Xcode 项目 添加权限后 只需几行代码 就能初始化 GameKit 这个 用于与 Game Center 交互的框架 初始化过程非常简单 你只需注册一个用于在初始化完成时 调用的处理程序 处理程序执行完毕后 你就可以访问 GKLocalPlayer 对象 它会提供报告游戏进度所需的 所有玩家信息 在这个 Swift 代码中 我设置了 初始化处理程序 当 Game Center 完成初始化时 这个 处理程序会被调用且 GKLocalPlayer 会指向一个有效的玩家 如果你是 Unity 开发者 那么恭喜你 所有 GameKit API 都提供了 C# 绑定! Apple 的 Unity 插件让你能够直接 在 Unity Editor 中集成 GameKit 这段 C# 代码就是对应的 GameKit 初始化代码
在初始化处理程序被调用后 Game Center 会显示一个横幅 提醒玩家它的功能已启用 如果某位玩家之前从未玩过 Game Center 游戏 系统会提示玩家使用 Apple 账户完成用户引导 为了最大限度地提高游戏的曝光度 应将 Game Center 初始化处理程序 设置得尽可能接近游戏启动的时候 这有助于游戏登上“Top Played Games”排行榜 还能更容易被推荐给 其他玩家 例如 在我与 Varokas 和另一位同事 Logan 合作开发的游戏 《The Coast》中 我们选择在标题屏幕出现的瞬间 触发初始化处理程序 这是一个非常理想的时间点 配置好初始化处理程序后 你就可以利用 Game Center 的 各项功能 进一步优化游戏体验: 成就可用于奖励玩家实现重要的 里程碑 为他们提供炫耀的资本 排行榜与挑战可以激发竞争意识 即使是单人游戏 也能创造出全新的多人互动机会 游戏活动可让你通过深度链接将 玩家直接引导至游戏中的特定内容 例如 跳转到获得某个成就 所需的关卡! 要配置这些核心的 Game Center 功能 有三种主要方式 第一种是 Xcode 26 新增的方式: 你可以使用 GameKit 捆绑包 直接在 Xcode 中完成 Game Center 的配置 这种方式带来了许多好处: 可与 App Store Connect 实现同步 也是游戏开发过程中推荐开发者 采用的做法
当你准备发布游戏时 App Store Connect 网站会提供帮助 不仅能协助你顺利通过审核流程 还能用于核对 Game Center 的 配置细节 如果你希望配置流程中的 某些环节实现自动化 例如集成到持续集成工作流程中 那 App Store Connect API 就是你不可或缺的工具 GameKit 捆绑包提供了诸多 显著的优势:你可以直接 在 Xcode 中为成就、排行榜和 游戏活动获取全新的测试功能 借助 Game Progress Manager 还能与线上游戏数据完全隔离 在本地声明这些数据还意味着 你的 Game Center 配置 将自动纳入代码审核和版本控制 流程中! 昨晚 我和 Varokas 正在开发我们的 游戏《The Coast》 他开始在 App Store Connect 中 配置 Game Center 而我希望改用 .gamekit 捆绑包来 集成 Game Center 的功能 从而简化我们的开发流程 要将 GameKit 捆绑包添加到我的 Xcode 项目中 我只需调出模板选择器
在搜索栏中键入“GameKit”
看到“GameKit Bundle” 模板了吗? 选择它 然后点按“Next”
我可以选择一个文件名 但使用默认 名称也可以点按“Create”后 Xcode 会将这个捆绑包添加到我的项目中
由于我已经在 App Store Connect 中创建了一些排行榜、挑战、 活动和成就 我可以直接从那里提取 游戏信息 点按省略号按钮 选择 “Pull from App Store Connect”
现在选择我的开发团队
找到《The Coast》 点按“Pull” 以获取游戏信息
提取完成后 我能看到之前在 App Store Connect 中创建的全部内容
我和 Varokas 决定在某个关卡添加 一个排行榜 名叫“Cape Cod, in The Coast” 在 Cape Cod 关卡中 玩家需要迅速 轻点船只 引导 它们安全靠岸并获得积分 但要小心! 有些船只其实是伪装起来的狡猾龙虾 如果不小心点到龙虾 这一关就会立刻结束! 要添加排行榜 点按“+”按钮 选择“Leaderboard”按钮
Xcode 会提示我提供参考名称 和标识符 在 Game Center 中创建的所有 内容都会包含这两个字段 它们仅供开发者查看 标识符是我在游戏代码中 引用这个排行榜的方式 我输入之前和 Varokas 约定好的值
然后点按“Add”
现在 我就可以根据游戏关卡的 需求 对排行榜进行调整 目前默认设置对我来说已经足够了! Game Center 会自动检测玩家的 语言环境 并以他们的本地语言 显示相关信息 因此 为游戏支持的每种语言准备好 本地化名称、描述 和图片就显得尤为重要
我点按“+”来添加一项本地化内容
输入我和 Varokas 讨论好的值 然后点按“添加”
这样就完成了 现在这个排行榜 已经可以从游戏代码中调用了 基于我们刚才介绍的内容 这些概念也可用来创建 成就、挑战和活动 现在你已经了解了如何为 Game Center 配置游戏 并实现它的功能 接下来我将把时间交给 Varokas 他将分享自己的专业经验! 谢谢你 Josh 我非常高兴向大家展示如何将 Game Center 的两项全新功能 添加到游戏:挑战和活动 这两项功能旨在帮助打造全新的 多人游戏体验 并提升玩家对游戏的 参与度 挑战功能能让单人游戏 瞬间变得更具社交互动性 它是构建在游戏中现有 排行榜之上的功能 也就是说这几乎相当于 “一项功能 双重效果” 完全不需要额外的代码! 通过挑战 玩家可以邀请好友一起竞争高分 玩家可以实时查看所有人的分数 看到谁最终夺冠 甚至还能在同一个屏幕直接发起复赛 每场挑战都有时间限制 因此玩家会更有动力在时间结束前 立即参与游戏! 挑战与排行榜相关 但运作方式略有不同 排行榜是一场与所有 Game Center 好友之间持续进行的比拼 而挑战在创建后提供了一些关键的 自定选项 与排行榜持续开放不同 挑战具有明确的开始和结束时间 发起挑战的玩家可以选择 比赛何时开始 玩家还可以决定在时间结束前 挑战的持续时间 排行榜包含玩家的所有 Game Center 好友 而挑战则 由玩家自行决定邀请谁加入 这也包括目前不在好友列表中的玩家 他们还可以设定每位玩家的尝试次数 使这成为一个高度个性化的小型竞赛
当玩家自定挑战时长时 你也可以预先定义可供选择的 时间选项 你可以让他们选择 1 天、3 天、 一周 或这些时长的任意组合 最酷的部分来啦! 要为玩家启用挑战功能 你的游戏可能根本 不需要做任何修改 如果你的游戏中已经有排行榜 那你已经在使用 submitScore() API 来更新玩家得分 现在 这个 API 也会自动将分数提交 到所有相关的挑战中! 在《The Coast》中 Cape Cod 是第一个关卡 因此非常受欢迎 这正是一个非常适合添加挑战的关卡 第一步 是在 Xcode 中创建 挑战的元数据 就像 Game Center 中的每项功能 一样 挑战也需要配有一张 代表性图片和一个对应的显示名称 在内部 你还需要为挑战指定一个 标识符 供游戏代码调用 以及一个参考名称 用于在 App Store Connect 中搜索挑战 考虑到这些需求 我已经为 Cape Cod 准备好了 图片、显示名称、ID 和参考名称 我们在《The Coast》中已经设置 好了排行榜 我要做的只是确认 submitScore() 中的 排行榜 ID 是否正确 接下来 我按照 Josh 之前演示的 流程 在 Xcode 中使用 插图和显示名称创建挑战
为了确保设置无误 我会 确认“associated Leaderboard” 已正确设置为“Cape Cod” 接着 我可以配置玩家可选择的 挑战持续时间 由于《The Coast》的节奏较快 每局大约 1 分钟 因此我选择允许 玩家设置为 1 天或 3 天 这就是实现挑战功能所需的所有步骤 确保挑战元数据设置正确 并且如果你已经在使用 排行榜功能 就无需修改任何游戏代码! 如果游戏使用的是周期性排行榜 那么关联的挑战的运作方式 会略有不同 请记住 普通排行榜是持续进行的 而周期性排行榜具有明确的 开始和结束时间 比如 这里是一个每日周期排行榜 它从 今天午夜开始 并于明天午夜结束
当挑战关联到一个周期性排行榜时 它会与当前排行榜实例 的结束时间保持一致 如果我现在和 Josh 发起一个挑战 我们都可以一直玩到 周三午夜 挑战才会结束
在这种情况下 挑战创建屏幕 会显示午夜前剩余的时间
此外 当挑战基于周期性排行榜时 你还可以将它标记为 不可重复 也就是说 玩家只能挑战一次 这在解谜类游戏等益智游戏 中非常实用 每日解谜挑战就是一个非常适合 使用不可重复挑战的场景 玩家可以在 Games App 的多个 位置创建或查看挑战 你也可以在自己的游戏中打造 专属 UI 展示所有可用 和进行中的挑战 如需了解更多信息 请查看相关文档 挑战的设计宗旨是让每位玩家都能 公平竞争、展现实力 因此 请务必按照推荐的方式提交 排行榜和挑战的分数
例如 在每个关卡结束后都要提交 一次新分数 这很重要 在这里 我在每次玩家尝试这个 关卡后 提交他们 “成功引导的船只数量” 不要在多次尝试之间累积分数 避免上传累计总分 比如“累计引导船只总数” 挑战的意义在于比拼技巧 而不是 衡量谁玩得久
请始终记住:挑战的创建者可以设定 每位玩家的尝试次数 通常来说 在每个关卡结束后 只提交一次分数 就是正确的做法 所以一定要仔细检查你没有不小心 重复提交分数 现在我的挑战已经设置完成 我希望玩家可以更轻松地 参与这项挑战 这就是活动大显身手的地方了
活动是另一项全新功能 可用来直接在游戏操作中 添加深度链接 活动是游戏中的特定目标位置 你可以通过深度链接 直接将玩家引导到这些位置 活动的起点由与它关联的 其他 Game Center 功能确定
例如 一个在关卡 1 结束时提交分数的排行榜 可与一个活动关联 这个活动的深度 链接会直接跳转到关卡的起始点 当玩家在 Games App 中看到 这个排行榜时 可以轻点 “Play”按钮 直接启动这个关卡 为这个排行榜定义的所有挑战 也会关联到 这个活动上 所以 当玩家在 Games App 中看到 关卡 1 的挑战时 他们可以轻点“Play” 随即便会 直接启动关卡 1 你也可以使用活动 将玩家深度链接 到与特定成就相关的游戏内容 例如 Boss 战关卡
另一个非常实用的用法 是通过活动将玩家直接带入 实时多人游戏体验 借助 Game Center 内建的派对码 支持 你可以将现有的 实时多人游戏系统与 Game Center 活动集成 正如你所看到的 活动有多种方式 可以帮助你吸引更多玩家 加入游戏 接下来我将以《The Coast》为例 展示两个用法 一个是我刚创建的 Cape Cod 挑战 另一个是多人活动 我已经邀请好友来参与我新建的 Cape Cod 挑战 现在 我希望为这个挑战定义一个 活动 这样 当他们轻点“Play”按钮时 就能直接跳转到这个关卡的起点 我们先从定义元数据开始 对于活动 ID 我将使用 “thecoast.activity” 如果需要 我还可以为这个基础活动 添加更多信息 比如说明这个活动对应 《The Coast》中的 某个游戏模式 接下来 我可以将排行榜或成就 与活动关联起来 那挑战呢? 请记住 挑战是排行榜的延伸 这意味着 当你将某个排行榜 关联到活动时 相关的挑战也会自动关联 所以 我会将 Cape Cod 的排行榜 关联到这个新活动中 关联的对象本身也可以设置属性 在这个例子中 我为排行榜属性 添加了“capeCod”作为“level”值 当这个活动从 Cape Cod 挑战中 被触发时 基础属性会与排行榜的属性合并 发送完所有属性后 我可以在游戏内的处理程序中识别出 起始关卡是 Cape Cod 现在我已经准备好活动所需的 所有内容 接下来就可以将这些元数据 填入 Xcode 我已经创建了一个新的活动 包含图片和显示名称 现在可以在这个部分中 设置基础活动属性 为了将 Cape Cod 排行榜与这个 新活动关联 我在 Xcode 中选中这个排行榜 然后 在下拉菜单中选择“Cape Cod”活动
排行榜也需要定义相应的属性 这可以在属性面板中完成
现在 我的活动元数据已经设置完毕 可以开始使用了! 现在只差最后一步:添加 一个游戏内处理程序 让玩家可以 直接跳转到 Cape Cod 关卡 在游戏代码中 我现在能在 GKLocalPlayerListener 中实现 player 函数 传入的 activity 实例包含一个定义 这个定义中有一个我刚刚在 Xcode 中设置的标识符 找到对应的 ID 后 我就可以查看 其中的属性值 让玩家从正确的关卡开始游戏
使用活动功能时 你还可以通过 这个非常方便的 setScore 函数 提交分数 在调用 activity.start() 之后 所有分数提交都会被缓冲处理 调用 activity.end() 时 Game Center 只会提交玩家最新分数一次 这对于挑战来说尤其有用 能有效避免不小心重复 提交分数的情况 像挑战这样的 Game Center 功能 支持深度链接 可帮助玩家 直接跳转到游戏中的正确位置 而通过多人活动 玩家还可以与好友一同进入游戏! 在多人活动中 每个活动会绑定 一个派对码 你可以将 这个派对码与 你现有的实时多人系统集成
当玩家发起一个新的多人活动时 Game Center 会自动生成一个 派对码 玩家可以通过 iMessage 信息将 这个活动轻松分享给好友 在未安装 Games App 的设备上 活动和派对码 会以网页形式展示 这个网页还包含 OpenGraph 标签 确保 在分享时拥有良好的展示效果 无论玩家通过何种方式分享活动 Game Center 都会让你的游戏知晓 每个玩家用于加入游戏的派对代码 接着 你就可以在自己的多人系统中 将使用相同派对码的玩家 连接到同一局游戏中
活动的元数据设置方式与之前相同 唯一的不同是 要选中“Supports Party Code” 选项 对于游戏内处理程序而言 一切也都保持不变 你可以通过活动实例访问派对码 多人活动还支持 Game Center 当前的匹配机制 只需调用活动实例中的 findMatch() 函数 即可让 Game Center 为这个活动 寻找匹配对手
在创建活动时 有几点需要注意 为了充分发挥深度链接的效果 请跳过引导画面或游戏选择界面 而是直接将玩家带到正确的起始位置 如果链接指向的位置需要付费 或满足某种进度条件 请在游戏内弹出提示 告知玩家需要完成哪些操作 才能开始游戏 在游戏中清晰显示当前的派对码 这有助于玩家确认自己进入的是 正确的地方 同时也应提供在游戏中手动输入 派对码的选项 方便玩家在通过其他设备或平台 收到派对码时使用 现在 我已经在《The Coast》中 实现了所有这些功能 是时候进行测试 确保一切正常运作了 我将把时间交还给 Josh 由他来展示具体的测试方法 谢谢你 Varokas! 我也认为活动和挑战会是游戏的一个 绝佳补充 不过首先 我想测试一下我最近添加的 Cape Cod 排行榜 简单提醒一下 这个排行榜用于统计玩家成功 引导到安全区域的船只数量 现在 我可以使用全新的 Game Progress Manager 来验证 游戏是否正确上报了这个 排行榜的分数 要测试我的新排行榜 第一步是编辑游戏的方案 并启用 GameKit 配置的调试模式 这个选项可以在方案编辑器的 运行选项中找到
设置完成后 我从 Xcode 启动游戏 并在“Debug”菜单 中打开“Game Progress Manager”
接下来 我选择要测试的设备和游戏 我选择我的 iPhone 和 《The Coast》
在这里 我可以看到 .gamekit 捆绑包中的所有成就和排行榜 然后选中我刚创建的那个排行榜 现在 我可以点按这个“添加分数” 按钮提交任意分数 虽然可以为任何玩家提交分数 但我打算为自己提交 42 分
这样游戏中就会弹出一条横幅 确认分数已成功接收 这个功能在调试模式下非常有用 现在 如果打开 Cape Cod 排行榜 我就能看到刚刚提交的测试分数 不过我真正想验证的是 游戏是否能正确上报分数 我先点按这里的清除按钮清空排行榜 并确认这个操作 然后实际玩一局游戏 亲自获取一个分数 回到《The Coast》游戏中 我尽可能多地引导船只安全靠岸
哎 又被那只狡猾的龙虾骗了! 我再次看到调试横幅弹出 游戏内排行榜 也显示了我刚刚获得的分数 这是个好兆头! Xcode 中同样也显示出了 这个分数 说明游戏逻辑运作正常! 值得一提的是 这些分数仅存在于 当前的调试会话中 并不会上传到服务器 现在我想测试一下 Varokas 之前创建的 GameActivity 因为它与 Cape Cod 排行榜有关联 所以我可以 在 Game Progress Manager 中 看到它的深度链接 Varokas 已经配置好链接处理程序 点按这个链接即可 直接启动 Cape Cod 关卡 我在 Xcode 中点按这个链接 它的效果等同于在设备上点按
可以看到 Cape Cod 关卡再次启动了 说明链接处理代码完全正常! 现在我已经确认所有功能都 运行正常 可以准备 将 .gamekit 捆绑包发布到 App Store Connect 了 我回到 Xcode 项目 像之前一样选中 .gamekit 捆绑包 这次点按省略号按钮 但选取 “Push to App Store Connect”
再次选择《The Coast》
然后点按“Push”
推送完成后
我能在 App Store Connect 网站上 看到 .gamekit 捆绑包中的所有内容 有没有发现所有内容都显示为 “Not Live”? 这是 Game Center 生命周期中的 一个关键概念 理解为什么 资源最初处于未上线状态非常重要 我们不妨回过头来 看看从创建到发布的整个流程 了解这个“Not Live”状态是 如何融入其中的 这张图展示了游戏排行榜、挑战、 活动和成就 从创建到发布的完整生命周期 整个流程分为三个阶段:Xcode (用于开发 和配置 Game Center)、 TestFlight (用于 Beta 版测试)、 以及 App Store Connect (用于发布游戏) 首先 你需要完成游戏开发 编写代码 并通过 .gamekit 捆绑包 添加一些 Game Center 功能 接着 使用 Game Progress Manager 对创建的所有内容进行全面测试 当你对测试结果满意后 可以将游戏发布到 TestFlight 让 Beta 版测试员进行试玩 在确认一切运作正常后 将游戏提交给 Apple 进行审核 请务必在提交时包含所有 你希望使用的 “Not Live”Game Center 资源 当 Apple 审核通过 并且你决定正式上线时 这些 Game Center 资源 就会变为“已上线”状态 游戏也会同步发布到 App Store! 恭喜你! 这是一个激动人心时刻! 现在 你应该在 Xcode 中为游戏 添加一个 .gamekit 捆绑包 无论你是已经深度集成 Game Center 的开发者 还是刚入门的新手 这都会让开发过程更轻松高效 接着 添加用于初始化 GameKit 的代码! 光是这一步 就能让游戏在整个 操作系统中 获得更高的曝光度 活动和挑战是全新的功能 我们相信它们非常值得投入时间 去探索和使用 所以不妨亲自试试看 要确保游戏在 Games App 中获得 最佳展示效果 欢迎观看我的同事 Logan 主讲的视频《通过 Apple Games App 吸引玩家》 如果你是 Unity 开发者 也别错过关于如何在 Unity 项目中 集成 Apple 框架的视频! 我们已经迫不及待想体验你 创作的精彩游戏了 感谢观看!
-
-
4:17 - Initialize GameKit
GKLocalPlayer.local.authenticateHandler = { _, error in print("\(GKLocalPlayer.local.alias) is ready to play!") }
-
4:29 - Initialize GameKit (Unity)
var player = await GKLocalPlayer.Authenticate(); Debug.Log($"{player.alias} is ready to play!");
-
13:07 - Submit score to challenge
// Submit score GKLeaderboard.submitScore(points, context: 0, player: GKLocalPlayer.local, leaderboardIDs: ["thecoast.lb.capecod"])
-
20:24 - Activity properties
// Activity properties extension AppDelegate: GKLocalPlayerListener { func player(_ player: GKPlayer, wantsToPlay activity: GKGameActivity) async -> Bool { let activityId = activity.activityDefinition.identifier if activityId == "thecoast.activity" { let level = activity.properties["level"] if level == "capecod" { startCapeCod(activity) } } return true } }
-
20:48 - Managing score submission with activity
// Managing score submission with activity class GameplayManager { let activity: GKGameActivity let leaderboard: GKLeaderboard init(activity: GKGameActivity, leaderboard: GKLeaderboard) { self.activity = activity self.leaderboard = leaderboard activity.start() } func setScore(_ newScore: Int) { activity.setScore(on: leaderboard, to: newScore) } deinit { activity.end() } }
-
22:35 - Access the Party Code
extension AppDelegate: GKLocalPlayerListener { func player(_ player: GKPlayer, wantsToPlay activity: GKGameActivity) async -> Bool { let activityId = activity.activityDefinition.identifier if activityId == "thecoast.multiplayer" { startMultiplayer(partyCode: activity.partyCode) } return true } }
-
22:48 - Game Center Matchmaking
let match = try await activity.findMatch()
-
-
- 0:00 - 简介
Game Center 是 Apple 的社交游戏网络。它提供了一系列功能,包括成就、排行榜、挑战赛和活动,可增强玩家在游戏中的参与度。只需启用 Game Center 即可提高游戏在 Apple 生态系统的曝光度,其中包括今年秋季将预装在 macOS、iPadOS 和 iOS 上的全新 Apple Games App。Game Center 还通过推送通知促进社交互动,激发玩家之间的良性竞争,从而提升用户粘性和游戏参与度。
- 2:41 - 项目设置
要将 Game Center 集成到你的游戏中非常简单。只需两个步骤:将 Game Center 授权添加到你的 Xcode 项目,并添加两行代码来初始化 GameKit。搞定!你可以选择使用 GameKit 捆绑包直接在 Xcode 中配置其他 Game Center 功能,这是 Xcode 26 中的一项新功能,可与 App Store Connect 同步。
- 6:51 - 整合 Game Center 功能
Josh 以一款名为“The Coast”的游戏为例,向大家演示如何在 Xcode 中使用 GameKit 捆绑包来整合 Game Center 功能。他为 Cape Cod 关卡新增了一个排行榜。在这个关卡中,玩家需要轻点船只,引导它们安全驶离,同时避开那些会导致关卡失败的狡猾龙虾。创建成就、挑战赛和活动等其他 Game Center 功能时,同样的步骤也适用。
- 10:00 - 挑战与活动
Game Center 今年推出两项新功能:挑战赛与活动。 挑战赛基于现有排行榜构建,支持玩家发起实时、限时的对战邀请。玩家可以自定挑战,选择参与者、挑战时长及尝试次数,打造个性化的竞技体验。 活动提供了一种方法,可以深度链接到游戏中的特定区域,例如关卡起点或 Boss 对战。你可以将活动与排行榜、挑战赛甚至实时多人游戏体验关联起来。 Game Center 现在支持可共享的派对码,游戏可通过这些代码将玩家连接至同一场多人游戏中。
- 23:53 - 测试你的功能实现
Josh 将为你介绍在 Xcode 中测试排行榜及其相关活动深度链接所需的步骤。
- 26:44 - 发布到 App Store
了解如何通过创建 GameKit 捆绑包并使用 Game Progress Manager 测试实现,从而顺畅地将你的游戏发布到 App Store 平台上。
- 28:32 - 后续步骤
在 Xcode 中将 GameKit 捆绑包添加到你的游戏中,以简化游戏的开发过程。然后,添加代码将 GameKit 初始化到游戏中。只需执行这两个步骤,即可提高你的游戏在整个操作系统中的曝光度。 不妨在游戏中尝试全新的 Game Center 功能、活动和挑战赛。如果你是 Unity 开发者,请查看 GitHub 上的 GameKit 插件。