> ## 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.

# イベント ベースの実績を作成するためのシナリオ

> AND/OR ロジック、繰り返しアクション、コレクション、パーソナル ベスト、ブール値フラグを含む、イベント ベースの XBOX Live 実績の一般的なパターン。

このトピックでは、実績を作成するためのいくつかの一般的なシナリオを説明します。

<Note>このトピックは、現在イベント ベースの実績 (Achievements 2013) を使用しており、クロス プログレッションの利用を継続する場合に適用されます。それ以外の場合は、[タイトル マネージド実績](/services/xbox-services/player-data/achievements/title-managed/live-achievements-tm-overview) の使用を推奨します。</Note>

* [複数の条件に対する AND/OR ロジック](#scenario-1)
* [繰り返しアクション](#scenario-2)
* [アクションのコレクション](#scenario-3)
* [パーソナル ベスト](#scenario-4)
* [条件が満たされたことを示すバイナリ値](#scenario-5)

<a id="scenario-1" />

## 複数の条件に対する AND/OR ロジック

実績に対する AND シナリオには、同期 AND と非同期 AND の 2 つの一般的なものがあります。

### 非同期 AND

非同期 AND ロジックは、すべての実績ルールが満たされたときに解除される実績を定義します。ユーザーは各ルールを個別の時点で、それぞれ独立して満たすことができます。

このタイプの実績の例としては、「ゾンビを 10 体、ゴーストを 20 体倒す」があります。この実績を定義するには、次の表に示すように複数の実績ルールを構成します。

| フィールド          | 値                      |
| -------------- | ---------------------- |
| **ルール #1 の名前** | **ゾンビを 10 体倒す**        |
| Stats          | Kills.EnemyType.Zombie |
| Action         | SUM                    |
| Threshold      | 10                     |
| **ルール #2 の名前** | **ゴーストを 20 体倒す**       |
| Stats          | Kills.EnemyType.Ghost  |
| Action         | SUM                    |
| Threshold      | 20                     |

### 同期 AND

同期 AND ロジックは、すべての実績ルールが同時に満たされたときに解除される実績を定義します。この例としては、「Johnny としてプレイし、バットでゾンビを 10 体倒す」があります。

同期 AND ルールは、各基準を個別にキャプチャする複数の実績ルールを定義するだけでは実装できません。各実績ルールは独立して満たすことができるため、期待どおりに動作しません。次のような場合、例の実績が誤って解除されてしまいます。

* 月曜日: Johnny としてプレイし、キル数はゼロ。
* 火曜日: Sam としてプレイし、ゾンビを 10 体倒す。
* 金曜日: Tim としてプレイし、バットでスケルトンを 5 体倒す。

このような実績を定義するには、各条件を包含するステータス ルールを定義する必要があります。イベントは特定の瞬間にゲームで正確に起こったことを表現するため、ユーザーのアクティビティの完全なコンテキストを含むのはイベントのみです。ステータスはイベントから継承し、実績はステータスから継承します。実績に関連するコンテキストを保持するには、実績の基準をステータスとして定義する必要があります。実績は、必要とする正確な値を含む特定のステータス インスタンスによって閾値が満たされた場合にのみ解除されます。次の構成では、例の実績を定義します。

| フィールド          | 値                                                            |
| -------------- | ------------------------------------------------------------ |
| **ルール #1 の名前** | Johnny としてプレイ中に、バットでゾンビを 10 体倒す                              |
| Stats          | Kills.EnemyType.Zombie.WeaponType.Bat.PlayerCharacter.Johnny |
| Action         | SUM                                                          |
| Threshold      | 10                                                           |

### 実績の OR ロジック

実績の最も一般的な OR シナリオは、特定のゴールを、明示的に列挙された複数の可能な手段のセットとして表現するものです。この実績はこの方法または別の方法で解除できます。

このシナリオは、各ゴールごとに 1 つずつ、複数の実績ルールを定義することでは実装できません。実績の複数のルールは論理 AND として動作するため、実績が解除されるにはすべてのルールが満たされる必要があります。「レース トラック A で 3 分未満でレースを完走する」に対する 1 つの実績ルールと、「レース トラック B で 1000 マイルを走行する」に対する 2 つ目の実績ルールを使用すると、ユーザーがそれら 2 つのゴールをともに満たしたときにのみ解除される実績になります。

代わりに、OR ロジックを持つ実績を定義するには、複数のステータス インスタンスに基づいて 1 つの実績ルールを構成する必要があります。各ステータス インスタンスは、許容される手段の 1 つを追跡します。

#### MIN または MAX ルールを使用する

このケースの例は、「レース トラック A、レース トラック B、またはレース トラック F で 3 分未満でレースを完走する」です。この実績構成を次の表に示します。

| フィールド          | 値                               |
| -------------- | ------------------------------- |
| **ルール #1 の名前** | トラック A、B、または F で 3 分未満でレースを完走する |
| Stat(s)        | FinishTimeInSeconds.TrackId.A   |

FinishTimeInSeconds.TrackId.B

FinishTimeInSeconds.TrackId.F
Action | MIN
Threshold | 180

この実績ルールは MIN ルール アクションを使用するため、列挙されたステータス インスタンスのいずれかが閾値を満たすと実績が解除されます。たとえば、`FinishTimeInSeconds.TrackId.A is 220`、`FinishTimeInSeconds.TrackId.B is 163`、`FinishTimeInSeconds.TrackId.F` が 199 の場合、ユーザーはレース トラック B で閾値を上回るゴール タイムを記録したため、実績が解除されます。

#### SUM ルールを使用する

このケースの例は、「レース トラック A、レース トラック B、またはレース トラック F で累計 1000 マイル走行する」です。この実績構成を次の表に示します。

| フィールド          | 値                                   |
| -------------- | ----------------------------------- |
| **ルール #1 の名前** | レース トラック A、B、または F で 1000 マイル以上走行する |
| Stats          | MilesDriven.TrackId.A               |

MilesDriven.TrackId.B

MilesDriven.TrackId.F
Action | SUM
Threshold | 1000

この実績ルールは SUM ルール アクションを使用するため、列挙されたステータス インスタンスの集計値が閾値を満たすと実績が解除されます。たとえば、`MilesDriven.TrackId.A is 900`、`MilesDriven.TrackId.B is 115`、`MilesDriven.TrackId.F is 0` の場合、3 つのステータス全体でのユーザーの集計合計が閾値を上回るため、実績が解除されます。

#### このゴール OR あのゴール

サポートされていない実績シナリオとして、ユーザーがいくつか異なるゴールのうちの 1 つを達成することを要求するものがあります。たとえば、「レース トラック A で 3 分未満でレースを完走する OR レース トラック B で 1000 マイル走行する」です。

この実績シナリオは、現在、実績ロジックではサポートされていません。各ゴールごとに 1 つずつ、複数の実績ルールを定義することでは達成できません。実績の複数のルールは論理 AND として動作するため、実績が解除されるにはすべてのルールが満たされる必要があります。「レース トラック A で 3 分未満でレースを完走する」に対する 1 つの実績ルールと、「レース トラック B で 1000 マイルを走行する」に対する 2 つ目の実績ルールを使用すると、ユーザーがそれら 2 つのルールをともに満たしたときにのみ解除される実績になります。

<a id="scenario-2" />

## 繰り返しアクション

このパターンは、ユーザーがアクションを複数回繰り返す必要のある実績を定義するために使用します。

### 例 1: マルチプレイヤー マッチで 50 勝する

| フィールド     | 値                                          |
| --------- | ------------------------------------------ |
| **ルール名**  | マルチプレイヤー マッチで 50 勝する                       |
| Stats     | MatchesCompleted.Result.1.Mode.Multiplayer |
| Action    | SUM                                        |
| Threshold | 50                                         |

### 例 2: 動画を 10 本アップロードし、動画を 100 本評価する

| フィールド          | 値                  |
| -------------- | ------------------ |
| **ルール #1 の名前** | **動画を 10 本アップロード** |
| Stats          | VideosUploaded     |
| Action         | SUM                |
| Threshold      | 10                 |
| **ルール #2 の名前** | **動画を 100 本評価**    |
| Stats          | VideosRated        |
| Action         | SUM                |
| Threshold      | 100                |

ユーザー統計の設計方法の詳細については、[累積値のためのカウンターの使用](/services/xbox-services/player-data/stats-leaderboards/event-based/config/live-user-stats-scenarios#ucfcv) を参照してください。

<a id="scenario-3" />

## アクションのコレクション

### 目標: Y 個のうち X 個のアイテムを見つける

このパターンは、特定のセット内のすべて (またはサブセット) のメンバーに対してユーザーがアクションを実行する必要のある実績を定義するために使用します。

### 例 1: すべてのレベルをハードコア難易度でクリアする

| フィールド          | 値                               |
| -------------- | ------------------------------- |
| **ルール #1 の名前** | **レベル 1 をハードコアでクリア**            |
| Stats          | LevelCompleted.Mode.3.LevelId.1 |
| Action         | SUM                             |
| Threshold      | 1                               |
| **ルール #2 の名前** | **レベル 2 をハードコアでクリア**            |
| Stats          | LevelCompleted.Mode.3.LevelId.2 |
| Action         | SUM                             |
| Threshold      | 1                               |
| **ルール #3 の名前** | **レベル 3 をハードコアでクリア**            |
| Stats          | LevelCompleted.Mode.3.LevelId.3 |
| Action         | SUM                             |
| Threshold      | 1                               |

### 例 2: いずれかのヨーロッパのトラックを 3 分未満で走破する

この実績は、個々のトラックのゴール タイムの最小値として、またはトラックのセットに対するベスト ゴール タイムを使用して定義できます。次のいずれかの方法を使用し、両方は使用しないでください。

#### 方法 1

| フィールド    | 値                                  |
| -------- | ---------------------------------- |
| **ルール名** | いずれかのヨーロッパのトラックを 3 分未満で走破する        |
| Stats    | LastFinishTimeInSeconds.TrackId.21 |

LastFinishTimeInSeconds.TrackId.22

LastFinishTimeInSeconds.TrackId.23

LastFinishTimeInSeconds.TrackId.24

LastFinishTimeInSeconds.TrackId.25

LastFinishTimeInSeconds.TrackId.26
Action | MIN
Threshold | 180

#### 方法 2

| フィールド     | 値                                       |
| --------- | --------------------------------------- |
| **ルール名**  | いずれかのヨーロッパのトラックを 3 分未満で走破する             |
| Stats     | BestFinishTimeInSeconds.TrackSet.Europe |
| Action    | MIN                                     |
| Threshold | 180                                     |

関連するユーザー統計を設計するには、[最新の値の追跡](/services/xbox-services/player-data/stats-leaderboards/event-based/config/live-user-stats-scenarios#ttmr) と [パーソナル ベストの追跡](/services/xbox-services/player-data/stats-leaderboards/event-based/config/live-user-stats-scenarios#tapb) を参照してください。

<a id="scenario-4" />

## パーソナル ベスト

このパターンは、ユーザーが単一のセッションまたはプレイスルーで目標値を上回る必要のある実績を定義するために使用します。この実績は、複数回の実行など、集計された取り組みでは達成できません。

#### 例 1: 死亡回数 5 回以下でゲームをクリアする

| フィールド     | 値                                |
| --------- | -------------------------------- |
| **ルール名**  | 死亡回数 5 回以下でゲームをクリアする             |
| Stats     | PlaythroughDeaths.GameResultId.1 |
| Action    | MIN                              |
| Threshold | 5                                |

#### 例 2: Lebron James として 50 点以上を獲得してマッチで勝利する

| フィールド     | 値                                       |
| --------- | --------------------------------------- |
| **ルール名**  | マッチに勝利 AND Lebron としてプレイ AND 50 点以上を獲得  |
| Stats     | BestScore.PlayerId.3056.MatchResultId.1 |
| Action    | SUM                                     |
| Threshold | 10                                      |

<a id="scenario-5" />

## 条件が満たされたことを示すバイナリ値

このパターンは、XBOX services のステータスを介して簡単に追跡できない、または他の XBOX services の実績構成オプションでサポートされていない複雑なアクティビティをユーザーが行う必要のある実績を定義するために使用します。

### 例: ショットガンで 90 キル、またはスナイパーで 10 キルを取得する

| フィールド     | 値                                 |
| --------- | --------------------------------- |
| **ルール名**  | ショットガンで 90 キル OR スナイパーで 10 キル     |
| Stats     | AchievementUnlocked.UnlockId.9010 |
| Action    | SUM                               |
| Threshold | 1                                 |

<Info>この実績構成は、ショットガンによるキル数もスナイパーによるキル数も追跡しません。これら 2 つの条件のうち 1 つが満たされたという事実だけを記録します。このシナリオはデータ プラットフォームでサポートされていないため、実績はタイトル側で設定する必要があります。</Info>


## Related topics

- [イベント ベースの実績の概念](/ja-jp/services/xbox-services/player-data/achievements/event-based/concepts/live-achievements-eb-concepts-nav.md)
- [イベント ベースの実績を有効にするためのイベントの書き込み](/ja-jp/services/xbox-services/player-data/achievements/event-based/how-to/live-writing-event-based-achievement.md)
- [概念](/ja-jp/services/xbox-services/player-data/achievements/event-based/concepts/index.md)
- [イベント ベースの実績のサンプル コード](/ja-jp/services/xbox-services/player-data/achievements/event-based/how-to/live-achievements-eb-howto-nav.md)
- [イベント ベースの実績のポータル構成](/ja-jp/services/xbox-services/player-data/achievements/event-based/config/live-achievements-eb-portal.md)
