実績を表示する
Last updated on February 4, 2026
注釈:本資料はAI技術を用いて翻訳されています。
概要
AccelByte Gaming Services (AGS) の実績サービスを使用すると、利用可能な実績とユーザー実績をさまざまな方法で表示できます。ゲーム内で実績を表示することで、プレイヤー体験にさらなる動機付けと達成感が加わり、すべてをロック解除するために関与し続け、進歩を続けることを奨励します。
この記事では、利用可能なすべての実績設定と特定のプレイヤーの実績を表示する方法について説明します。
目標
- 設定された設定に基づいて利用可能な実績を表示するために AccelByte SDK を利用する方法を説明する。
- ユーザー実績を表示するために AccelByte SDK を利用する方法を説明する。
前提条件
- AGS 管理ポータルへのアクセス。
- AccelByte Unreal、Unity、または Extend SDK(以下の権限を含む):
- Client ID
- Client Secret
- AccelByte Achievement API ドキュメントへのアクセス。
- 必要な情報を設定するための AccelByte Statistics API へのアクセス。
- 関連する名前空間に実績設定が存在する必要があります。
利用可能な実績を表示する
AGS を使用すると、ゲーム UI に応じて、単一の実績のみを表示することも、複数の実績を同時に表示することもできます。
単一の実績を表示する
単一の実績を表示するには、achievementCode を知っている必要があります。その achievementCode とこの関数を使用して、実績の名前、説明、goalValue、アイコンなどの実績情報を取得できます。
- Unreal
- Unity
- C# Extend SDK
- Go Extend SDK
- Java Extend SDK
- Python Extend SDK
FString AchievementCode = FString("MyAchievementCode");
auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto AchievementApi = ApiClient->GetAchievementApi().Pin();
AchievementApi->.GetAchievement(AchievementCode, THandler<FAccelByteModelsMultiLanguageAchievement>::CreateLambda([](const FAccelByteModelsMultiLanguageAchievement& Result)
{
// Do something if GetAchievement is successful
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if GetAchievement has an error
}));
var achievement = AccelByteSDK.GetClientRegistry().GetApi().GetAchievement();
string achievementCode = "MyAchievementCode";
achievement.GetAchievement(achievementCode, result =>
{
if (result.IsError)
{
// Do something if GetAchievement has an error
Debug.Log($"Error GetAchievement, Error Code: {result.Error.Code} Error Message: {result.Error.Message}");
return;
}
// Do something if GetAchievement is successful
});
string achievementCode = "<achievement-code>";
string language = "en";
var response = sdk.Achievement.Achievements.PublicGetAchievementOp
.Execute(achievementCode, sdk.Namespace, language);
if (response != null)
{
//do something when success
}
achievementsService := &achievement.AchievementsService{
Client: factory.NewAchievementClient(&repository.ConfigRepositoryImpl{}),
TokenRepository: &repository.TokenRepositoryImpl{},
}
achievementCode := "achievementCode"
namespace := "mygame"
language := "en"
input := &achievements.PublicGetAchievementParams{
AchievementCode: achievementCode,
Namespace: namespace,
Language: language,
}
result, err := achievementsService.PublicGetAchievementShort(input)
final Achievements achievementsWrapper = new Achievements(sdk);
String achievementCode = "<achievement-code>";
String language = "en";
ModelsPublicAchievementResponse response;
try {
response = achievementsWrapper.publicGetAchievement(PublicGetAchievement.builder()
.namespace("<namespace>")
.achievementCode(achievementCode)
.language(language)
.build());
} catch (Exception e) {
// Do something when failed
return;
}
if (response == null) {
// Null response from server
} else {
// Do something when success
}
import accelbyte_py_sdk.api.achievement as achievement_service
import accelbyte_py_sdk.api.achievement.models as achievement_models
result, error = achievement_service.public_get_achievement(
achievement_code="MyAchievementCode",
language="en",
namespace=namespace, # optional, gets the value from the global instance if unspecified
sdk=sdk, # optional, gets the global instance if unspecified
)
if error:
exit(error)
利用可能なすべての実績を表示する
単一の実績を表示するのとは対照的に、関連する名前空間内で利用可能なすべての実績を表示する場合、情報を提供する必要はありません。この関数を使用して、関連する名前空間内のすべての実績のリストと、実績の名前、説明、goalValue、アイコンなどの情報を取得できます。
- Unreal
- Unity
- C# Extend SDK
- Go Extend SDK
- Java Extend SDK
- Python Extend SDK
FString Language = FString("en");
EAccelByteAchievementListSortBy SortBy = EAccelByteAchievementListSortBy::LISTORDER;
int32 Offset = 0;
int32 Limit = 50;
auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto AchievementApi = ApiClient->GetAchievementApi().Pin();
AchievementApi->QueryAchievements(Language, SortBy, THandler<FAccelByteModelsPaginatedPublicAchievement>::CreateLambda([](const FAccelByteModelsPaginatedPublicAchievement& Result)
{
// Do something if QueryAchievements is successful
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if QueryAchievements has an error
}), Offset, Limit);
var achievement = AccelByteSDK.GetClientRegistry().GetApi().GetAchievement();
string language = "en";
AchievementSortBy sortBy = AchievementSortBy.LISTORDER;
int offset = 0;
int limit = 50;
achievement.QueryAchievements(language, sortBy, result =>
{
if (result.IsError)
{
// Do something if QueryAchievements has an error
Debug.Log($"Error QueryAchievements, Error Code: {result.Error.Code} Error Message: {result.Error.Message}");
return;
}
// Do something if QueryAchievements is successful
}, offset, limit);
var response = sdk.Achievement.Achievements.PublicListAchievementsOp
.SetOffset(0)
.SetLimit(50)
.SetSortBy(PublicListAchievementsSortBy.ListOrder)
.Execute(sdk.Namespace, language);
if (response != null)
{
//do something when success
}
achievementsService := &achievement.AchievementsService{
Client: factory.NewAchievementClient(&repository.ConfigRepositoryImpl{}),
TokenRepository: &repository.TokenRepositoryImpl{},
}
namespace := "mygame"
language := "en"
limit := int64(50)
offset := int64(0)
sortBy := achievements.AdminListAchievementsListOrderConstant
input := &achievements.PublicListAchievementsParams{
Namespace: namespace,
Limit: &limit,
Offset: &offset,
SortBy: &sortBy,
Language: language,
}
result, err := achievementsService.PublicListAchievementsShort(input)
final UserAchievements userAchievementsWrapper = new UserAchievements(sdk);
String userId = "<user-id>";
ModelsPaginatedUserAchievementResponse response;
try {
response = userAchievementsWrapper.publicListUserAchievements(PublicListUserAchievements.builder()
.namespace("<namespace>")
.userId(userId)
.offset(0)
.limit(50)
.sortBy("listOrder")
.build());
} catch (Exception e) {
// Do something when failed
return;
}
if (response == null) {
// Null response from server
} else {
// Do something when success
}
import accelbyte_py_sdk.api.achievement as achievement_service
import accelbyte_py_sdk.api.achievement.models as achievement_models
result, error = achievement_service.public_list_achievements(
limit=50,
offset=0,
sort_by="listOrder",
language="en",
namespace=namespace, # optional, gets the value from the global instance if unspecified
sdk=sdk, # optional, gets the global instance if unspecified
)
if error:
exit(error)
ユーザー実績を表示する
プレイヤーの進行状況とロック解除された実績を表示することで、プレイヤーはゲーム内での進行状況と成果を確認し、評価することができます。この関数を使用して、プレイヤーのロック解除済みおよび進行中の実績をクエリできます。この関数は、AccelByte IAM に既にログインしている特定のプレイヤーから呼び出されます。
- Unreal
- Unity
- C# Extend SDK
- Go Extend SDK
- Java Extend SDK
- Python Extend SDK
EAccelByteAchievementListSortBy SortBy = EAccelByteAchievementListSortBy::LISTORDER;
int32 Offset = 0;
int32 Limit = 50;
auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
auto AchievementApi = ApiClient->GetAchievementApi().Pin();
AchievementApi->QueryUserAchievements(SortBy, THandler<FAccelByteModelsPaginatedUserAchievement>::CreateLambda([](const FAccelByteModelsPaginatedUserAchievement& Result)
{
// Do something if QueryUserAchievements is successful
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if QueryUserAchievements has an error
}), Offset, Limit);
var achievement = AccelByteSDK.GetClientRegistry().GetApi().GetAchievement();
AchievementSortBy sortBy = AchievementSortBy.LISTORDER;
int offset = 0;
int limit = 50;
achievement.QueryUserAchievements(sortBy, result =>
{
if (result.IsError)
{
// Do something if QueryUserAchievements has an error
Debug.Log($"Error QueryUserAchievements, Error Code: {result.Error.Code} Error Message: {result.Error.Message}");
return;
}
// Do something if QueryUserAchievements is successful
}, offset, limit);
string userId = "<user-id>";
var response = sdk.Achievement.UserAchievements.PublicListUserAchievementsOp
.SetOffset(0)
.SetLimit(50)
.SetSortBy("listOrder")
.Execute(sdk.Namespace, userId);
if (response != null)
{
//do something when success
}
userAchievementsService := &achievement.UserAchievementsService{
Client: factory.NewAchievementClient(&repository.ConfigRepositoryImpl{}),
TokenRepository: &repository.TokenRepositoryImpl{},
}
namespace := "mygame"
userId := "myuserid"
limit := int64(50)
offset := int64(0)
sortBy := "listOrder"
input := &user_achievements.PublicListUserAchievementsParams{
Namespace: namespace,
UserID: userId,
Limit: &limit,
Offset: &offset,
SortBy: &sortBy,
}
result, err := userAchievementsService.PublicListUserAchievementsShort(input)
final UserAchievements userAchievementsWrapper = new UserAchievements(sdk);
String userId = "<user-id>";
ModelsPaginatedUserAchievementResponse response;
try {
response = userAchievementsWrapper.publicListUserAchievements(PublicListUserAchievements.builder()
.namespace("<namespace>")
.userId(userId)
.limit(50)
.offset(0)
.sortBy("listOrder")
.build());
} catch (Exception e) {
// Do something when failed
return;
}
if (response == null) {
// Null response from server
} else {
// Do something when success
}
import accelbyte_py_sdk.api.achievement as achievement_service
import accelbyte_py_sdk.api.achievement.models as achievement_models
result, error = achievement_service.public_list_user_achievements(
user_id="********************************",
limit=50,
offset=0,
sort_by="listOrder",
namespace=namespace, # optional, gets the value from the global instance if unspecified
sdk=sdk, # optional, gets the global instance if unspecified
)
if error:
exit(error)