GS2 Blog

Game Server Services(https://gs2.io/) の最新情報をお届けします

GS2-Account に他プラットフォームにおけるIDを保持し検索する機能が追加されました

はじめに

GS2-Account はゲームにログインするためのアカウントを管理します。
GS2-Account が発行するアカウントは匿名アカウントと呼ばれるタイプのアカウントで、このアカウントに引き継ぎ情報として他プラットフォームのIDを保持してデータを引き継ぎできるようにする仕組みがあります。

機能追加された背景

Facebook や X の友達をゲーム内にインポートして利用したい時に 各種プラットフォームのIDを使って GS2-Account の匿名アカウントを特定したいことがあります。
また、この処理はデータ引き継ぎとは異なり、他人が実行できる必要があります。

追加された機能の詳細

GS2-Account の匿名アカウントのプロパティとして、他プラットフォームのIDを保持できるようになりました。
プラットフォームIDは整数型のタイプ属性を持っており、この属性を利用することで、複数のプラットフォームのIDを保持することができます。

具体的には以下のように各タイプとプラットフォームを関連づけて管理します。

タイプ プラットフォーム
0 X
1 Facebook
2 Instagram

あとは各プレイヤーがログインしている時に、自身の各プラットフォームのプラットフォームIDを設定します。

    var domain = gs2.Account.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).PlatformId(
        type: 0,
        userIdentifier: "123456"
    );
    await domain.AddPlatformIdSettingAsync(
    );

他のプレイヤーは type と userIdentifier を組み合わせて検索することができます。

    var domain = gs2.Account.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).PlatformId(
        type: 0,
        userIdentifier: "123456"
    );
    var item = await domain.FindPlatformUserAsync(
    );
    item.UserId; // 匿名アカウントのユーザーID、またはデータオーナーID

FindPlatformUserAsync の結果は、ネームスペースの設定で「differentUserIdForLoginAndDataRetention(ログインに使用するユーザーIDとデータの保持に使用するユーザーIDを異なるものにする)」を有効にしているか無効にしているかで応答値の内容が変化します。

differentUserIdForLoginAndDataRetention が有効になっている場合は「データオーナーID」が応答され、無効になっている場合は「匿名アカウントのユーザーID」が応答されます。
いずれにしても、ここで応答されたIDを使ってフレンドリクエストやフォローリクエストを出して利用することが可能な値が応答されます。

(C) Game Server Services, Inc.