事件概述

注意:仅当使用的是基于事件的用户统计信息,而不是游戏管理的用户统计信息时,本文才适用。

注意:Application Insights 已弃用。 请使用 fiddler 监测事件。

将游戏事件写入 Xbox 服务用户统计信息服务

游戏中最令人兴奋的时刻是当发生重大事情时 - 打败对手、被打败、转移到某个地点、使用武器射击、摘一朵花。 通过使用 Xbox 服务,游戏可以共享有关玩家游戏中重要事件的信息。 详细信息可发送到 Xbox 服务,该服务记录有关用户的统计信息。 可以检索这些统计数据,用在用户统计信息、排行榜和匹配中。

一旦该事件以及作为事件的一部分发送的任何数据到达服务后,Xbox 服务将处理你在游戏的服务配置中定义的规则,以便游戏可创建或更新用户统计信息、排行榜等。

合作伙伴中心上的配置

首先,在“玩家统计信息 | 统计信息规则”页面上的合作伙伴中心定义您的事件。 一旦在合作伙伴中心中定义了事件和统计信息后,可以执行以下步骤发送事件。

写入事件

对于 Microsoft 游戏开发工具包 (GDK) 游戏,发送事件的 API 不同于 Xbox One 软件开发工具包游戏的 API,并且不需要使用清单文件。

XblEventsWriteInGameEvent 函数声明为:

STDAPI XblEventsWriteInGameEvent(
    _In_ XblContextHandle xboxLiveContext,
    _In_z_ const char* eventName,
    _In_opt_z_ const char* dimensionsJson,
    _In_opt_z_ const char* measurementsJson
) XBL_NOEXCEPT;

xboxLiveContext 是 Xbox 服务上下文句柄。

eventName 是在合作伙伴中心上定义的事件名称。

dimensions 是与具有有限值集的事件属性相对应的属性包。 例如,级别、武器或人物角色。

measurements 是与具有不确定值集的事件属性相对应的属性包。 例如,行驶英里数、杀敌数或游戏时间。

下面详细讨论维度和度量。

度量和维度

当为 Xbox 服务中的事件调用 XblEventsWriteInGameEvent 时,如果将事件属性作为维度或度量传递,则没有任何区别。 只有当您正在 Application Insights 上为遥测分析事件时这些差异才相关 - 这对游戏体验没有任何影响。 有关详细信息,请参阅 自定义事件和指标的 Application Insights API

维度可用于筛选或透视您的事件。 例如:向用户显示完成的级别 6,或显示所有使用武器“急射小机枪”完成的“敌人已击杀”事件。

度量可以以图形方式显示,或者在排行榜上使用会大有帮助。 例如,跟踪时间、取胜连续轮次等。

但为了与 Xbox 服务一起使用,无论你是将事件属性作为度量值还是维度传递,都不会产生任何差异,因此这将以相同的方式进行处理,以便解锁成就和其他 Xbox 服务相关功能。

调试 Xbox 服务事件

如果你的游戏中的事件未成功到达 Xbox 服务,则英雄统计信息和排行榜将不会更新。 如果你怀疑 Xbox 服务未成功收到事件,请尝试执行以下步骤:

  • 确认您的沙盒正确。

  • 在设备上设置 Fiddler。 在 Fiddler 中,应看到如下所示的事件:

Fiddler 未解码事件

查找对 v10.vortex-win.data.microsoft.com 的调用。 您将需要解码请求正文,如下所示,然后在查看 JSON 时,将看到如下所示的内容:

Fiddler 解码事件

可以验证事件名称是否是您所期望的。 您的游戏 ID 将附到该名称之前。 还应验证是否获取了 200 返回代码。

另请参阅

基于事件的信息与游戏管理的统计信息