Achievements インターフェース を使って以下の操作を行います。
- 特定のプレイヤーのアチーブメント ステートに関するデータを抽出する。
- 呼び出しによってアチーブメントを手動でロック解除する。
- アプリケーションに属するアチーブメントのすべてのデータを抽出する。
API リファレンスの詳細については、「EOS Achievements インターレース API リファレンス」を参照してください。
Achievements インターフェイスで定義した実績は、「Epic Online Services のアチーブメント」と呼ばれます。商品が利用するプラットフォームやストア フロントに関係なく、商品に追加することができます。
EOS SDK バージョン 1.8 以降、アチーブメント アイコンの処理方法が更新されました。1.7 から 1.8 に移行した場合は中断は発生しないはずですが、一部のアイコンがデフォルトの状態に戻る可能性があります。そのような表示になった場合は、アカウント担当者にサポート依頼をしてください。
製品 を Epic Games ストアで公開すると、Epic Games Store アチーブメントによって製品のユーザー エクスペリエンスを強化することができます。Epic Games ストア アチーブメントは Epic Online Services アチーブメントを拡張します。これらは、ユーザーの Epic プレイヤー アカウントに経験値 (XP) などの特典を与えるものです。詳細については、「Epic Games ストア アチーブメント」ドキュメントを参照してください。
Achievements インターフェースにアクセスする
Achievements インターフェースにアクセスするには、EOS_Platform_GetAchievementsInterface
関数を呼び出して EOS_HAchievements
ハンドルを取得する必要があります。他のすべてのインターフェースと同様に、リクエストが完了したときに適切なコールバックが確実にトリガーされるように、EOS_HPlatform
ハンドルが動作していることが重要となります。
Epic Online Services アチーブメントの定義
Epic Online Services アチーブメント定義において LATEST 集約タイプはサポートしなくなりました。以下の影響があります。
- 集約タイプ LATEST を使ったスタッツを作成することはできます。
- ただし、集約タイプ LATEST を使ったスタッツを参照する Epic Online Services アチーブメントを作成することはできません。
- 集約タイプ LATEST を使ったスタッツを参照する Epic Online Services アチーブメントがすでにある場合、編集はまだ行うことができます。
Epic Online Services アチーブメントの定義データを取得すると、次のパラメータを持つ構造体 EOS_Achievements_DefinitionV2
に含まれます。
EOS_Achievements_DefinitionV2 : | |
---|---|
パラメータ | 説明 |
ApiVersion |
EOS_ACHIEVEMENTS_DEFINITIONV2_API_LATEST |
AchievementId |
アチーブメントを一意に識別するために使用できるアチーブメント ID。 |
UnlockedDisplayName |
ロック解除されたときのローカライズされたアチーブメントの表示名。 |
UnlockedDescription |
ロック解除されたときのローカライズされたアチーブメントの説明。 |
LockedDisplayName |
ロックされているときのローカライズされたアチーブメントの表示名。 |
LockedDescription |
ロックされているときのローカライズされたアチーブメントの説明。 |
FlavorText |
ゲームが任意の方法で使用できるローカライズされたフレーバー テキスト。Developer Portal でデータが設定されていない場合、これは null になる可能性があります。 |
UnlockedIconURL |
ロック解除されたときにアチーブメントに表示するアイコンの URL。Developer Portal でデータが設定されていない場合、この値は null になり、ソーシャル オーバーレイ はデフォルト画像を使用します。 |
LockedIconURL |
ロック解除されたときにアチーブメントに表示するアイコンの URL。Developer Portal でデータが設定されていない場合、この値は null になり、ソーシャル オーバーレイ はデフォルト画像を使用します。 |
bIsHidden |
アチーブメントが非表示の場合は EOS_TRUE 、それ以外の場合は EOS_FALSE 。EOS_TRUE に設定する場合、ソーシャル オーバーレイ はアチーブメントがロックされている間は表示名に "Hidden Achievement" および説明に空の文字列を使用します。しかしながら、この構造体内の LockedDisplayName と LockedDescription の値は変わりません。 |
StatThresholdsCount |
このアチーブメントに対する進行状況を監視するために使用されるスタッツしきい値の数。 |
StatThresholds |
この Epic Online Services アチーブメントのロックを解除するために満たす必要がある EOS_Achievements_StatThresholds の配列。名前としきい値で構成されています。 |
Epic Online Services アチーブメント定義をクエリする
関数 EOS_Achievements_QueryDefinitions
を使用して、アプリケーションの Developer Portal で作成したすべての Epic Online Services アチーブメント定義の配列を取得できます。
クエリが完了すると、Epic Online Services アチーブメントの定義は関数から返されるのではなく、ローカルにキャッシュされます。そして、EOS_Achievements_CopyAchievementDefinitionV2ByIndex
または EOS_Achievements_CopyAchievementDefinitionV2ByAchievementId
を使用してキャッシュにアクセスし、EOS_Achievements_DefinitionV2
のコピーを取得できます。その際、これらのコピーされた定義を保存するには、EOS_Achievements_DefinitionV2_Release
を使用してメモリを解放する必要があります。 Epic Online Services アチーブメントのコピーの詳細については、以下の「キャッシュされたアチーブメント定義をコピーする」セクションを参照してください。
EOS_Achievements_QueryDefinitions
は次のパラメータを取ります。
EOS_Achievements_QueryDefinitions : | ||
---|---|---|
パラメータ | 説明 | |
Handle |
有効な EOS_HAchievements ハンドル。 | |
Options |
ローカライズされたテキストの取得に関連するデータと、返されるデータの種類に関する EOS_Achievements_QueryDefinitionsOptions オプションを含む構造体。 | |
ClientData |
CompletionDelegate で返される任意のデータ。 | |
CompletionDelegate |
EOS_Achievements_OnQueryDefinitionsCompleteCallback と一致するシグネチャを使用した操作の完了時に呼び出される関数。 |
EOS_Achievements_QueryDefinitionsOptions : | ||
---|---|---|
パラメータ | 説明 | |
ApiVersion |
EOS_ACHIEVEMENTS_QUERYDEFINITIONS_API_LATEST に設定します。 | |
LocalUserId |
定義をクエリするユーザーの製品ユーザー ID。 | |
EpicUserId |
非推奨です。null に設定する必要があります。 | |
HiddenAchievementIds |
非推奨です。null に設定する必要があります。 | |
HiddenAchievementsCount |
非推奨です。ゼロに設定する必要があります。 |
クエリが成功した場合、この関数は EOS_Success
の EOS_EResult
値を返します。その他の結果の場合は、エラーまたは不正なパラメータであることを示します。
クエリは LocalUserId
を使用してユーザーの ロケール を決定します。これは、ユーザーがリンクされた Epic Online Services アカウント ID を持っている場合にローカライズされたテキストを返すために使用されます。 また、 EOS_Platform_SetOverrideLocaleCode
を呼び出して、選択したロケールを使用して Epic Online Services アチーブメント情報を取得するようシステムに強制することもできます。
クエリ定義の完全なコールバック
コールバック関数 EOS_Achievements_OnQueryDefinitionsCompleteCallback
は、クエリを定義する操作が完了し、EOS_Achievements_OnQueryDefinitionsCompleteCallbackInfo
構造体を返すときに呼び出されます。コールバック情報には、ResultCode
と、ClientData
パラメータを使用して EOS_Achievements_QueryDefinitionsOptions
で設定されたクライアント データが含まれます。
キャッシュされた Epic Online Services アチーブメント定義をコピーする
EOS_Achievements_QueryDefinitions
操作が完了すると、 Epic Online Services アチーブメントの定義はローカルにキャッシュされます。そして、EOS_Achievements_CopyAchievementDefinitionV2ByIndex
または EOS_Achievements_CopyAchievementDefinitionV2ByAchievementId
を使用して、EOS_Achievements_DefinitionV2
のコピーを取得できます。
キャッシュされた Epic Online Services アチーブメントの数を取得する
GetAchievementDefinitionCount
関数を使用して、キャッシュされた利用可能な Epic Online Services アチーブメントの数を取得できます。この関数は、カウントを整数として返し、EOS_Achievements_GetAchievementDefinitionCountOptions
構造体をパラメータとして受け取ります。
EOS_Achievements_GetAchievementDefinitionCountOptions
構造体自体は ApiVersion
パラメータのみを受け取ります。これは EOS_ACHIEVEMENTS_GETACHIEVEMENTDEFINITIONCOUNT_API_LATEST
の値に設定する必要があります。
インデックスで Epic Online Services アチーブメントの定義をコピーする
関数 EOS_Achievements_CopyAchievementDefinitionV2ByIndex
は、キャッシュされた Epic Online Services アチーブメント リスト内のインデックス値を使用して EOS_Achievements_DefinitionV2
のコピーを取得し、そのコピーを出力パラメータ OutDefinition
を介して出力します。この関数が取るパラメータを以下に示します。
EOS_Achievements_CopyAchievementDefinitionV2ByIndex : | |
---|---|
パラメータ | 説明 |
Handle |
有効な EOS_HAchievements ハンドル。 |
Options |
キャッシュからコピーするためにリクエストされたインデックスを含む EOS_Achievements_CopyAchievementDefinitionV2ByIndexOptions 構造体。 |
OutDefinition |
リクエストされた EOS_Achievements_DefinitionV2 のコピーを含む出力パラメータ。OutDefinition に有効なデータが含まれている場合は、このデータで EOS_Achievements_DefinitionV2_Release を呼び出してメモリから解放する必要があります。 |
EOS_Achievements_CopyAchievementDefinitionV2ByIndexOptions : | |
---|---|
パラメータ | 説明 |
ApiVersion |
EOS_ACHIEVEMENTS_COPYDEFINITIONV2BYINDEX_API_LATEST |
AchievementIndex |
キャッシュから取得するアチーブメント定義のインデックス。 |
この関数は、情報が利用可能で OutDefinition
に渡された場合、EOS_Success
の値を持つ EOS_EResult
を返します。出力パラメータに null ポインタを渡すと、EOS_InvalidParameters
が返されます。リクエストされたアチーブメント定義が見つからない場合は、EOS_NotFound
を返します。
ID でアチーブメント定義をコピーする
関数 EOS_Achievements_CopyAchievementDefinitionV2ByAchievementId
は、アチーブメントのキャッシュで指定された AchievementId
と一致するアチーブメントを検索し、そのデータのコピーを出力パラメータ OutDefinition
を介して出力します。この関数が取るパラメータを以下に示します。
EOS_Achievements_CopyAchievementDefinitionV2ByAchievementId : | |
---|---|
パラメータ | 説明 |
Handle |
有効な EOS_HAchievements ハンドル。 |
Options |
キャッシュを検索するアチーブメント ID を含む EOS_Achievements_CopyAchievementDefinitionV2ByAchievementIdOptions 構造体。 |
OutDefinition |
リクエストされた EOS_Achievements_DefinitionV2 のコピーを含む出力パラメータ。OutDefinition に有効なデータが含まれている場合は、このデータで EOS_Achievements_DefinitionV2_Release を呼び出してメモリから解放する必要があります。 |
CopyAchievementDefinitionV2ByAchievementIdOptions : | |
---|---|
パラメータ | 説明 |
ApiVersion |
Set to EOS_ACHIEVEMENTS_COPYDEFINITIONV2BYACHIEVEMENTID_API_LATEST . |
AchievementId |
キャッシュからアチーブメントをコピーするときに検索するアチーブメント ID。 |
この関数は、情報が利用可能で OutDefinition
に渡された場合、EOS_Success
の値を持つ EOS_EResult
を返します。出力パラメータに null ポインタを渡すと、EOS_InvalidParameters
が返されます。リクエストされたアチーブメント定義が見つからない場合は、EOS_NotFound
を返します。
コピーしたアチーブメント定義からメモリを解放する
EOS_Achievements_CopyAchievementDefinitionV2ByIndex
または EOS_Achievements_CopyAchievementDefinitionV2ByAchievementId
の OutDefinition
でコピーされた情報は、関数 EOS_Achievements_DefinitionV2_Release
を使用してメモリから解放する必要があります。この関数は、AchievementDefinition
と呼ばれる単一の EOS_Achievements_DefinitionV2
へのポインタを受け取ります。
プレイヤーのアチーブメント進行状況データ
プレイヤーのアチーブメント進行状況データは、EOS_Achievements_PlayerAchievement
と呼ばれる構造体に含まれています。EOS_Achievements_AchievementDefinition
はバックエンドの Epic Online Services アチーブメントに関する一般情報が含む一方で、EOS_Achievements_PlayerAchievement
は、特定のプレイヤーのアチーブメントのロック解除に向けた進行状況、(すでにロック解除されている場合は) ロックが解除された時間、およびロック解除に関連するスタッツを追跡します。
EOS_Achievements_PlayerAchievement
のパラメータは次のとおりです。
EOS_Achievements_PlayerAchievement : | ||
---|---|---|
パラメータ | 説明 | |
ApiVersion |
Set to EOS_ACHIEVEMENTS_PLAYERACHIEVEMENT_API_LATEST . | |
AchievementId |
アチーブメントを識別するために使用される一意の識別子。 | |
Progress |
このアチーブメントの完了までの進行状況のパーセント。 現在の進行状況は、 EOS_Achievements_QueryPlayerAchievements が成功したときとアチーブメントがロック解除されたときに更新されます。 | |
UnlockTime |
アチーブメントがロック解除された POSIX タイムスタンプ。アチーブメントがロック解除されていない場合、この値は EOS_ACHIEVEMENTS_ACHIEVEMENT_UNLOCKTIME_UNDEFINED になります。 | |
StatInfoCount |
このアチーブメントに関連付けられているプレイヤー スタッツ エントリの数。 | |
StatInfo |
アチーブメントのロックを解除するために使用されるスタッツしきい値と、それらスタッツに対するプレイヤーの現在の値に関する情報を含む EOS_Achievements_PlayerStatInfo 構造体の配列。 | |
DisplayName |
この特定プレイヤーの現在のアチーブメント進行状況に基づく、アチーブメントのローカライズされた表示名。 DisplayName は EOS_Achievements_QueryDefinitions が正常に呼び出されるまで SDK キャッシュ内で null になります。 | |
Description |
この特定プレイヤーの現在のアチーブメント進行状況に基づく、アチーブメントのローカライズされた 説明。 EOS_Achievements_QueryPlayerAchievements が成功したとき、およびアチーブメントが解除されたときに、現在の進捗が更新されます。 | |
IconURL |
この特定プレイヤーの現在のアチーブメント進行状況に基づく、アチーブメントに表示するアイコンの URL。Developer Portal でデータが設定されていない場合、これは null になる可能性があります。IconURL は EOS_Achievements_QueryDefinitions が正常に呼び出されるまで SDK キャッシュ内で null になります。 | |
FlavorText |
ゲームが任意の方法で使用できるローカライズされたフレーバー テキスト。Developer Portal でデータが設定されていない場合、これは null になる可能性があります。 | FlavorText is EOS_Achievements_QueryDefinitions が正常に呼び出されるまで SDK キャッシュ内で null になります。 |
EOS_Achievements_PlayerStatInfo : | |
---|---|
パラメータ | 説明 |
ApiVersion |
EOS_ACHIEVEMENTS_PLAYERSTATINFO_API_LATEST に設定します。 |
Name |
スタッツの名前。 |
CurrentValue |
スタッツの現在の値。 |
ThresholdValue |
スタッツのしきい値。 |
プレイヤースタッツの詳細については「Stats Interface」のページを参照してください。
プレイヤーのアチーブメント進行状況をクエリする
非同期関数 EOS_Achievements_QueryPlayerAchievements
を使用して、プレイヤーのアチーブメント進行状況データを取得できます。クエリが完了すると、リクエストされたデータがローカルにキャッシュされるリストに格納されます。次に、EOS_Achievements_CopyPlayerAchievementByIndex
または EOS_Achievements_CopyPlayerAchievementByAchievementId
を使用してそれらにアクセスし、目的のデータのコピーを取得できます。これが完了したら、EOS_Achievements_PlayerAchievement_Release
を呼び出してメモリからコピーした情報を解放する必要があります。
EOS_Achievements_QueryPlayerAchievements
のパラメータは次のとおりです。
EOS_Achievements_QueryPlayerAchievements : | |
---|---|
パラメータ | 説明 |
Handle |
有効な EOS_HAchievements ハンドル。 |
Options |
情報をクエリするプレイヤーの UserId を含む EOS_Achievements_QueryPlayerAchievementsOptions 構造体。 |
ClientData |
CompletionDelegate で返される任意のデータ。 |
CompletionDelegate |
EOS_Achievements_OnQueryPlayerAchievementsCompleteCallback と一致するシグネチャを使用した操作の完了時に呼び出される関数。 |
EOS_Achievements_QueryPlayerAchievementsOptions | |
パラメータ | 説明 |
ApiVersion |
EOS_ACHIEVEMENTS_QUERYPLAYERACHIEVEMENTS_API_LATEST に設定します。 |
UserId |
取得しているアチーブメント進行状況データを保持しているユーザーのアカウント ID。 |
クエリしたプレイヤーのアチーブメント完了コールバック
コールバック関数 EOS_Achievements_OnQueryPlayerAchievementsCompleteCallback
は、プレイヤーのアチーブメント進行状況のクエリが完了したときに呼び出され、EOS_Achievements_OnQueryPlayerAchievementsCompleteCallbackInfo
構造体を返します。コールバック情報には、ResultCode
と、EOS_Achievements_QueryDefinitionsOptions
で設定されたクライアント データ、およびデータを所有するプレイヤーのユーザー ID が含まれます。
プレイヤーのアチーブメント進行状況をコピーする
プレイヤーのアチーブメント データはローカルにキャッシュされます。EOS_Achievements_GetPlayerAchievementCount
を使用して、キャッシュされている Epic Online Services アチーブメントの数を取得できます。
関数 EOS_Achievements_CopyPlayerAchievementByIndex
と EOS_Achievements_CopyPlayerAchievementByAchievementId
は、EOS_Achievements_PlayerAchievement
のコピーを取得するために使用できます。EOS_Achievements_PlayerAchievement_Release
を使用して、このコピーされたデータに関連付けられているメモリを解放する必要があります。
インデックスでプレイヤーのアチーブメントをコピーする
関数 EOS_Achievements_CopyPlayerAchievementByIndex
は、キャッシュされたアチーブメント リスト内のインデックス値を使用してローカル キャッシュから EOS_Achievements_PlayerAchievement
構造体のコピーを取得し、そのコピーを出力パラメータ OutAchievement
を通じて出力します。この関数が取るパラメータを以下に示します。
EOS_Achievements_CopyPlayerAchievementByIndex : | |
---|---|
パラメータ | 説明 |
Handle |
有効な EOS_HAchievements ハンドル。 |
Options |
キャッシュからコピーするためにリクエストされたインデックスを含む EOS_Achievements_CopyPlayerAchievementByIndexOptions 構造体。 |
OutAchievement |
リクエストされた EOS_Achievements_PlayerAchievement のコピーを含む出力パラメータ。OutAchievement に有効なデータが含まれている場合は、このデータで EOS_Achievements_PlayerAchievement_Release を呼び出してメモリから解放する必要があります。 |
EOS_Achievements_CopyPlayerAchievementByIndexOptions : | |
---|---|
パラメータ | 説明 |
ApiVersion |
EOS_ACHIEVEMENTS_COPYPLAYERACHIEVEMENTBYINDEX_API_LATEST に設定します。 |
UserId |
アチーブメントをコピーしているユーザーのアカウント ID を表す有効な EOS_ProductUserId 。 |
AchievementIndex |
キャッシュから取得するプレイヤーのアチーブメント データのインデックス。 |
この関数は、情報が利用可能で OutAchievement
に渡された場合、EOS_Success
の値を持つ EOS_EResult
を返します。出力パラメータを介して null ポインタを渡すと、EOS_InvalidParameters
が返されます。リクエストされたプレイヤーのアチーブメントが見つからない場合は、EOS_NotFound
を返します。
ID でプレイヤーのアチーブメントをコピーする
EOS_Achievements_CopyPlayerAchievementByAchievementId
関数は、アチーブメントのキャッシュで指定された AchievementId
と一致するアチーブメントを検索し、そのデータのコピーを出力パラメータ OutAchievement
を介して出力します。この関数が取るパラメータを以下に示します。
EOS_Achievements_CopyPlayerAchievementByAchievementId : | |
---|---|
パラメータ | 説明 |
Handle |
有効な EOS_HAchievements ハンドル。 |
Options |
キャッシュを検索するアチーブメント ID を含む EOS_Achievements_CopyPlayerAchievementByAchievementIdOptions 構造体。 |
OutAchievement |
リクエストされた EOS_Achievements_PlayerAchievement のコピーを含む出力パラメータ。OutAchievement に有効なデータが含まれている場合は、このデータで EOS_Achievements_PlayerAchievement_Release を呼び出してメモリから解放する必要があります。 |
EOS_Achievements_CopyPlayerAchievementByAchievementIdOptions : | |
---|---|
パラメータ | 説明 |
ApiVersion |
EOS_ACHIEVEMENTS_COPYPLAYERACHIEVEMENTBYACHIEVEMENTID_API_LATEST に設定します。 |
UserId |
アチーブメントをコピーしているユーザーのアカウント ID を表す有効な EOS_ProductUserId 。 |
AchievementId |
キャッシュからアチーブメントをコピーするときに検索するアチーブメント ID。 |
この関数は、情報が利用可能で OutAchievement
に渡された場合、EOS_Success
の値を持つ EOS_EResult
を返します。出力パラメータを介して null ポインタを渡すと、EOS_InvalidParameters
が返されます。リクエストされたプレイヤーのアチーブメントが見つからない場合は、EOS_NotFound
を返します。
コピーしたプレイヤーのアチーブメントからメモリを解放する
EOS_Achievements_CopyPlayerAchievementByIndex
または EOS_Achievements_CopyPlayerAchievementByAchievementId
の OutAchievement
でコピーされた情報は、EOS_Achievements_PlayerAchievement_Release
関数を使用してメモリから解放する必要があります。この関数は、Achievement
と呼ばれる単一の EOS_Achievements_PlayerAchievement
へのポインタを受け取ります。
Epic Online Services アチーブメントのロックを解除する
Epic Online Services アチーブメントは、 Epic Online Services アチーブメントにリンクされた スタッツ が取り込まれたときに自動的にロック解除されるようにするか、EOS_Achievements_UnlockAchievements
関数を呼び出して手動でロック解除することができます。
スタッツを介して Epic Online Services アチーブメントのロックを解除する
Epic Online Services アチーブメントは、スタッツしきい値のセットで定義されます。これは、スタッツの名前と Epic Online Services アチーブメントをロック解除するためのスタッツ量で構成されています。必要なしきい値がすべて満たされると、アチーブメントのロックが解除され、Progress (進行状況) が「1.0」に設定されます。
スタッツの取り込み 操作でスタッツを更新する方法の詳細については、「Stats Interface」のページを参照してください。
Epic Online Services アチーブメントを手動でロック解除する
EOS_Achievements_UnlockAchievements
関数で、ユーザーの 1 つ以上の Epic Online Services アチーブメントのロックを解除できます。この関数のパラメータは次のとおりです。
EOS_Achievements_UnlockAchievements : | |
---|---|
パラメータ | 説明 |
Handle |
有効な EOS_HAchievements ハンドル。 |
Options |
Epic Online Services アチーブメントのロックを解除するプレイヤーに関する情報と、ロックを解除する Epic Online Services アチーブメントの情報を含む EOS_Achievements_UnlockAchievementsOptions 構造体。 |
ClientData |
CompletionDelegate で返される任意のデータ。 |
CompletionDelegate |
EOS_Achievements_OnUnlockAchievementsCompleteCallback と一致するシグネチャを使用した操作の完了時に呼び出される関数。 |
EOS_Achievements_UnlockAchievementsOptions : | |
---|---|
パラメータ | 説明 |
ApiVersion |
EOS_ACHIEVEMENTS_UNLOCKACHIEVEMENTS_API_LATEST に設定します。 |
UserId |
ロックを解除するアチーブメントを持つユーザーのアカウント ID を表す EOS_ProductUserId 。 |
AchievementIds |
ロックを解除するアチーブメント ID のリスト。 |
AchievementsCount |
ロックを解除したいアチーブメントの数。 |
EOS_Achievements_UnlockAchievements
操作が完了すると、コールバック関数 EOS_Achievements_OnUnlockAchievementsCompleteCallback
が実行されます。このコールバック関数は、その操作からデータを受け取る必要があります。この関数のパラメータは以下の通りです。
EOS_Achievements_OnUnlockAchievementsCompleteCallback : | |
---|---|
パラメータ | 説明 |
ResultCode |
操作のステータスを示す EOS_EResult 。結果が EOS_Success の場合、操作が正常に完了したことを意味します。その他の結果はエラーを示します。 |
ClientData |
EOS_Achievements_UnlockAchievements に渡されたコンテキスト。 |
UserId |
このリクエストを開始したユーザーのアカウント ID を表す EOS_ProductUserId 。 |
AchievementsCount |
ロックを解除するアチーブメントの数。 |
SDK は、アチーブメント ステートをローカルまたはオフラインで保存しないことに注意してください。サービス停止中にスタッツ サービスにバッキングされていない Epic Online Services アチーブメントをアンロックする問題を減らすためにには、以下を検討してください。
-
ログイン時に常にユーザーのアチーブメント ステータスをダウンロードします。
-
アンロック状態をバッキングスタッツ / データと比較し、条件が満たされた場合はアチーブメントをアンロックします。
このプロセスは、アップデートで導入された新しい Epic Online Services アチーブメントを完了した可能性のあるユーザーも対象としています。
EOS_Achievements_UnlockAchievements
は、適切な再試行率を尊重し、完了ステータスが返されるのを待ってから試行する限り、起動ごとに複数回呼び出すこともできます。
Epic Online Services アチーブメントを通知する
Epic Online Services アチーブメントのロックが解除されたときに 通知 を受け取ることができます。アチーブメントの通知は、スタッツの取り込みまたは手動でのアチーブメントのロック解除のいずれかからトリガーできます。
関数 EOS_Achievements_AddNotifyAchievementsUnlockedV2
は、 Epic Online Services アチーブメントが正常にロック解除されたときに通知をサブスクライブできます。これは、構造体 EOS_Achievements_AddNotifyAchievementsUnlockedV2Options
を使用して Options パラメータを受け取り、シグネチャが EOS_Achievements_OnAchievementsUnlockedCallbackV2
と一致する関数への参照を受け取ります。このコールバック関数は、アチーブメントがロック解除されるたびに呼び出されます。ClientData
は、発生時に任意のコンテキスト データをそのコールバックに渡すために使用できます。
構造体 EOS_Achievements_AddNotifyAchievementsUnlockedV2Options
には ApiVersion
が含まれており、これは EOS_ACHIEVEMENTS_ADDNOTIFYACHIEVEMENTSUNLOCKEDV2_API_LATEST
に設定する必要があります。
コールバック関数 EOS_Achievements_OnAchievementsUnlockedCallbackV2
は EOS_Achievements_OnAchievementsUnlockedCallbackV2Info
構造体を返します。コールバック情報には、ロックが解除されたアチーブメントの UnlockTime
と AchievementId
が含まれます。また、EOS_Achievements_AddNotifyAchievementsUnlockedV2
を介して渡された ClientData
、および Epic Online Services アチーブメントが属するユーザーの UserId
も含まれます。
RemoveNotifyAchievementsUnlocked
は通知のサブスクライブ解除に使用できます。
使用上の制限事項
Achievements (アチーブメント) インターフェース は、プレイヤーの Epic Online Services アチーブメント関するデータを取得したり、そのプレイヤーの Epic Online Services アチーブメントをロック解除したり、アプリケーションに属するすべての Epic Online Services アチーブメントに関するデータを取得したりする方法をデベロッパーに提供します。スロットリング、使用クォータ、ベストプラクティスの一般情報については、「サービス使用上の制限事項」を参照してください。
以下の制限事項は Epic Online Services アチーブメントのデプロイメントの使用全体に適用されます。
機能 | 制限事項 |
---|---|
アチーブメントの総数 | 1000 |
アチーブメントあたりの統計情報 | 3 |
アチーブメント ID の長さ | 256 文字 |
Localized text variations per achievement | 22. オーバーレイは 16 言語をサポートしています。 |
ローカライズ テキストの長さ | 256 文字 |
アチーブメント アイコンのファイル サイズ | 1.02 MB |
アチーブメント アイコンの解像度 | 1024x1024 ピクセル |
アチーブメント アイコンのファイル タイプ | PNG、JPG、BMP、GIF (アニメートなし) |
Epic Online Services アチーブメントを定義するときは、EOS_Achievements_DefinitionV2
の AchievementId
パラメーターで次の記号を使用しないでください。
, { ^ } % ` ] > [ ~ < # | & $ @ = ; : + ? ! \ ( ) * /
これらのシンボルは、定義をインポートまたはエクスポートするときに問題を引き起こす可能性があります。
ユーザーごと、または「デプロイメントごと」に適用される使用レート制限もあります。ユーザーごとの制限は、ゲームをプレイし既存のアチーブメントを操作する個々のユーザーに適用されます。デプロイメントごとの制限は、プレイヤーが見てアンロックすることができるアチーブメントを設定するコールに適用されます。
機能 | ユーザーごとの制限 | デプロイメントごとの制限 |
---|---|---|
すべてのアチーブメント定義を取得 | 10 リクエスト / 分 | - |
1 つのアチーブメント定義を取得 | 100 リクエスト / 分 | - |
プレイヤーのアチーブメントを取得 | 100 リクエスト / 分 | - |
アチーブメントをアンロック | 100 リクエスト / 分 | - |
アチーブメントを作成 | - | 100 リクエスト / 分 |
アチーブメントを削除 | - | 100 リクエスト / 分 |
Epic Online Services アチーブメントをテストする
テストサンドボックスの 1 つへ展開して、Epic Online Services アチーブメントをテストすることができます。これは、ライブ環境にデプロイする前に行う必要があります。これにより、アチーブメント定義のエラーをチェックし、プレイヤーが Epic Online Services アチーブメントのロックを正常に解除できることを確認できます。 製品 のテスト サンドボックス の作成に関する情報は、「製品、サンドボックス、およびデプロイメント ID」を参照してください。