アカウントの仕組み
概要
アカウントを使用してプレイヤーにスムーズなプレイ体験を提供できるよう、AGS アカウントの使用に関する重要な情報について説明します。
- AGS アカウントを取得する方法
- アイデンティティプロバイダーアカウントをリンクする方法
- 一般的なユースケース&ベストプラクティス
前提条件
- [AGS アカウント構造] (index.mdx) &[キーコンセプト] (index.mdx#key-concepts) についてよく知っている。
AGS アカウントを取得する方法
アカウントの取得が最初のステップです。
アカウントは、ユーザープロファイル、ゲームの進行状況、ウォレット、エンタイトルメントといったその他の AccelByte Gaming Services すべての中心です。アカウントはまた、複数のアイデンティティプロバイダーアカウントとのアカウントリンクをサポートすることで、クロスプラットフォームのユーザーエクスペリエンスを可能にします。
各 AGS アカウントは、2 種類のステータスを持つことができます。
- [ヘッドレス] (index.mdx#headless-account)
- [フル](index.mdx#full-account)
ヘッドレス AGS アカウントを取得する
ヘッドレスアカウントは、ゲーム内で最も一般的なアカウントです。
プレイヤーがカスタムデバイス ID またはサポートされているアイデンティティプロバイダーアカウント(例:PlayStation、Steam、XBox) を使用して初めてゲームにサインインした際に、自動的に作成されます。ヘッドレス AGS アカウントが作成されると、対応するデバイス ID またはアイデンティティプロバイダーアカウントが自動的にそれにリンクされます。
ゲーム内でアイデンティティプロバイダーアカウントのサインインを有効にするにはまず、必要なアイデンティティプロバイダー設定を作成する必要があります。詳細については、認証 セクションをご覧ください。
プロセスの簡単な概要は次のとおりです。
ここで一般的な例を見てみましょう。
ゲームスタジオとして、Steam で 2 つの本稼働ゲーム (game_1とgame_2) をローンチし、両方で同じ AGS 環境を使用しています。
プレイヤーとして、Steam アカウント (例:my_steam_account) を使用して、Steam のゲームのいずれか (例:game_1) にサインインするのは初めてです。
この場合、次のことが起こります。 プレイヤーがこの Steam アカウント (my_steam_account) を使用してゲームのいずれかにサインインするのは初めてなので、既存の AGS アカウントにリンクされていないということになります。新しいヘッドレス AGS アカウント (my_ags_account) が自動的に作成されます。 これには次のものが含まれます。
* パブリッシャーの名前空間のパブリッシャーユーザー ID (**publisher_user_id_1**)
* このゲームの名前空間(**game_1**)におけるゲームユーザー ID (**game_user_id_1**)。これはパブリッシャーユーザー ID (**publisher_user_id_1**)に関連付けられています。
* それに加えて、この Steam アカウント (**my_steam_account**) は自動的にこの AGS アカウント (**my_ags_account**) にリンクされます。
しばらくして、プレイヤーは同じ Steam アカウント (my_steam_account) を使用して、Steam 上の他の本稼働ゲーム (game_2) に初めてサインインします。
この場合、次のことが起こります。
- この Steam アカウント (my_steam_account) は AGS アカウント (my_ags_account) にリンクされています。そのため、今回は新しい AGS アカウントは作成されず、代わりにプレイヤーはこの本稼働ゲーム (game_2) に直接ログインします。
- その間に、ゲームの名前空間 (game_2) に新しいゲームユーザー ID (game_user_id_2) が作成されます。
- その後、プレイヤーの現在のヘッドレス AGS アカウント (my_ags_account) には次のものが含まれます。
- パブリッシャーの名前空間のパブリッシャーユーザー ID (publisher_user_id_1)
- 特定のゲームの名前空間 (game_1) におけるゲームユーザー ID (game_user_id_1)。これは、パブリッシャーユーザー ID (publisher_user_id_1) に関連付けられています。
- 特定のゲームの名前空間(game_2) におけるゲームユーザー ID (game_user_id_2)。これは、同じパブリッシャーユーザー ID (publisher_user_id_1) に関連付けられています。
- リンクされた Steam アカウント (my_steam_account)。
アイデンティティを確認してヘッドレスアカウントにサインインする唯一の方法は、リンクされたアイデンティティプロバイダーアカウント (またはデバイス ID) を認証することです。
プレイヤーがゲームへの投資を開始した場合など、適切なタイミングで有効なメールアドレスを提供してヘッドレスアカウントをフルアカウントにアップグレードするよう促すことを検討します。そうすることで、プレイヤーと直接的な関係を構築し、直接やり取りすることができます。
フル AGS アカウントを取得する
フルアカウントは、検証済みのメールアドレス、パスワード、基本的なユーザー情報を含む完全な AccelByte アカウントです。
プレイヤーは、フルアカウントから次のような多くのメリットを得ることができます。
- フルアカウントには検証済みメールアドレスとパスワードが含まれているので、プレイヤーはサポートされているアイデンティティプロバイダーアカウント (Steam、PlayStation、XBoxなど) とのアカウントリンクにフルアカウントを使用できます。
- プレイヤーはアカウント保護のために二要素認証メカニズムを有効にできます。
- プレイヤーはプロフィールを管理したり、個人データなどへのアクセスを要求したりすることもできます。
フルアカウントを取得するには、従来のフルアカウント登録を有効にする方法と、ヘッドレスアカウントをフルアカウントにアップグレードする方法の 2 つがあります。
[AGS IAM Input Validation (AGS IAM 入力検証)] (02-set-validations-for-full-account.md) を使用して、ユーザー名、表示名、パスワード、およびプレイヤーのフルアカウントで使用されるメールアドレスの検証をカスタマイズできます。
従来のフルアカウント登録を有効にする
プレイヤーポータルまたは SDK を介して、フルアカウント登録フローを有効にできます。
プロセスの簡単な概要は次のとおりです。
プレイヤーポータルからのフルアカウント登録
当社のアプリエディタでは、実行中のプレイヤーポータルに UI と設定の変更を適用でき、再構築または再デプロイが必要ありません。
ゲーム内プレイヤー登録
この関数を使用すると、プレイヤーはゲーム内でアカウントに登録できます。
- Unreal
- Unity
const FString OriginalEmail = TEXT("originalEmail@example.com");
const FString Username = TEXT("JohnDoe");
const FString Password = TEXT("password");
const FString DisplayName = TEXT("testName");
const FString Country = TEXT("US");
const FString DateOfBirth = TEXT("2000-12-20");
bool bUserAccountCreated = false;
FRegistry::User.Registerv2(OriginalEmail, Username, Password, DisplayName, Country, DateOfBirth,
THandler<FUserData>::CreateLambda([&bUserAccountCreated](const FUserData& Result)
{
UE_LOG(LogAccelByteUserTest, Display, TEXT("Success."));
bUserAccountCreated = true;
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
UE_LOG(LogAccelByteUserTest, Error, TEXT("Error. Code: %d, Reason: %s"), ErrorCode, *ErrorMessage)
}));
private static void OnRegister(Result<UserData> result)
{
if (result.IsError)
{
Debug.Log("Register failed:", result.Error.Message);
}
else
{
Debug.Log("Register successful.");
}
}
public static void Main(string[] args)
{
var user = AccelBytePlugin.GetUser();
string email = "useremail@example.com";
string username = "JohnDoe";
string password = "password";
string displayName = "displayed";
string country = "US";
string dateOfBirth = "1995-12-30";
user.Registerv2(email, username, password, displayName, OnRegister, country, dateOfBirth);
}
ヘッドレスアカウントをフルアカウントにアップグレードする
ヘッドレスアカウントがフルアカウントと唯一違うのは、有効なメールアドレス、ユーザー名、パスワード、その他の必要な情報がない点です。プレイヤーポータルまたは SDK を介してヘッドレスアカウントをアップグレードすることで、フルアカウントを取得することもできます。
プロセスの簡単な概要は次のとおりです。
プレイヤーポータルからヘッドレスアカウントをアップグレードする
ヘッドレスアカウントのゲーム内アップグレード
この関数により、プレイヤーはゲーム内でヘッドレスアカウントをアップグレードできます。
- Unreal
- Unity
const FString OriginalEmail = TEXT("originalEmail@example.com");
const FString Password = TEXT("Password1");
FAccountUserData userData;
FRegistry::User.Upgrade(OriginalEmail, Password,
THandler<FAccountUserData>::CreateLambda([&](const FAccountUserData& Result)
{
userData = Result;
UE_LOG(LogAccelByteUserTest, Display, TEXT("Success."));
}),
FErrorHandler::CreateLambda([&](int32 ErrorCode, const FString& ErrorMessage)
{
UE_LOG(LogAccelByteUserTest, Error, TEXT("Error. Code: %d, Reason: %s"), ErrorCode, *ErrorMessage);
}));
//log out
FRegistry::User.ForgetAllCredentials();
var user = AccelBytePlugin.GetUser();
string email = "johnDoe@example.com";
string password = "Password1";
//upgrade v1
Result<UserData> upgradeResult = null;
user.Upgrade(email, password, result =>
{
upgradeResult = result;
});
Result logoutResult = null;
user.Logout(result =>
{
logoutResult = result;
});
アイデンティティプロバイダーアカウントをリンクする方法
アカウントのリンクは、クロスプラットフォームの体験をサポートするために不可欠な機能です。これは、1 つ以上のアイデンティティプロバイダーと AGS アカウントを関連付けることを意味します。リンクされたアイデンティティプロバイダーアカウントを使用すると、プレイヤーは、ゲームプレイデータをそのまま維持しながら、自分のアイデンティティを確認してサインインし、プラットフォームをまたいで体験を継続できます。
アイデンティティプロバイダープラットフォームの規制により、アカウントのリンクには 2 つの主な制限があります。
- 1 つのアイデンティティプロバイダーアカウントを同時にリンクできるのは、1 つの AGS アカウントだけです。
- プレイヤーは、特定のアイデンティティプロバイダープラットフォームから複数のアイデンティティプロバイダーアカウントをリンクすることはできません。つまり、プレイヤーが AccelByte アカウントにリンクできるのは 1 つの Steam アカウントだけです。このルールは、プレイヤーが新しい Steam アカウントをリンクしようとする前に、以前の Steam アカウントのリンクを解除した場合でも適用されます。
プロセスの簡単な概要は次のとおりです。
一般的なユースケース&ベストプラクティス
ここまでの説明を基に、別の一般的なクロスプラットフォームのユースケースを見てみましょう。
ゲームスタジオとして、SteamとXBoxで 1 つの本稼働ゲーム (game_1) をローンチしました。
プレイヤーとして、最初に Steam アカウント (my_steam_account) を使用してSteamプラットフォームでgame_1の使用を開始します。
この場合、次のことが起こります。
- この Steam アカウント (my_steam_account) を使用して game_1 にサインインするのは初めてです。つまり、このアカウントはまだ既存の AGS アカウントにリンクされていません。新しいヘッドレス AGS アカウント (my_ags_account) が自動的に作成されます。
- これには次のものが含まれます。
- パブリッシャーの名前空間のパブリッシャーユーザー ID (publisher_user_id_1)
- このゲームの名前空間(game_1)におけるゲームユーザー ID (game_user_id_1)。これはパブリッシャーユーザー ID (publisher_user_id_1) に関連付けられています。
- それに加えて、使用したこの Steam アカウント (my_steam_account) は自動的にこの AGS アカウント (my_ags_account) にリンクされます。
しばらくして、プレイヤーは XBox コンソールで自分の XBox アカウント (my_xbox_account) を使用してこの game_1 をプレイし、Steam を使用して始めたゲームの進行状況をこの新しい XBox プラットフォームに引き継ぎたいと考えるようになりました。
ベストプラクティス
この場合の推奨ソリューションは次のとおりです。
- アイデンティティプロバイダーアカウント (my_steam_account) を使用して、プレイヤーにスムーズに、任意のプラットフォーム (Steam) でゲームを初めてプレイしてもらいます。これで、ヘッドレスアカウント (my_ags_account) が自動的に作成されます。
- プレイヤーがゲームへの投資を開始したら、ヘッドレスアカウント (my_ags_account) をフルアカウントにアップグレードするよう促します。
- プレイヤーが新しいプラットフォーム (XBox) で初めてそのゲームを開始する前に、既存の AccelByte アカウント (my_ags_account) にゲームプラットフォームアカウント (my_xbox_account) をリンクするオプションをプレイヤーに提供します (プレイヤーがゲームプラットフォームアカウントを持っている場合)。
- このようにして、プレイヤーはゲームプレイのデータをそのまま維持しながら、新しいプラットフォームでゲーム体験を続けることができます。
プレイヤーは次のような状態になります。
もし...
プレイヤーが新しいゲームプラットフォームでゲームを開始する前に、上記のステップ 3 で既存の AccelByte アカウントにゲームプラットフォームアカウントをリンクしなかった場合どうなるか、気になるかもしれません。
プレイヤーとして XBox アカウント (my_xbox_account) を既存の AGS アカウント (my_ags_account) にリンクしませんでした。そして、この game_1 を直接開始することを選択しました。
この場合、次のことが起こります。
- プレイヤーがこの XBox アカウント (my_xbox_account) を使用して XBox コンソールで game_1 にサインインするのは初めてであるため、既存の AGS アカウントには一切リンクされていません。別の新しいヘッドレス AGS アカウント (my_ags_account_2) も自動的に作成されます。
- これには次のものが含まれます。
- パブリッシャーの名前空間のパブリッシャーユーザー ID (publisher_user_id_2)
- このゲームの名前空間 (game_1) におけるゲームユーザー ID (game_user_id_2)。これはパブリッシャーユーザー ID (publisher_user_id_2) に関連付けられています。
- それに加えて、プレイヤーが使用したこの XBox アカウント (my_xbox_account) は自動的にこの AGS アカウント (my_ags_account_2) にリンクされます。
しかし、しばらくして、この game_1 を XBox コンソールでもう一度最初から始めなければならないことに気づきました。これは望んでいることではなく、Steam プラットフォームで進めてきたゲームプレイを継続したいと思っています。
ゲームの進行状況は AGS アカウントに保存されているので、この特定のケースでは、プレイヤーは Steam で以前に作成されたゲームプレイを続行するために、この XBox アカウント (my_xbox_account) を以前の AGS アカウント (my_ags_account) にリンクする必要があります。
アカウントのリンク制限 (1つのアイデンティティプロバイダーアカウントを同時にリンクできるのは、1 つの AGS アカウントだけです) により、プレイヤーは最初に、現在リンクされている AGS アカウント(my_ags_account_2)から XBox アカウント (my_xbox_account) のリンクを解除する必要があります。
この場合、プレイヤーは次のような手順を実行できます。
- 新しい AGS アカウント (my_ags_account_2) でプレイヤーポータルにサインインします。そして、まずこの AGS アカウントから XBox アカウント (my_xbox_account) のリンクを解除します。
- プレイヤーポータルからログアウトし、以前の AGS アカウント (my_ags_account) で再度サインインし、XBox アカウント (my_xbox_account) をリンクします。
- 以上です。次回 Steam または Xbox のいずれかでゲームを起動した際に、この AGS アカウント (my_ags_account) で同じゲームの進行状況を共有して続行できるようになります。
その後、プレイヤーは次のような状態になります。
孤立した AGS アカウント (my_ags_account_2) では、すべてが通常のアカウントとして保持され、何も消去されることはありません。唯一注意する必要があるのは、そのプレイヤーが認証されてその AGS アカウントにサインインする方法がなくなることです。ただし、XBox アカウントとのリンクを解除する前に、別のサードパーティのプラットフォームアカウントとリンクされているか、フル AGS アカウントにプロモートされている場合を除きます。