アチーブメントインターフェース

アチーブメント (Achievements)インターフェースの概要です。

Windows
MacOS
Linux

アチーブメント (Achievements) を利用することで、デベロッパーはプレイヤーにインセンティブや報酬、そしてチャレンジを与えることができます。また、今までにないゲーム体験にプレイヤーを導いたり、ゲームのリプレイ価値を高めたり、プレイヤーとその友達間での競争を支援したりすることもできます。 多くのオンライン サービスではアチーブメントを付与する機能を採用しています。オンライン サブシステムでは、これをサポートするための Achievements インターフェース を提供しています。

「アチーブメント」という用語はすべてのオンライン サービスで共通して使われているわけではありませんが、Unreal Engine ではこの概念とそのサポート システムを説明するためにこの用語を使用します。

オンライン サブシステムは、アチーブメント システムを使用するためのゲーム内機能を提供しますが、アチーブメント自体の作成、削除、またはその他の変更に関連する機能については扱いません。 各オンライン サービスには、アチーブメントの管理をサポートするための独自のバックエンド システムがあります。

アチーブメント データを入手する

アチーブメント データには、プレイヤー固有のデータ、つまり、当該のプレイヤーによってどのアチーブメントがロック解除されたか (または部分的にロック解除されたか) と、アチーブメントと呼ばれるものやそれを表すアイコンなどの一般的なデータの両方が含まれています。

アチーブメント データを取得する

アチーブメント データは、オンライン サービスへの非同期呼び出しを通じ、要求に応じて利用できます。 ただし、このデータは 2 つの部分に分けられます。特定のプレイヤーのアチーブメント ID と達成率、およびアチーブメントの説明です。アチーブメントの説明はアチーブメント自体に関連しているため、すべてのプレイヤーに共通となっています。 利用可能なアチーブメントのリストを受け取るには、情報が必要なプレイヤーの FUniqueNetId を使用して QueryAchievements を呼び出します。 (FOnQueryAchievementsCompleteDelegate 型の) デリゲートが呼び出され、それが成功すると、(そのプレイヤーの) アチーブメント ID と達成率がキャッシュされます。 これらのアチーブメントに関する情報を表示したり、効果的に使用したりするためには、その完全な説明が必要になります。 これらは FOnQueryAchievementsCompleteDelegate を介してリクエストできますが、これはまた、提供された FOnQueryAchievementsCompleteDelegate 型のデリゲートを完了時に呼び出します。

アチーブメント データを調べる

データがキャッシュされたら、関数の呼び出しを何回か行うことでそれを調べることができます。 すべての既知のアチーブメント ID を含む配列が返されることから、開始する場所は GetCachedAchievements が最適です。 次に、これらの ID を使用して、特定のプレイヤーの FUniqueNetIdGetCachedAchievement を呼び出して、そのプレイヤーのアチーブメントに対する達成率を確認するか、または完全なアチーブメントの説明 (FOnlineAchievementDesc 型) を返す GetCachedAchievementDescription のパラメーターとして使用できます。

アチーブメント データを設定する

特定のユーザーのアチーブメントに対するロックは、完全に解除すること、または部分的に解除することができます。 例えば、ゲームを完了したプレイヤーは「ゲーム完了」のアチーブメントを取得する一方で、特別なテクニックを使ったプレイヤーは「このテクニックを 1000 回使う」というアチーブメントの 0.1 パーセントを取得するといったようなことが可能です。 さらに、ほとんどのオンライン サービスは、テスト中、ゲームで新しいテストを実行するたびにテスターが新しいアカウントを作成しなくても済むように、ゲームにおけるプレイヤーのアチーブメントのリセットをサポートしています。

アチーブメント データを書き込む

WriteAchievements 関数は 1 つ以上のアチーブメントのアップデートを受け取り、それらをオンラインサービスに送信します。その結果、提供された FOnAchievementsWrittenDelegate 型のデリゲートが完了時に呼び出されます。 各アップデートは、FOnlineStats オブジェクトのラッパーとして機能する単一の FOnlineAchievementsWrite を含む参照型です。 Properties フィールドを介して送信されるキーと値のペアには、アチーブメント ID と一致するキーと、0.0 ~ 100.0 パーセントの範囲の達成率を含む float 値が含まれている必要があります。 ほとんどのオンライン サービスでは、既に記録されているプレイヤーの達成率と同じか、それより低い率のアチーブメントへ変更しようとすると拒否されます。そのため、アップデート情報を送る前に現在の達成率を確認してください。

アチーブメント データをリセットする

開発とテストの間は、ResetAchievements 関数で現在のタイトル用に提供されたプレイヤーのアチーブメントのすべてをリセットできます。 ポリシーはオンライン サービスによって異なる可能性がありますが、この関数はテスト環境外では機能しないものと考える必要があります。

シッピング ビルドでは、この関数は存在しません。そのため、それを呼び出すコードを削除するか、下記のように、コンパイル時のロジックを使用してそのコードをマスクしてください。

 #if !UE_BUILD_SHIPPING
 // ResetAchievements を呼び出す
 #endif
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback