事件概述
注意:仅当使用的是基于事件的用户统计信息,而不是游戏管理的用户统计信息时,本文才适用。
注意: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 中,应看到如下所示的事件:
查找对 v10.vortex-win.data.microsoft.com
的调用。 您将需要解码请求正文,如下所示,然后在查看 JSON 时,将看到如下所示的内容:
可以验证事件名称是否是您所期望的。 您的游戏 ID 将附到该名称之前。 还应验证是否获取了 200 返回代码。