初始化 Microsoft 游戏开发工具包

要在将 Steamworks 添加到游戏项目后可开始使用它,你需要调用 SteamAPI_Init 函数来初始化 API。 或者,可在必要时选择通过 Steam 调用 SteamAPI_RestartAppIfNecessary 来重新启动应用。 由于不像在 Steam 中那样有统一的应用来启动游戏并与不同的游戏服务通信,因此初始化 Microsoft 游戏开发工具包 (GDK) 有点复杂。

若要开始使用 GDK 中的 API,需要执行以下步骤。

  1. MicrosoftGame.config 文件添加到项目中。
  2. 初始化游戏运行时服务。
  3. 初始化 Xbox Services API 来调用 Xbox Live,从而获取用户标识、云保存和成就等等。
  4. 将用户登录到 Xbox Live。 存储成功登录后返回的句柄和 Xbox 用户 ID (XUID) 供将来使用。

注意

在 Steam 上,你可在加载时访问用户的 Steam ID 和所有 API,因为在从 Steam 的服务启动游戏时,Steam 启动器会自动注入用户的帐户信息。 Xbox Live API 跨多个启动器供游戏使用,因此你不会免费获取它们。 启动时,你需要手动将用户登录。

要了解如何执行步骤 1,请参阅 MicrosoftGame.config 概述

可在 Xbox Live API 入门中(或以下汇总信息)了解如何执行步骤 2-4,确保同时实现该主题的“清理 XSAPI”部分中描述的行为。 在初始化游戏运行时和 Xbox Services API 之后,可将用户登录到 Xbox Live。 无需创建 XTaskQueue,因为即使将其留空,也将自动为你创建。

#include <XGameRuntimeInit.h>
#include <XTaskQueue.h>
#include <xsapi-c/services_c.h>

// ...

void InitializeXboxLive()
{
    // ...
    HRESULT hr = XGameRuntimeInitialize();
    if (FAILED(hr))
    {
        // handle error: couldn't initialize the Gaming Runtime service.
    }

    XblInitArgs xblArgs = {};
    xblArgs.scid = "00000000-0000-0000-0000-000000000000"; // Add your SCID here that you got from the Partner Center web portal.

    HRESULT hr = XblInitialize(&xblArgs);
    if (FAILED(hr))
    {
        // handle error: couldn't initialize Xbox Live.
    }
    // ...
}

将用户登录到 Xbox Live

使用 XUserAddAsync API 将用户登录到 Xbox Live。 如果这是他们第一次登录你的游戏,他们将获得你的游戏要求的权限列表。 他们需要明确授权这些权限才能访问其 Xbox Live 帐户。

成功登录后,可以使用 XUserHandle 传递到 XUserAddResult 函数的引用。 它可用于获取 Xbox Live 用户的相关信息,例如他们的玩家代号、玩家照片、登录状态、年龄组和权限。

用户首次登录后,如果自他们上次启动游戏后无需处理 UI 提示(例如新的隐私协议),则他们应该能够成功地以无提示的方式登录(即无需他们执行任何操作)。 但你仍然需要执行这些 API 调用来获取标识访问权限。

调用 Xbox Live API 需要 XblContextHandle 。 可以使用 XblContextCreateHandle 函数通过 获取 XblContextHandleXUserHandle