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

# イベント ベースの実績を有効にするためのイベントの書き込み

> XBOX services のステータス ルールがステータスを更新してイベント ベースの実績を解除するために、ゲーム イベントを発火する XblEventsWriteInGameEvent のサンプル コード。

このトピックでは、ゲーム内イベントの書き込み方法のサンプル コードを示します。

イベントが発火されると、Partner Center で定義したステータス ルールに従って、サービス上のイベント ベースの統計が更新されます。
それらのステータスがイベント ベースの実績を駆動します。

## 始める前に

* 製品で XBOX services の全機能セットを使用していること。新しい製品は限定的な XBOX services で開始され、製品がオンボーディングされるまで実績とゲーマースコアは利用できません。詳細については、「[製品オンボーディングをリクエストしてフル機能の XBOX サービスを有効にする](https://docs.xbox.com/ja-jp/home/onboarding.md#request-product-onboarding-to-enable-full-xbox-services)」を参照してください。
* Partner Center でイベント、ステータス ルール、および実績を構成し、XBOX services の構成を開発用サンドボックスに公開していること。
* 開発キットまたは Windows PC が同じ開発用サンドボックスを使用しており、そのサンドボックスにアクセスできるテスト アカウントでサインインしていること。詳細については、「[Xbox services サンドボックスの概要](https://docs.xbox.com/ja-jp/services/xbox-services/fundamentals/sandboxes/live-setup-sandbox.md)」を参照してください。
* ゲームが Gaming Runtime を初期化し、`scid` メンバーにサービス構成 ID (SCID) を含む [XblInitArgs](https://docs.xbox.com/ja-jp/reference/live/xsapi-c/xbox_live_global_c/structs/xblinitargs.md) 構造体を指定して [XblInitialize](https://docs.xbox.com/ja-jp/reference/live/xsapi-c/xbox_live_global_c/functions/xblinitialize.md) を呼び出していること。SCID では大文字と小文字が区別されます。詳細については、「[XBOX services API の使用方法](https://docs.xbox.com/ja-jp/services/xbox-services/fundamentals/xbox-services-api/live-gs-xbl-apis.md)」を参照してください。
* ユーザーをサインインさせ、[XblContextCreateHandle](https://docs.xbox.com/ja-jp/reference/live/xsapi-c/xbox_live_context_c/functions/xblcontextcreatehandle.md) を呼び出してそのユーザーの `XblContextHandle` を作成していること。

テストの実行ごとにテスト アカウントの実績と統計をリセットするには、[Player Data Reset ツール (XblPlayerDataReset.exe)](https://docs.xbox.com/ja-jp/tools/tools-services/live-player-data-reset.md) を使用します。XUID でプレイヤーをリセットするには、XblDevAccount.exe でサインインする開発者アカウントに、製品レベルの Tools Access アクセス許可が必要です。

## イベントの書き込み

次の例では、フラット C API を使用します。`LogToScreen` は、アプリのログ関数を表します。

```cpp theme={null}
HRESULT hr = XblEventsWriteInGameEvent(
    xboxLiveContext,
    "PuzzleSolved",
    R"({"DifficultyLevelId":100, "GameplayModeId":"Adventure"})",
    R"({"LocationX":1,"LocationY":1})"
);
if (FAILED(hr))
{
    // Log the failure. Don't retry the call in a loop.
    LogToScreen("XblEventsWriteInGameEvent failed: 0x%08X", static_cast<unsigned int>(hr));
}
```

詳細は、[XblEventsWriteInGameEvent](https://docs.xbox.com/ja-jp/reference/live/xsapi-c/events_c/functions/xbleventswriteingameevent.md) を参照してください。

## トラブルシューティング

* **呼び出しが `E_INVALIDARG` を返す。** *xboxLiveContext* またはイベント名が null です。
* **呼び出しが `E_XBL_NOT_INITIALIZED` を返す。** イベントを書き込む前に `XblInitialize` を呼び出してください。
* **呼び出しが `E_NOTIMPL` を返す。** Gaming Runtime の XGameEvent 機能を利用できません。Windows PC では、インストールされている Gaming Runtime Services に XGameEvent 機能が含まれている必要があります。
* **呼び出しは成功するが、統計や実績が変化しない。** イベント名とイベント フィールドの名前は、タイトルのサービス構成内の名前と一致している必要があります。名前では大文字と小文字は区別されません。イベント名がサービス構成内のイベントと一致しない場合、サービスはゲームに通知せずにイベントを破棄します。
* **フィールドの値が誤った場所にある。** 難易度やゲーム モードなど、有限の数値または文字列の値セットを持つフィールドはディメンションに配置します。スコア、時間、位置などのスカラー数値メトリックは測定値に配置します。
* **更新に時間がかかる。** イベントは、デバイスがオフラインの場合でもデバイス上にローカルで書き込まれ、デバイスがオンラインになるとアップロードされます。デバイスがオンラインの場合、イベント ベースの統計は通常、イベントが書き込まれてから 5 ～ 20 秒後に更新されます。


## Related topics

- [イベント ベースの実績のサンプル コード](https://docs.xbox.com/ja-jp/services/xbox-services/player-data/achievements/event-based/how-to/live-achievements-eb-howto-nav.md)
- [XBOX Achievements Manager API の概要](https://docs.xbox.com/ja-jp/services/xbox-services/player-data/achievements/achievements-manager/live-achievements-manager-overview.md)
- [イベントベースの統計を駆動するためのイベントの書き込み](https://docs.xbox.com/ja-jp/services/xbox-services/player-data/stats-leaderboards/event-based/how-to/live-sending-eb-stat.md)
- [イベント ベースの実績を作成するためのシナリオ](https://docs.xbox.com/ja-jp/services/xbox-services/player-data/achievements/event-based/concepts/live-achievements-scenarios.md)
- [イベント ベースの実績の概念](https://docs.xbox.com/ja-jp/services/xbox-services/player-data/achievements/event-based/concepts/live-achievements-eb-concepts-nav.md)
