SuperAPI AI 工具集

gamekit

编程与开发

查看项目

更新于 10-16 09:11

技能介绍

用途

GameKit 技能用于将 Game Center 功能集成到 iOS 26+ 游戏中,使用 GameKit 框架和 Swift 6.3。它提供玩家身份验证、排行榜、成就、多人对战匹配、访问点、仪表盘、挑战和存档游戏等能力。

主要能力

身份验证

所有 GameKit 功能都要求本地玩家先完成身份验证。需要在应用生命周期早期设置 GKLocalPlayer.local 的 authenticateHandler;GameKit 在初始化期间会多次调用该处理器。认证成功后可检查限制:isUnderage(未成年)、isMultiplayerGamingRestricted(多人游戏受限)、isPersonalizedCommunicationRestricted(个性化通信受限),并据此隐藏不当内容、禁用多人游戏或禁用游戏内聊天。调用任何 GameKit API 前都应以 GKLocalPlayer.local.isAuthenticated 作为前置条件。

访问点

GKAccessPoint 在屏幕角落显示 Game Center 控件,点击后打开 Game Center 仪表盘。需在认证后配置位置(location)、是否显示高亮(showHighlights)以及是否激活(isActive)。可在游戏进行中隐藏、在菜单或暂停时显示,也可通过 trigger 方法以编程方式直接打开某个排行榜或成就页面。

仪表盘

使用 GKGameCenterViewController 展示 Game Center 仪表盘,展示对象需遵循 GKGameCenterControllerDelegate,并在 gameCenterViewControllerDidFinish 中关闭。仪表盘状态包括 .dashboard、.leaderboards、.achievements、.localPlayerProfile,也可直接打开指定排行榜。

排行榜

排行榜需先在 App Store Connect 中配置,支持经典(持久)与周期性(限时、自动重置)两种类型。可通过 GKLeaderboard.submitScore 向一个或多个排行榜提交分数;通过 GKLeaderboard.loadLeaderboards 与 leaderboard.loadEntries 加载排名条目,条目信息包含玩家、排名、分数、格式化分数、上下文与日期。参考文件还涵盖周期性排行榜计时、排行榜图片与排行榜集。

成就

成就需在 App Store Connect 中配置,每个成就有唯一标识符、点数及本地化标题与描述。通过 GKAchievement 设置 percentComplete(0.0 至 100.0)并上报;GameKit 只接受递增,设置比之前更低的值不生效。可加载玩家成就列表、在测试时重置全部进度。未返回的成就表示玩家尚无进度,可新建 GKAchievement(identifier:) 开始上报。

实时多人对战

实时多人对战通过点对点网络连接玩家以同时游戏,玩家通过 GKMatch 直接交换数据。可使用 GKMatchmakerViewController 提供标准匹配界面,实现 GKMatchmakerViewControllerDelegate 处理找到匹配、取消与失败。数据交换使用 GKMatch 与 GKMatchDelegate,支持 .reliable(类 TCP,有序、保证送达)与 .unreliable(类 UDP,更快、无保证)两种模式;关键状态用 .reliable,频繁位置更新用 .unreliable。可注册本地玩家为监听者以接收邀请。参考文件包含程序化匹配与自定义匹配界面。

回合制多人对战

回合制对战将比赛状态存储在 Game Center 服务器上,玩家异步轮流进行,不必同时在线。使用 GKTurnBasedMatchmakerViewController 启动匹配。通过 endTurn(withNextParticipants:turnTimeout:match:) 结束回合并指定下一位参与者,通过 endMatchInTurn(withMatch:) 结束比赛并设置各参与者结果(.won/.lost)。注册监听者并实现 GKTurnBasedEventListener 处理回合事件与比赛结束事件。比赛数据大小上限为 64 KB,更大的状态应外部存储、仅在比赛数据中保留引用。

常见错误

文档列出的常见错误包括:未认证就使用 GameKit API;多次设置 authenticateHandler(应在应用生命周期早期设置一次);忽略多人游戏限制;未立即设置匹配代理(应在关闭前设置,避免错过早期消息);程序化匹配未调用 finishMatchmaking;未断开匹配(返回菜单时应调用 disconnect() 并清空代理)。

审查清单

清单涵盖:在应用启动时设置一次 authenticateHandler;调用任何 GameKit API 前检查 isAuthenticated;检查玩家限制;在 Xcode 签名设置中添加 Game Center 能力;在 App Store Connect 配置排行榜与成就;配置访问点并在游戏过程中适当切换;在 gameCenterViewControllerDidFinish 中关闭仪表盘;找到匹配后立即设置匹配代理;程序化匹配调用 finishMatchmaking(for:),退出时 disconnect() 并置空代理;回合制比赛数据保持在 64 KB 以下;在 endMatchInTurn 前设置参与者结果;使用 GKLocalPlayer.local.register(_:) 注册邀请监听者;合理选择数据模式;如使用语音聊天需设置 NSMicrophoneUsageDescription;为所有异步 GameKit 调用处理错误。

适用场景与限制

适用于 iOS 26 及以上、使用 Swift 6.3 开发并需要接入 Game Center 的游戏项目,尤其是需要身份验证、排行榜、成就、实时或回合制多人对战的场景。使用前需在 Xcode 中启用 Game Center 能力,并在 App Store Connect 配置排行榜与成就。所有 GameKit 功能依赖玩家完成身份验证;回合制比赛数据有 64 KB 上限;成就进度只接受递增;多人功能需考虑玩家限制。语音聊天、存档游戏、自定义匹配界面、排行榜图片、挑战处理与基于规则的匹配等内容需参见 references/gamekit-patterns.md。关于具体收费、价格、平台支持范围等事实,资料中暂未提供。