メインコンテンツまでスキップ

接続エラー時のメインメニューでのAGSオンライン機能の処理

Last updated on February 4, 2026

注釈:本資料はAI技術を用いて翻訳されています。

プレイヤーがゲームのメインメニューからAGSオンライン機能にアクセスできない場合、明確で情報豊富なエラーメッセージを表示することが重要です。これにより、プレイヤーは接続問題によりオンライン機能が現在利用できないことを理解でき、なぜ機能しないのかについて混乱することがありません。

例えば、プレイヤーがストア、ユーザーエンタイトルメント、ユーザーウォレットなどの機能にアクセスしようとしてネットワーク障害に遭遇した場合、ゲームは「接続できません。インターネット接続を確認して再試行してください。」のような意味のあるメッセージで通知する必要があります。

以下は、メインメニューで影響を受ける可能性があるAGSオンライン機能の例です。それに加えて、接続問題を検出し、ゲーム内で適切に処理するためのサンプルコードスニペットも提供します。

ストア表示情報の取得

...
auto ABSubsystem = IOnlineSubsystem::Get(ACCELBYTE_SUBSYSTEM);
auto StoreInterface = ABSubsystem->GetStoreV2Interface();
FOnlineStoreV2AccelBytePtr ABStoreInterface = StaticCastSharedPtr<FOnlineStoreV2AccelByte>(StoreInterface);

FString StoreId;
FString ViewId;
FString Region;
constexpr EAccelBytePlatformMapping PlatformMapping = EAccelBytePlatformMapping::NONE;
ABStoreInterface->QueryStorefront("<UserId>", StoreId, ViewId, Region, PlatformMapping,
FOnQueryStorefrontComplete::CreateWeakLambda(this, [](bool bWasSuccessful, const TArray<FString>& ViewIds, const TArray<FString>& SectionIds, const TArray<FUniqueOfferId>& OfferIds, const TArray<FString>& ItemMappingIds, const FString& Error)
{
if (bWasSuccessful)
{
// Do something when the query store display is successful.
}
else
{
// Implement a solution to handle failed request.
}
}
));
...

現在、ゲーム内ストアの取得が失敗した場合、AGS OSSは失敗がHTTPタイムアウトによるものか他の問題によるものかの詳細を提供しません。

プレイヤーのエンタイトルメントのクエリ

...
auto ABSubsystem = IOnlineSubsystem::Get(ACCELBYTE_SUBSYSTEM);
auto EntitlementsInterface = ABSubsystem->GetEntitlementsInterface();
FOnlineEntitlementsAccelBytePtr ABEntitlementsInterface = StaticCastSharedPtr<FOnlineEntitlementsAccelByte>(EntitlementsInterface);

ABEntitlementsInterface->OnQueryEntitlementsCompleteDelegates.AddWeakLambda(this, [this](bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Namespace, const FString& ErrorMessage)
{
if (bWasSuccessful)
{
// Do something when the query user entitlements is successful.
}
else
{
// Implement a solution to handle failed request.
}
});
EntitlementsInterface->QueryEntitlements(UserId, TEXT(""), FPagedQuery());
...

現在、ユーザーエンタイトルメントの取得が失敗した場合、AGS OSSは失敗がHTTPタイムアウトによるものか他の問題によるものかの詳細を提供しません。

プレイヤーのウォレットデータの取得

...
auto ABSubsystem = IOnlineSubsystem::Get(ACCELBYTE_SUBSYSTEM);
auto WalletInterface = ABSubsystem->GetWalletInterface();

WalletInterface->OnGetWalletInfoCompletedDelegates..AddWeakLambda(this, [this](int32 LocalUserNum, bool bWasSuccessful, const FAccelByteModelsWalletInfo& Response, const FString& Error)
{
if (bWasSuccessful)
{
// Do something when the retrieving wallet data is successful.
}
else
{
// Implement a solution to handle failed request.
}
});
WalletInterface->GetWalletInfoByCurrencyCode(0, TEXT("<SampleCurrencyCode>"), true;
...

現在、ユーザーエンタイトルメントの取得が失敗した場合、AGS OSSは失敗がHTTPタイムアウトによるものか他の問題によるものかの詳細を提供しません。