この記事でのバージョン
Unity 2018.4.8f1
PlayFab SDK 2.77.191029
はじめに
今回はUnityでのPlayFabの導入からログインまでの解説記事です!
また、ユーザごとにカスタムIDを生成する方法も紹介しています。
なお、PlayFabとはなんぞや?という方は以下の記事を参照の事。
ざっくり言うとサーバーサイドが関わる事を楽して実装出来るサービスです。
しかも、無料で始める事も可能ですし、有料プランでも1000MAUまでは無料と
「ユーザが全然増えないのにお金だけ払う」みたいな事がありません。
なので個人開発でも使い始めやすいですし、Microsoftのサービスという安心感まであります。
Indie Plan、1,000 MAU まで無料だし、それを超えて有料になっても 100,000 MAU までは月額 $99 というお手頃価格なので個人や小規模なチームの開発にとても良いと思います🙂
— 南@エンジニア兼ティーアドバイザー (@_y_minami) 2019年11月14日
カジュアルなゲームなら機能制限がある代わりに MAU が何人でも完全無料の Essentials Plan でも良し☺️ https://t.co/TzPHB2g3ZR
アカウント、タイトル作成
まずはPlayFabのアカウントを作成します。
アカウントを作成するとメールが届くので、
そこからメールアドレスを認証し、さらにPlayFabを導入するゲームのタイトルを適当に作成します。
なお、新しいゲームのタイトルや新しいスタジオ(社内のチームみたいなの)は
以下の場所からいつでも新規作成する事ができます。
ちなみに、PlayFabの言語を変えたい時は
右上のMy profileを選択後、Languageを変更します。
Unity側の設定
エディタ拡張機能(UnityPackage)をダウンロードし、プロジェクトにインストールすると、
Window/PlayFab/Editor Extensionsからウィンドウが開けるようになります。
このウィンドウからログインをした後、
Install PlayFab SDKでSDKをインストールします。
SDKのインストール完了後、スタジオとタイトルを選べば準備完了です。
ログイン処理
PlayFabにはクイックスタートというチュートリアル的なのがあるのですが、
それを元にユーザのログイン処理を実装してみると以下のような感じになります。
using PlayFab; using PlayFab.ClientModels; using UnityEngine; /// <summary> /// PlayFabのログイン処理を行うクラス /// </summary> public class PlayFabLogin : MonoBehaviour{ public void Start(){ //ログイン処理実行 var request = new LoginWithCustomIDRequest { CustomId = "GettingStartedGuide", CreateAccount = true}; PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure); } //ログイン成功 private void OnLoginSuccess(LoginResult result){ Debug.Log("Congratulations, you made your first successful API call!"); } //ログイン失敗 private void OnLoginFailure(PlayFabError error){ Debug.LogWarning("Something went wrong with your first API call. :("); Debug.LogError("Here's some debug information:"); Debug.LogError(error.GenerateErrorReport()); } }
これを適当なオブジェクトにAddし、
シーンを再生するとログイン処理が実行され、ログが表示されます。
ちなみにブラウザ上のダッシュボードを見ると、ログインした人数などを確認する事が可能です。
なお、このサンプルでは、簡略化のためかCustomIdが常に"GettingStartedGuide"になっているため
だれがログインしても同じIDになってしまうという問題があります。
var request = new LoginWithCustomIDRequest { CustomId = "GettingStartedGuide", CreateAccount = true};
一応、LoginWithAndroidDeviceIDやLoginWithIOSDeviceIDのようなログインメソッドもありますが、
これらのメソッドもIDを指定する事は同じですし、
プラットフォームごとに処理を変えるのは面倒なので、
次項ではプラットフォームに関わらずユーザごとのカスタムIDを生成する実装の一例を紹介します。
ユーザごとのカスタムID生成
カスタムIDの生成で一番楽なのはSystemInfo.deviceUniqueIdentifierを使う事なのですが、
var request = new LoginWithCustomIDRequest { CustomId = SystemInfo.deviceUniqueIdentifier, CreateAccount = true};
残念ながらこの値は変わる事があるので今回は使えません。
と言う事で、一意のカスタムIDを生成する処理を追加したログイン用のプログラムを書いてみました。
これを先程と同様に適当なオブジェクトにAddし、
シーンを再生するとログイン処理が実行され、ログが表示されます。
簡単に処理の流れを列挙すると以下のような感じ。
- 初ログイン時にIDを生成(32桁のランダムな英数字)
- 既にそのIDが使われている場合は新たにIDを生成(使われていないIDを見つけるまで)
- ログインが成功したらIDをPlayerPrefsに保存
- 2回目以降はPlayerPrefsに保存されたIDでログイン
この方法ならIDをユーザに教える事で機種変時の移行をOS関係なく行うなんて事も可能です。
ただし、PlayerPrefsにIDを保存しているので、
アプリを消すとIDも消えてしまう点には注意が必要です。
------------追記------------
ID生成部分はGUIDという構造体を使うともっと簡単に出来るかもしれません。
------------追記おわり------------
おわりに
今回は導入からログインまでをまとめてみましたが、これぐらいならかなり簡単に行えました!
ただし、まだ実際にプロジェクトに導入して運用したわけではないので、
間違いやもっと良い方法があるかもしれない点にはご注意ください。
(その際は教えてもらえると幸いです。)
PlayFabは本当に色々な機能があるので、今後もちょっとずつ記事にしていこうかと思います。