创建基于事件的成就的方案

本主题介绍了一些创建成就的常见方案。

注意

如果当前使用基于事件的成就(2013 年成就),并希望继续使用交叉进度,则本主题适用。 否则,我们建议使用游戏管理的成就

多个条件的 AND/OR 逻辑

成就有两种常见的 AND 场景:同步 AND 和异步 AND。

异步 AND

异步 AND 逻辑定义在满足所有成就规则时解锁的成就。 用户可以在不同的时间点独立于其他规则来履行每个规则。

这种成就的一个示例是“杀死 10 个僵尸和 20 个幽灵”。要定义此成就,请配置多个成就规则,如下表所示。

字段
规则 1 名称 杀死 10 个僵尸
统计信息 Kills.EnemyType.Zombie
操作 SUM
阈值 10
规则 2 名称 杀死 20 个幽灵
统计信息 Kills.EnemyType.Ghost
操作 SUM
阈值 20

同步 AND

同步 AND 逻辑定义在满足所有成就规则时解锁的成就,用户必须同时满足每个条件。 这种成就的一个示例是“扮演 Johnny 时用球棒杀死 10 只僵尸”。

同步 AND 规则不能简单地由多个单独捕获每个条件的成就规则定义。 这不符合要求,因为每个成就规则都可以独立满足。 如果用户执行了以下操作,示例成就将错误解锁:

  • 星期一:扮演 Johnny,杀死 0 个僵尸。
  • 星期二:扮演 Sam,杀死 10 只僵尸。
  • 星期五:扮演 Tim,使用球棒杀死 5 个骷髅。

要定义像这样的成就,必须定义一个包含每个条件的统计信息规则。 只有事件包含用户活动的完整上下文,因为它们准确地表达了游戏中特定时刻发生了什么。 统计数据从事件中继承,成就从统计信息中继承。必须将成就条件定义为统计信息,以保留任何与成就相关的上下文。 仅当通过包含所需的确切值的特定统计信息实例达到阈值时,才能解锁成就。 以下配置定义了示例成就。

字段
规则 1 名称 扮演 Johnny,用棍棒杀死 10 个僵尸
统计信息 Kills.EnemyType.Zombie.WeaponType.Bat.PlayerCharacter.Johnny
操作 SUM
阈值 10

成就的 OR 逻辑

成就最常见的 OR 场景是以一组不同、显式枚举的可能方式来描述特定目标。 可以通过这种方式或另一种方式来解锁成就。

不能通过定义多个成就规则(每个目标一个)来实现此场景。 成就上的多个规则充当逻辑 AND,因此必须满足每个规则才能解锁成就。 为“3 分钟内在赛道 A 上完成比赛”使用一个成就规则,为“在赛道 B 上行驶 1,000 英里”使用第二个成就规则,这样,仅当用户达成这两个目标时才会导致成就解锁。

要使用 OR 逻辑定义成就,必须将单个成就规则配置为基于多个统计信息实例,其中每个统计信息实例跟踪一种可接受的方式。

使用 MIN 或 MAX 规则

这种情况的一个示例是“在三分钟内在赛道 A、B 或 F 上完成比赛”。其成就配置如下表所示。

字段
规则 1 名称 在不到三分钟的时间内完成 A、B 或 F 赛道的竞赛
统计信息 FinishTimeInSeconds.TrackId.A
FinishTimeInSeconds.TrackId.B
FinishTimeInSeconds.TrackId.F
操作 MIN
阈值 180

由于此成就规则使用 MIN 规则操作,因此当列出的任何统计信息实例满足阈值时,成就将解锁。 例如,如果 FinishTimeInSeconds.TrackId.A is 220FinishTimeInSeconds.TrackId.B is 163FinishTimeInSeconds.TrackId.F 为 199,则成就将解锁,因为用户在 Racetrack B 上的完成时间优于阈值。

使用 SUM 规则

这种情况的一个示例是“在赛道 A、B 或 F 上累计行驶 1,000 英里”。其成就配置如下表所示。

字段
规则 1 名称 在赛道 A、B 或 F 上行驶 1,000+ 英里
统计信息 MilesDriven.TrackId.A
MilesDriven.TrackId.B
MilesDriven.TrackId.F
操作 SUM
阈值 1000

由于此成就规则使用 SUM 规则操作,因此当列出的统计信息实例的汇总组合满足阈值时,成就将解锁。 例如,如果 MilesDriven.TrackId.A is 900MilesDriven.TrackId.B is 115MilesDriven.TrackId.F is 0,则成就将解锁,因为用户在所有三个统计信息中的聚合总数都优于阈值。

