Steam と Unity を使用して PlayFab 認証を設定する

このチュートリアルでは、SteamWorks を通じた Steam と Unity を使用して PlayFab にログインする手順を説明します。

前提条件

開始前に以下を準備してください。

PlayFab タイトルを設定する

Steam 認証のサポートを有効にするには、PlayFab で Steam の追加コンテンツを有効化する必要があります。

[ゲーム マネージャー] ページに移動します:

  1. [追加コンテンツ] のメニュー項目を選択します。
  2. 利用可能な[追加コンテンツ] の一覧で [Steam] を見つけ、タイトル リンクを選択します。

ゲーム マネージャーの [追加コンテンツ] タブ

  1. App ID を入力します。
  2. Web API キーを入力します。
  3. [Install Steam (Steam のインストール)] を選択します。

ゲーム マネージャーによる Steam 追加コンテンツのインストール

これにより、Steam の統合に向けた PlayFab タイトルの設定が完了します。

Unity プロジェクトを設定する

まず、リリース ページから Steamworks.NET の最新バージョンをダウンロードします。

  • リリースの Unity Package バージョンを取得し、プロジェクトにインポートします。
  • パッケージをインポートしたら、Unity を閉じます。
  • プロジェクトのルート フォルダーに移動します。
  • steam_appid.txt」ファイルを見つけます。
  • ファイルを開き、APP ID の値を自分の値で置き換えます。

Unity プロジェクト - APP ID の更新

再度 Unity を開き、新しいシーンを作成します。

そのシーン内に「Steam」という名前の新しい gameobject を作成します。

  1. SteamManager コンポーネントを gameobject に追加します。 このコンポーネントは Steamworks.Net の一部です。
  2. SteamScript コンポーネントを作成し、gameobject に追加します。

Unity プロジェクト - Steam オブジェクトの追加

以下の例は、SteamScript コンポーネントのコードを示しています。

(この例では、Dylan Hunt に感謝を示します。)

// Import all the necessary namespaces
using System;
using System.Text;
using PlayFab;
using PlayFab.ClientModels;
using Steamworks;
using UnityEngine;

public class SteamScript : MonoBehaviour {
    //This method returns
    public string GetSteamAuthTicket() {
        byte[] ticketBlob = new byte[1024];
        uint ticketSize;

        // Retrieve ticket; hTicket should be a field in the class so you can use it to cancel the ticket later
        // When you pass an object, the object can be modified by the callee. This function modifies the byte array you've passed to it.
        HAuthTicket hTicket = SteamUser.GetAuthSessionTicket(ticketBlob, ticketBlob.Length, out ticketSize);

        // Resize the buffer to actual length
        Array.Resize(ref ticketBlob, (int)ticketSize);

        // Convert bytes to string
        StringBuilder sb = new StringBuilder();
        foreach (byte b in ticketBlob) {
            sb.AppendFormat("{0:x2}", b);
        }
        return sb.ToString();
    }

    public void OnGUI() {
        if (GUILayout.Button("Log In")) {
            if (SteamManager.Initialized) {
                // Execute PlayFab API call to log in with steam ticket
                PlayFabClientAPI.LoginWithSteam(new LoginWithSteamRequest {
                    CreateAccount = true,
                    SteamTicket = GetSteamAuthTicket()
                }, OnComplete,OnFailed);
            }
        }
    }

    // Utility callbacks to log the result
    private void OnComplete(LoginResult obj) {
        Debug.Log("Success!");
    }

    private void OnFailed(PlayFabError error) {
        Debug.Log("Failed: " + error.GenerateErrorReport());
    }
}

テスト

エディター内で直接テストを実行できます。

  1. シーンを実行し、[ログイン] を選択します。
  2. しばらくすると、Success! (成功!) の認証結果を示すコンソール メッセージが表示されます。

Steam での Unity テスト PlayFab ログイン