> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GDK を初期化する

> Steamworks から GDK にタイトルを移植する際に、MicrosoftGame.config を設定し、Gaming Runtime と XSAPI を初期化し、ユーザーを XBOX Live にサインインさせます。

Steamworks をゲームのプロジェクトに追加した後で使い始めるには、`SteamAPI_Init` 関数を呼び出して API を初期化する必要があります。オプションで、必要であれば `SteamAPI_RestartAppIfNecessary` を呼び出して Steam を通じてアプリを再起動できます。XBOX Game Development Kit (GDK) の初期化はもう少し関与します。ゲームの起動やさまざまなゲーミング サービスとの通信に使用される統合アプリが Steam のようにはないためです。

XBOX Game Development Kit (GDK) の API を使い始めるには、次の手順を使用する必要があります。

1. プロジェクトに *MicrosoftGame.config* ファイルを追加します。
2. Gaming Runtime サービスを初期化します。
3. ユーザー ID、クラウド セーブ、実績などを XBOX Live に呼び出すために、XBOX Services API を初期化します。
4. ユーザーを XBOX Live にサインインします。サインイン成功後に返されたハンドルと XBOX User ID (XUID) を将来の使用のために保存します。

<Note>
  Steam では、Steam ランチャーがサービスからゲームを起動するときに自動的にユーザーのアカウント情報を注入するため、ロード時にユーザーの Steam ID とすべての API にアクセスできます。XBOX Live API は複数のランチャーにわたるゲームで使用されるため、これは自動的に得られません。起動時に手動でユーザーをサインインする必要があります。
</Note>

手順 1 の方法については、[MicrosoftGame.config overview](/build/core-features/common/game-config/MicrosoftGameConfig-Overview) を参照してください。

手順 2〜4 の方法については、[Getting started with XBOX Live APIs](/services/xbox-services/index) を参照するか（または以下に要約されています）、そのトピックの「Cleaning up XSAPI」のセクションで説明されている挙動も必ず実装してください。Gaming Runtime と XBOX Services API を初期化した後、ユーザーを XBOX Live にサインインできます。空白のままにすると `XTaskQueue` は自動的に作成されるため、作成する必要はありません。

```cpp theme={null}
#include <XGameRuntimeInit.h>
#include <XTaskQueue.h>
#include <xsapi-c/services_c.h>

// ...

void InitializeXboxLive()
{
    // ...
    HRESULT hr = XGameRuntimeInitialize();
    if (FAILED(hr))
    {
        // エラーを処理する: Gaming Runtime サービスの初期化に失敗した。
    }

    XblInitArgs xblArgs = {};
    xblArgs.scid = "00000000-0000-0000-0000-000000000000"; // Partner Center Web ポータルから取得した SCID をここに追加する。

    HRESULT hr = XblInitialize(&xblArgs);
    if (FAILED(hr))
    {
        // エラーを処理する: XBOX Live の初期化に失敗した。
    }
    // ...
}
```

## ユーザーを XBOX Live にサインインする

[XUserAddAsync API](/build/core-features/common/user/xuser_howto_best_practice_signing_in) を使用してユーザーを XBOX Live にサインインします。ゲームに初めてサインインする場合、ゲームがリクエストする権限のリストが表示されます。XBOX Live アカウントにアクセスするため、これらの権限を明示的に承認する必要があります。

サインインに成功したら、[`XUserAddResult`](/reference/system/xuser/xuser_members) 関数に渡した `XUserHandle` 参照を使用できます。これは、その XBOX Live ユーザーに関する情報（ゲーマータグ、ゲーマー写真、サインイン状態、年齢グループ、権限など）を取得するために使用できます。

ユーザーが初めてサインインした後、前回ゲームを起動して以来 UI プロンプト（新しいプライバシー契約など）を解決する必要がなければ、無音でサインイン（つまり、彼らの側でアクションを必要としない）することが正常にできるはずです。ただし、ID アクセスを得るためにこれらの API 呼び出しを行う必要はあります。

XBOX Live API を呼び出すには `XblContextHandle` が必要です。[XblContextCreateHandle](/reference/live/xsapi-c/xbox_live_context_c/xbox_live_context_c_members) 関数を使用して、`XUserHandle` を使って `XblContextHandle` を取得できます。


## Related topics

- [Steam 移植ガイド概要](/ja-jp/build/steam-porting-guide/overview.md)
- [カスタム C/C++ エンジンに GDK を統合する](/ja-jp/build/gdk-and-engines/custom-engine.md)
- [Integrate Party with Lobby using Multiplayer SDK](/ja-jp/services/playfab/multiplayer/networking/party-lobby-integration.md)
- [Lobby SDK クイックスタート](/ja-jp/services/playfab/multiplayer/lobby/lobby-getting-started.md)
- [Matchmaking SDK quickstart](/ja-jp/services/playfab/multiplayer/matchmaking/quickstart-client-sdk.md)