达到这个目标或那个目标

不支持的成就场景是要求用户实现几个不同目标中的一个。 例如:“3 分钟内在赛道 A 上完成比赛或在赛道 B 上行驶 1000 英里”。

成就逻辑中目前不支持此成就场景。 无法通过定义多个成就规则(每个目标一个)来实现此场景。 成就上的多个规则充当逻辑 AND,因此必须满足每个规则才能解锁成就。 为“3 分钟内在赛道 A 上完成比赛”使用一个成就规则,为“在赛道 B 上行驶 1,000 英里”使用第二个成就规则,这样,仅当用户达成这两个规则时才会导致成就解锁。

重复操作

使用此模式定义要求用户多次重复执行某项操作的成就。

示例 1:赢得 50 场多人游戏比赛

字段
规则名称 赢得 50 场多人游戏比赛
统计信息 MatchesCompleted.Result.1.Mode.Multiplayer
操作 SUM
阈值 50

示例 2:上传 10 个视频和评价 100 个视频

字段
规则 1 名称 上传 10 个视频
统计信息 VideosUploaded
操作 SUM
阈值 10
规则 2 名称 评价 100 个视频
统计信息 VideosRated
操作 SUM
阈值 100

有关设计用户统计信息的详细信息,请参阅对累计值使用计数器

操作的集合

目标:在 Y 项中查找 X 项

使用此模式定义要求用户对特定集内的所有成员(或其子集)进行操作的一个成就。

示例 1:在专家难度下完成所有关卡

字段
规则 1 名称 在专家难度下完成关卡 1
统计信息 LevelCompleted.Mode.3.LevelId.1
操作 SUM
阈值 1
规则 2 名称 在专家难度下完成关卡 2
统计信息 LevelCompleted.Mode.3.LevelId.2
操作 SUM
阈值 1
规则 3 名称 在专家难度下完成关卡 3
统计信息 LevelCompleted.Mode.3.LevelId.3
操作 SUM
阈值 1

示例 2:在 3 分钟内完成任意欧洲赛道

此成就可以定义为最少的单个赛道完成时间,或者使用一组赛道的最佳完成时间来进行定义。 使用以下任一方法,但不能同时使用这两种方法。

方法 1

字段
规则名称 在 3 分钟之内完成任意欧洲赛道
统计信息 LastFinishTimeInSeconds.TrackId.21
LastFinishTimeInSeconds.TrackId.22
LastFinishTimeInSeconds.TrackId.23
LastFinishTimeInSeconds.TrackId.24
LastFinishTimeInSeconds.TrackId.25
LastFinishTimeInSeconds.TrackId.26
操作 MIN
阈值 180

方法 2

字段
规则名称 在 3 分钟之内完成任意欧洲赛道
统计信息 BestFinishTimeInSeconds.TrackSet.Europe
操作 MIN
阈值 180

要设计关联的用户统计信息,请参阅“跟踪最新”和“跟踪个人最佳”。

个人最佳

使用此模式定义要求用户在单个会话或游戏中超越目标的成就。 无法通过聚合工作(如多次赛跑)来实现此成就。

示例 1:在 5 次或更少死亡情况下完成游戏

字段
规则名称 示在 5 次或更少死亡情况下完成游戏
统计信息 PlaythroughDeaths.GameResultId.1
操作 MIN
阈值 5

示例 2:扮演 Lebron James,在得分至少为 50 分的情况下赢得比赛

字段
规则名称 赢得比赛且扮演 Lebron 且得分至少为 50 分
统计信息 BestScore.PlayerId.3056.MatchResultId.1
操作 SUM
阈值 10

表示符合条件的二进制值

使用此模式来定义一项需要用户进行复杂活动的成就,这些活动不能通过 Xbox 服务统计信息轻松跟踪,或者其他 Xbox 服务成就配置选项不支持这些活动。

示例:使用猎枪杀死 90 个敌人或使用狙击枪杀死 10 个敌人

字段
规则名称 用猎枪杀死 90 个或使用狙击枪杀死 10 个
统计信息 AchievementUnlocked.UnlockId.9010
操作 SUM
阈值 1

重要

此成就配置不跟踪猎枪击杀或狙击枪击杀。 它只记录满足这两个条件之一的事实。 成就必须由游戏设置,因为数据平台不支持此场景。