Steam と Unity を使用して PlayFab 認証を設定する
このチュートリアルでは、SteamWorks を通じた Steam と Unity を使用して PlayFab にログインする手順を説明します。
前提条件
開始前に以下を準備してください。
- PlayFab SDK がインポートされ、タイトル ID が設定された Unity プロジェクト。
- 以下の Steam アプリケーション
- AppID を設定済み。 通常、AppID は Steam Direct (旧 Greenlight) プロセスによって取得できます。
- Steam パブリッシャー Web API キー。 パブリッシャー キーを生成するには、 Steamworks ドキュメントのパブリッシャー Web API キーを作成するに従ってください。
- ログインの基本とベスト プラクティスを理解していること。
PlayFab タイトルを設定する
Steam 認証のサポートを有効にするには、PlayFab で Steam の追加コンテンツを有効化する必要があります。
[ゲーム マネージャー] ページに移動します:
- [追加コンテンツ] のメニュー項目を選択します。
- 利用可能な[追加コンテンツ] の一覧で [Steam] を見つけ、タイトル リンクを選択します。
- App ID を入力します。
- Web API キーを入力します。
- [Install Steam (Steam のインストール)] を選択します。
これにより、Steam の統合に向けた PlayFab タイトルの設定が完了します。
Unity プロジェクトを設定する
まず、リリース ページから Steamworks.NET の最新バージョンをダウンロードします。
- リリースの Unity Package バージョンを取得し、プロジェクトにインポートします。
- パッケージをインポートしたら、Unity を閉じます。
- プロジェクトのルート フォルダーに移動します。
- 「steam_appid.txt」ファイルを見つけます。
- ファイルを開き、APP ID の値を自分の値で置き換えます。
再度 Unity を開き、新しいシーンを作成します。
そのシーン内に「Steam」という名前の新しい gameobject を作成します。
- SteamManager コンポーネントを gameobject に追加します。 このコンポーネントは Steamworks.Net の一部です。
- SteamScript コンポーネントを作成し、gameobject に追加します。
以下の例は、SteamScript
コンポーネントのコードを示しています。
// 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());
}
}
テスト
エディター内で直接テストを実行できます。
- シーンを実行し、[ログイン] を選択します。
- しばらくすると、Success! (成功!) の認証結果を示すコンソール メッセージが表示されます。