GS2 Blog

Game Server Services(https://gs2.io/) の最新情報をお届けします

【新サービス提供開始】GS2-Showcase がご利用いただけるようになりました

みなさん、こんにちは。GS2の丹羽です。

先日発表した GS2-Showcase の提供を開始しましたので、お知らせします。

gs2.hatenablog.com

いつも通り、GS2-Showcase を Unity から使う方法を軽く説明したいと思います。

まず、商品情報の登録が必要です。
先日のブログエントリでも説明したとおり、商品には「商品」と「商品グループ」があり
それらを「陳列商品」として陳列することでショーケースができあがります。

これらは GS2 のマネージメントコンソールで登録して、JSON形式の設定ファイルをエクスポートすることができます。
JSON形式の設定ファイルですので、独自の管理ツールを作成して、そちらで作ったファイルで運用することも可能です。

設定ファイルを「ショーケースマスター」としてアップロードすることで、実際に商品情報を反映出来ます。


商品情報が登録出来たら、次は Unity から商品一覧を取得してみます。

yield return gs2.Showcase.DescribeSalesItems (
    result => {
        if(result.Error != null) throw result.Error;
        // 商品リストの取得に成功
        foreach (var item : result.Result)
        {
            Debug.Log("商品の種類: " + item.ItemType);
            Debug.Log("数量: " + item.ItemAmount);
            Debug.Log("通貨の種類: " + item.CurrencyType);
            Debug.Log("販売価格: " + item.Price);
        }
    },
    session,            // GS2 ログインセッション
    ShowcaseName,       // GS2-Showcase で作成したショーケース名
);

このようなコードを書くと、先ほど登録した商品情報が取得出来ます。
その際に、GS2-Schedule や GS2-Script で公開期間を設定していた場合は、期間外の商品は取得出来ません。
また、商品グループとして陳列した商品は条件を満たす1つの商品だけが結果に含まれます。


次に、商品を購入してみます。

yield return gs2.Showcase.BuyItem (
    result => {
        if(result.Error != null) throw result.Error;
        // 商品の購入に成功
        var stampSheet = result.Result; // スタンプシート
    },
    session,            // GS2 ログインセッション
    ShowcaseName,       // GS2-Showcase で作成したショーケース名
    itemId,             // DescribeSalesItems() で取得した商品ID
    KeyName             // 購入処理で使用する GS2-Key 暗号鍵名
);

購入したい商品の 商品ID と、購入処理で使用する「スタンプシート」の暗号化に使う暗号鍵を指定します。
スタンプシートの詳しい解説は以下のブログエントリを参照してください。

gs2.hatenablog.com


商品を購入すると、スタンプシートが発行されます。
この時点では対価などは消費されていませんし、購入したアイテムも付与されていません。
スタンプシートのタスクを実行することで、対価が消費されたり、購入したアイテムが付与されることになります。

なので、この後はスタンプシートのタスクを実行します。

stampSheet.OnCompleteTasks += () =>
{
    Debug.Log("購入した商品の種類: " + stampSheet.Item.ItemType);
    Debug.Log("入手した数量: " + stampSheet.Item.ItemAmount);
}

yield return stampSheet.RunTask (
    result => {
        if(result.Error != null) throw result.Error;
        // 全てのタスクを完了
    },
    session,            // GS2 ログインセッション
    KeyName,            // 購入処理で使用する GS2-Key 暗号鍵名
    new BuyConfig
    {
        StaminaMaxValue = 50,
    }                   // 購入時に使用するオプション値
);

スタンプシートには RunTask メソッドがあり、そちらを呼び出すことでタスクを実行出来ます。
エラーが発生すると、指定したコールバック関数にエラーが返ります。
エラーを気にせず、再び RunTask メソッドを呼び出すと、失敗したところから処理を再開することが出来ます。
リトライ回数をカウントしつつ、一定回数失敗したら諦めるような実装を推奨します。

スタンプシートの RunTask メソッドの引数で指定するコールバックの他に OnDoneTask / OnCompleteTasks といったコールバックを登録して待ち受けることも出来るようになっています。
扱いやすい方で購入完了処理をハンドリングしてください。


最後に料金についてですが、GS2-Showcase は完全IO課金となっており、

API呼び出し 1,000回あたり3円 に加え、以下の操作をしたときに追加の費用が発生します。

商品一覧/商品情報の取得 1円/1,000回
購入処理 3円/1,000回
商品マスタのエクスポート 1円/回

それでは、また。

(C) Game Server Services, Inc.