よくある質問

基本

PlayFab とは何ですか?

PlayFab とは、ゲーム開発に特化された Baas(Backend as a service)の一つです。

「バックエンド」というのは、裏のロジック部分のところですね。

例えば、ユーザーを管理したり、アイテムを管理したり、ゲーム内通貨(仮想通貨)を管理したりなどです。

こういった処理をゼロから実装するとなるとかなり大変で、テストの量も増えるため時間がかかってしまいます。

特に個人レベルでひと通り実装するのは、かなりの実装力がないと難しいです。

しかし、PlayFab の API を使用すれば、自分でゼロから実装することなくあらゆる機能が実現できます。

ゲームを作る上で、バックエンドの部分で他の人と差別化することは難しいと思います。

であれば、ユーザーの目に直接触れるフロントエンドや、ゲーム性のところに時間をかけたほうがいいですね。

もし少しでも興味がわいたら、PlayFabの始め方【環境構築から初回ログインまで】を参考に触ってみてください。

以下のスライドもわかりやすいのでおすすめです。

PlayFab のマニュアルはありますか?

公式ドキュメントが用意されています。

基本は公式ドキュメントでいいのですが、どうしてもわかりにくいところがあるので、このブログを立ち上げました。

料金体系が難しくてよくわかりません。

安心してください。私もよくわかっていません。

PlayFab の料金体系は、かなり難解です。

ざっくり「タイトルあたり、10万ユーザーまで無料」ということだけ覚えておけばよいでしょう。

PlayFab の料金体系を完璧に理解したなら、それはあなたが PlayFab マスターになった証拠です。

「もっと詳しく知りたい!」という人のために、料金体系に関するドキュメントをまとめておきます。

以下の公式ドキュメントで情報的には網羅していると思うのですが、イマイチまとまっていないのが残念なところですね。

 

料金体系の細かい点を知りたい人は、上記の記事をチェックしてみてください。

PlayFab の中の人に質問できますか?

英語ですが、PlayFab Community で質問をすることができます。

初回は質問が反映されるまでに2〜3日かかりますが、反映されてからは1日以内に質問が返ってきました。

質問する前に、Community で同様の質問がないかも調べてみましょう。

ゲームマネージャー

タイトルIDとシークレットキーはどこで確認できますか?

以下から確認することができます。

azure-environment-variable
PlayFab で保持しているデータ量や API の使用数を確認することはできますか?

タイトルの設定 > 制限」と進んでいくと、一覧で確認することができます。

認証

ログイン処理はどれを使えばいいですか?

一番簡単なのは、Login With Custom ID ですね。

ただ、何も考えずにログイン処理を実装する記事では、1行でログインする方法を紹介しているので、こちらも参照してみてください。

ログイン時のユニーク ID はどのように生成したらいいですか?
PlayFab 以外のアカウントと紐付けする必要はありますか?

iOS の場合は、Sign in with Apple を使ったログインが必須となっています。

Sign in with Apple を「簡単に」統合する方法を見ながら実装してみてください。

ログイン成功後、仮想通貨やプレイヤーデータなどを個別に取得しなくて済む方法はありませんか?

わざわざ個別の API を呼び出さなくても、ログインと同時に各種データを取得する方法があります。

詳しくは、ログインと同時にいろいろなデータを取得する方法を参照してください。

新規ユーザーのはずが、LoginResult の NewlyCreated が true になりません。

実は、タイトルプレイヤーの削除をしても、マスタープレイヤーが残っていれば、新規プレイヤー扱いとはなりません。

データ

タイトルデータとプレイヤーデータがよくわかりません。

タイトルデータとは、「ユーザー全員が共通して使うデータ」のことです。

いわば「マスタデータ」を管理するものですね。

プレイヤーデータとは、それぞれのプレイヤーが持っているデータのことです。

例えば、ランクや名前、経験値などを管理する目的で使用します。

さらに詳しく知りたい人は、プレイヤーデータとタイトルデータを理解する記事をご覧ください。

プレイヤーの表示名などの「プロフィールに関する情報」が空で取得されてしまいます。

タイトルの設定 > クライアントプロフィールオプション」と進んでいくと、表示名などをクライアントからアクセスできるかを設定することができます。

自動化

なぜ CloudScript を使う必要があるのですか?

Cloud Script を使用しなくても、クライアント側の API で同じ処理が可能なことが多いです。

PlayFab に関わらずサーバー処理を使うメリットの一つとしては、悪意を持ったユーザーのデータ改ざんがしにくくなることです。

アプリをインストールすると個々の端末にビルドされたファイルがダウンロードされますが、これを解析して内容を改ざんすることもやろうと思えばできます。

たとえば、1クエストクリアしたら100Gしか手に入らないはずが、10,000G手に入るようにする、とかですね。

こういった処理をサーバーでやっていれば、改ざんはグッと難しくなります。

ダウンロードしてくるファイルに内部処理が入っていないからですね。

じゃあ全部の処理をサーバーでやればいいかというと、通信が増えるとパフォーマンスが悪くなるのでそういうわけにもいきません。

クライアントとサーバーで適切に処理を分けることで、パフォーマンスを落とすことなくデータ改ざんも防げるようになります。

PlayFab 側としても、サーバーでやってほしい処理は、初期設定でサーバーでしか処理できないようになっているので、わかりやすいです。

