LoginSignup
6
2

More than 3 years have passed since last update.

PlayFabのクラウドスクリプトでアイテムを渡してみる

Last updated at Posted at 2019-10-02

Microsoftのモバイルゲームバックエンドサービス(mBaaS)のAzure PlayFab。
扱いやすさとMAUベースの個人開発者に優しい料金体系から注目が広まっており、最近は情報共有も盛んになってきて本当に助かります。

UnityでPlayFabを使い始める方法(インストール〜匿名ログイン)
個人のゲーム開発者がAzure PlayFabに入門してみた4つの理由

この記事や、リンクから飛べる記事で

  • unityとの連携
  • 匿名ログイン
  • ユーザーデータの操作

あたりはサクっと出来ちゃう感じ。結構ビビります。

サーバーでアイテムをプレイヤーに渡したい

「サーバー上でアイテムをプレイヤーに渡す処理」を作ってみたいなと思いました。という事で

  • アイテム
  • クラウドスクリプト

のとっかかりを記載してみます。間違いや非効率な部分があったらすみません。

カタログを作ってみる

まず、アイテムを作るにはそのアイテムを管轄する「カタログ」が必要なそうで。

  • エコノミー→カタログ→新しいカタログ

カタログ1.png

カタログバージョンを入力せよとの事
カタログ2.png

アイテムカタログ…カタログとは…
ネットを検索したらニッセン春号が出たので何も考えずに[nissen_spring]と付けました。秋なのに。

「バージョン」と書いてますが文字列で大丈夫みたいです。
カタログ3.png

アイテムを作ってみる

次にカタログに内包されるアイテムを作ります。
カタログの右上に新しいアイテムの作成ボタンがあります。

カタログ4.png

最近は魚がおいしいのでsanmaを登録。表示名も記載してみる。
カタログ5.png

アイテムクラスや、タグなどもこの先使うのだろうけど今のところはまだ使っていません。

下の方にアイテムの保存があるので、それを押すとアイテムが登録されます。
スタック可能や、トレード可能などのオプションもあるようです。

他のアイテムも登録。

カタログ8.png
アイテムカタログニッセン春号(内容:鮪・鮭・秋刀魚)が爆誕。

クラウドスクリプト

作ったアイテムを、プレイヤーに対して渡す方法としてクラウドスクリプトを使ってみました。
playfabは、ダッシュボードからプレイヤーに対してクラウドスクリプトを実行できるようでそれで試してました。
もちろん、クラウドスクリプトはunityから呼び出す事も出来ます。

まずはクラウドスクリプトを作ります。

  • 自動化→cloudScript→リビジョン

でエディタが開きます。ここにスクリプトを記載できるようです。
クラウドスクリプト1.png

こんな感じに記載しました。
クラウドスクリプト2.png

// 初めてのクラウドスクリプト
handlers.getNissenFish = function (args, context) {

    // requestに全て詰め込む
    var request = {
        "CatalogVersion": "nissen_spring",  //カタログバージョンを指定
        // ItemGrant型配列を定義
        "ItemGrants": [
            {
                "PlayFabId": currentPlayerId,
                "ItemId": "maguro"
            },

             {
                "PlayFabId": currentPlayerId,
                "ItemId": "sanma"
            }           
        ]
    };

    // 全て詰め込んだ request を引数にserver.GrantItemsToUsersを呼び出す。
    var playerStatResult = server.GrantItemsToUsers(request);        

    };

解説

一行目
handlers.getNissenFish = function (args, context) {

この記載で、getNissenFishがスクリプト呼び出し名となります。

最後
var playerStatResult = server.GrantItemsToUsers(request); 

最後のこの「server.GrantItemsToUsers」がユーザーにアイテムを与える命令になります。引数としてパッケージングされものをrequestとして入れています。(その結果をplayerStatResultが受け取る形になる)

さて、プレイヤーにアイテムを渡すAPI「GrantItemsToUsers」の説明はこちらです。
playFabのGrantItemsToUsersのリファレンス

自分が英語が出来ないので機械翻訳でなんとか読み取ると…

  • 「CatalogVersion(string)」と「ItemGrants(ItemGrant配列)」が必要
  • ItemGrant配列には「PlayFabId」(操作が実行されるプレイヤーID)や渡すべき「ItemId」など、様々なものが入れられるらしい。

「"ItemId": "maguro"」のようにkeyとvalueの対で記載。
currentPlayerIdは実行したプレイヤー自身のID。これに対し、maguroとsanmaを渡します。

    // requestに全て詰め込む
    var request = {
        "CatalogVersion": "nissen_spring",  //カタログバージョンを指定
        // ItemGrant型配列を定義
        "ItemGrants": [
            {
                "PlayFabId": currentPlayerId,
                "ItemId": "maguro"
            },

             {
                "PlayFabId": currentPlayerId,
                "ItemId": "sanma"
            }           
        ]
    };

スクリプティングが終わったら、上にあるリビジョン〇として保存、を押す
クラウドスクリプト3.png

その後デプロイを押す(忘れないように)
クラウドスクリプト4.png

任意のプレイヤーのページに進み、CloudScriptを実行
プレイヤー1.png

getNissenFish を選択し、スクリプト実行
プレイヤー3.png

秋刀魚とまぐろが手に入った!
プレイヤー4.png

おまけ:アイテムのカスタムパラメータ

playFabのアイテムはカスタムパラメータが持てる。つまり、レベルだけ持ってるみたいな簡単なキャラクターはアイテムとして実装するのがいいっぽい。
カタログ6.png

カタログ7.png

キャラをアイテムとして持つ的な質問があるフォーラム(要翻訳)
https://community.playfab.com/questions/18917/getting-data-about-all-characters.html
https://community.playfab.com/questions/29930/save-character-as-items.html

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2