初步了解基于事件的统计
对于使用基于事件的统计信息在合作伙伴中心配置的游戏,本主题介绍如何在合作伙伴中心配置事件和统计信息,然后将代码添加到游戏以发送事件和更新统计信息。
登录到合作伙伴中心
以下示例使用合作伙伴中心配置的 Xbox 游戏体验。
在公司同意为 Xbox 创建产品之后,在合作伙伴中心配置内容。 如果你的公司尚未设置合作伙伴中心访问权限,并且你正在开发游戏,请与你的 Microsoft 帐户经理联系。 如果正在开发应用,请联系 Xbox 应用合作伙伴请求 (xboxapps@microsoft.com)。 如果正在使用 ID@Xbox 程序,请联系 ID 安装程序 (idsetup@microsoft.com)。
ID@Xbox计划使各种规模的合格游戏开发人员能够在Xbox One (或更高版本) 上自行发布数字游戏以发挥他们的创造力。 这为工作室提供了帮助最大化其成功所需的工具和支持。 若要了解更多信息,请转到 https://www.xbox.com/Developers。
在有权访问合作伙伴中心后,将需要 Microsoft 为你的游戏创建产品组。 您的 Microsoft 客户经理在此过程为您提供帮助。
在 Microsoft 为你的游戏创建产品组后,使用合作伙伴中心为游戏配置 Xbox 服务。 游戏的 Xbox 服务配置也称为其 服务配置。
使用以下步骤转到合作伙伴中心中可为游戏添加事件、统计信息、成就和排行榜的位置。
登录合作伙伴中心上的帐户。
选择包含或将要包含您的游戏的产品组。
在 产品组 页面,选择游戏或选择 添加新产品 以创建新条目。
如果要创建新产品,请输入产品的名称。
要访问资源,请选择 独占资源访问 (ERA)。
选择是需要为游戏生成物理媒体,还是仅进行数字下载。
选择 创建产品。
在左侧窗格的底部,展开在其中创建产品的沙盒。
服务配置要在沙盒级别定义。 如果将产品导出到其他沙盒,则还需要导出服务配置。
在沙盒子菜单上,选择 服务配置。 使用此页面,在当前沙箱中为应用配置 Xbox 服务。
确定并定义方案的事件
在合作伙伴中心中,在定义实现我们想要实现的玩家体验的规则之前,我们需要确定并定义将提升这些体验的事件。
在基于事件的模型中,成就和排行榜基于玩家统计信息。因此,我们可以查看我们将定义的统计信息,以查看游戏需要发送哪些事件。
为了增强在此示例中定义的体验,我们将使用一个在比赛的每圈结束时发送的事件。
让我们调用此事件 LapCompleted
。 我们将使用此事件来推动我们的自定义体验。 若要增强这些体验,我们还将在 LapCompleted
事件中定义以下字段。
LapTime: 指示完成一圈的时间 (以分钟为单位) 的字段。
CarModel: 指示用于完成该圈车型的字符串字段。
WeatherCondition: 用于识别完成该圈后赛道的天气条件的字符串字段。
TrackId: 完成的该圈的所在赛道的 ID。
我们现在将在合作伙伴中心定义此事件。
在合作伙伴中心的左窗格中,选择 测试沙盒>服务配置>事件和统计信息规则。
选择 新建 以创建新事件。 将显示 添加新事件 对话框,如下所示。
选择 基本事件 中的 基本。
在 事件名称 中输入 LapCompleted。
可以选择在 描述 中输入事件的描述。
选择 添加事件字段。
在 字段名称 中输入 LapTime,然后将 类型 指定为 双倍,如下所示。
选择 添加事件字段。
重复该过程以添加以下事件字段。
CarModel: UnicodeString
WeatherCondition: UnicodeString
TrackId: Int32
事件应起来像以下屏幕截图。
选择 保存事件 以将事件保存在沙盒中。
设计统计信息规则
至此,玩家体验已完成定义,我们可以开始创建实现这些体验的统计信息规则。 由于我们正在将 LapTime
用于所有三种方案 (精选统计信息、成就和排行榜),因此我们将首先对其进行配置。
此统计信息将显示为精选统计信息 (也称为英雄统计信息),并且还将用于具有其他元数据的全球排行榜。
当游戏中发生某些操作并且认为这些操作是创建统计信息的原始数据时,游戏会引发游戏中事件。每个事件至少应创建或更新一个统计信息。 (有关在单个事件中生成多个统计信息的详细信息,请参阅 基于事件的统计信息概述。)
在事件和统计信息规则页上,从事件列表中选择 LapCompleted 事件。
选择 新建 (在 统计信息规则 的右侧) 创建新的统计信息规则。 它将基于所选事件。 添加统计信息规则 对话框会显示,如下所示。
在 统计信息规则名称 中输入 FastestLap。
由于我们希望其他应用和游戏能够访问由此规则创建的统计信息,因此请选中 开放对任何游戏的读取访问权限 复选框。
统计信息规则具有定义事件如何创建或更新统计信息的逻辑。由于我们希望跟踪最快的圈数,因此我们只希望在新圈时间低于现有最快圈时间时更新统计信息值。
为此,请在 运算符 中选择 最小,在 参数 中选择 LapTime,如下所示。
最后,我们需要确保事件包含此特定统计信息所需的所有额外数据 (称为 统计信息上下文 或 元数据): 玩家的汽车、轨道和天气条件。
若要将字段添加到元数据,请选择 CarModel,然后选择 添加事件字段。
针对 WeatherCondition 和 TrackId 字段重复此操作,如下所示。
选择 添加统计信息规则 以创建统计信息规则。
配置精选统计信息、排行榜和成就
精选统计信息
现在已完成统计信息规则,我们希望统计信息显示在 GameHub 的 GameHub 成就选项卡上。 因此,我们必须配置精选统计信息 (在合作伙伴中心中称为主统计信息)。
在合作伙伴中心的左窗格中,选择 测试沙盒>服务配置>主统计信息。
选择 新建 以添加新精选/主统计信息。
在 主统计信息显示名称 中输入 最快圈。
选择 显示格式 中的 ShortTimespan。 选择 显示单位 中的 秒。
选择 显示语义 中的 最佳。 这向小帮手应用程序说明,该值代表了该统计信息的最佳分数。
选择 选择实例,然后选择 统计信息实例 中的 FastestLap。 这表明特色统计信息是基于
FastestLap
统计值的。在 序数 中输入 1。 这说明,列出精选统计信息时,应先显示此精选统计信息。
在 排序顺序 中选择 Ascending。 这说明,值越低越好,如下所示。
选择 添加新主统计信息 以创建精选/主统计信息。
全球排行榜
使用相同的单圈时间统计信息,我们可以配置一个排行榜,以便每个玩家都能看到他们的单圈时间在世界各地其他所有玩家中的排名。
在合作伙伴中心的左窗格中,选择 测试沙盒>服务配置>排行榜。
选择 新建 以创建新的全局排行榜。
在 排行榜 ID 中输入 FastestLap。
选择 选择实例,选择我们之前创建的 FastestLap 统计信息规则,然后选择 添加统计信息实例。
选择 排序 中的 升序,如下所示。 此选择表示时间越低越好。
选择 添加新排行榜 以创建新全局排行榜。
随着玩家统计信息的更新,排行榜也会更新以反映排名的任何变化。
如果创建排行榜时存在现有玩家统计信息,则可能需要几个小时才能使用这些统计信息更新新排行榜。
基于事件的成就
建议使用游戏管理的成就。 但是,对于仍在使用基于事件成就的游戏,可以使用事件来为服务上的成就解锁提供支持,如下所示。
若要使用事件来解锁基于事件的成就,请执行以下操作
在合作伙伴中心的左窗格中,选择 测试沙盒>服务配置>成就和挑战。
选择 新建 以添加新成就。
在 成就名称 中输入 小于 60 秒。
在 说明 中输入 在 60 秒内完成一圈。 当成就解锁时,将向玩家显示此说明。
在 未实现说明 中输入 在 60 秒内完成一圈。 当成就仍旧锁定时,将向玩家显示此说明。
上传 1920 × 1080 像素 .png 文件用作成就图标,如下所示。
选择 添加成就 以创建成就。
请确保在成就列表中选择 60 秒以内 成就。 选择 奖励 右侧的 新建 为玩家提供解锁成就的奖励。
给玩家 20 Gamecore 积分来解锁此成就。 在 奖励类型中,选择 Gamerscore。
在 值 中输入 20,如下所示。
选择 添加奖励。
请确保在成就列表中仍选择 60 秒以内 成就。 选择 规则 右侧的 新建 以定义解锁成就的条件。
在 规则名称 中输入 60 秒以内规则。 玩家看不到此值,因此你可以根据需要调用它。
在 操作 中选择 最小。 这表示,当选择统计信息实例小于或等于阈值时该成就处于解锁状态。
在 阈值 中输入 60。
选择 选择实例,选择 最快单圈 统计信息规则,然后选择 添加统计信息实例。
选择 添加规则,为该成就创建规则,如下所示。
添加从游戏发送事件的代码
现在,我们已经定义了 Xbox 服务用于更新玩家方案的 LapCompleted
事件,我们需要向游戏添加代码,以便在玩家完成游戏中的赛车圈时发送该事件。
若要编写事件,请调用事件名称为 LapCompleted
的 XblEventsWriteInGameEvent 函数。
平面 C API
HRESULT hr = XblEventsWriteInGameEvent(
xboxLiveContext,
"LapCompleted",
R"({"DifficultyLevelId":100, "GameplayModeId":"Adventure"})",
R"({"LocationX":1,"LocationY":1})"
);