最初は全部クライアント側で実装でもいいですが、最終的にはAzure関数でCloudScriptを実行する方法を見ながらサーバー処理も実装してみましょう。

Cloud Script は Javascript しか対応していませんか?

残念なことに、現在は Javascript しか対応していません。

ですが、Azure Functions を使用することで、サーバー処理を C# で書くことが可能になります。

詳しくは、Azure関数でCloudScriptを実行する方法を参照してください。

Cloud Script をデバッグできますか?

現時点では、Javascript で書いた Cloud Script をデバッグすることはできません。

Azure Functions をデバッグできますか?

Azure Functions はデバッグすることができます。

詳しくは、Azure関数をローカルでデバッグする方法【VSCodeを使用】を参照してください。

Azure Functions を使い始めたいです。

Azure関数でCloudScriptを実行する方法を読みながら、まずは環境構築から始めてみましょう。

リワード広告を統合する方法が知りたいです。

リワード広告を統合する方法【UnityAdsを使用】を参照してください。

GitHub でサンプルプログラムも用意しています。

サンプルは UnityAds ですが、概念としては AdMob など他の広告サービスにも流用できるはずです。

Cloud Script のように Azure Functions も公式のサンプルはありませんか?

実は、Handlers.cs にサンプルが載っています。

かなり参考になりますよ。

サーバー処理をロールバックすることはできますか?

残念ながら、サーバー処理をロールバックすることはできません。

複数の処理を1度で実行している場合、途中でエラーになったとしても最初の処理はコミットされしまいます。

「アイテムと同時に仮想通貨を付与する」といった処理であれば、コンテナやバンドルの使用が推奨されています。

参考:Best practices – Cloud Script error handling and rollbacks

Azure Functions でタイムアウトエラーが発生します。

無料プランの場合、一定時間接続がなければ実行に 10 秒ほど時間がかかってしまう仕様になっています。

コマース

クライアントから仮想通貨や統計情報を更新しようとするとエラーになります。

PlayFab では、改ざんを防ぐためサーバー処理としてほしい API は、クライアントから更新できない初期値設定になっています。

PlayFab の管理画面から「タイトルの設定 > API機能」と進むと、以下の項目が発見できます。

playfab-stamina

ここでチェックを付けると、クライアントから更新できるようになります。

リアルマネーでの課金を実装するにはどうしたらいいですか?

App Store や Google Play にリリースするものは、Unity IAP(アプリ内課金)で実装する必要があります。

IAP を実装する方法については、アプリ内課金(IAP)を統合する方法を参照してください。

上記以外の方法(WebGL や Windows ストアなど)の場合は、以下の決済方法があります。

Xsolla(エクソラ)

いろんなプラットフォームでの決済ができるようになります。

詳細は、リアルマネーでアイテムを購入する手順【Xsolla編】で解説しています。

Steam

Steam でゲームをリリースするときには必須です。

詳細は、リアルマネーでアイテムを購入する手順【Steam編】で解説しています。

Facebook

Facebook でゲームをリリースするときにだけ使えます。

この記事で解説する予定はありません。

PayPal

途中までは、PlayFab:現実のお金とゲーム内仮想通貨というスライドがとてもわかりやすいです。

それ以降は、以下の課題が解決できず、難しくて途中で挫折してしまいました。

もし興味がある人はチャレンジしてみてください。

よくある「ガチャ機能」を実装するにはどうしたらいいですか?

PlayFab の「ドロップテーブル」という機能を使うことで実装できます。

詳しくは、ドロップテーブルを使ってアイテムを付与する手順を参照してください。

ストアのアイテムについて詳しく知りたいです。
バンドルとは何ですか?

一言でいうと、「アイテムの詰め合わせ」のことです。

例えば、「りんご、みかん、もも」というアイテムを一つにまとめたものを、バンドルとして販売することができます。

実際は「リアルマネーでジェムを販売する」という使い方が多いと思います。

詳しくは、ストアでバンドルを売る手順を参照してください。

コンテナとは何ですか?

コンテナとは、開くまでは1つのアイテムとしてインベントリに置いておけるものです。

人からもらったプレゼント」と考えるとイメージが付きやすいかもしれません。

また、鍵のアイテムを使わないとコンテナを開けないようにする、という設定もあります。

詳しくは、コンテナを自由自在に操る方法を参照してください。

よくある「スタミナ機能」を実装したいです。

PlayFab では、仮想通貨の機能を応用することでスタミナ機能の実装ができます。

詳しくは、スタミナ機能を実装する方法を参照してください。

エンゲージメント

プッシュ通知を実装する方法を教えて下さい。

ソーシャル

フレンド機能を実装したいです。

フレンド機能を実装する方法を参照してください。

招待コードを入力したら特典をもらえる機能は用意されていますか?

専用の機能があるわけではありませんが、PlayFab の機能を使って実現することはできます。

詳しくは、友達の紹介コードから特典を付与する方法を参照してください。

その他

public なリポジトリで管理する場合の注意点はありますか?

PlayFabEditorExtensions を使っている人は、以下の操作をしてからコミットしましょう。

・Editor 上からログアウトする
・「PlayFabEditorExtensions / Editor / Resources / PlayFabEditorPrefsSO.asset」を開き、自分のメールアドレスを削除

これをやらないと、メールアドレスやタイトル ID が公開されてしまいます。