GS2-Schedule

スケジュール管理を GS2 SDK for Unity から利用する手順を解説します。

スケジュールを作成する

GS2マネージメントコンソールの GS2-Schedule から新しくスケジュールを作成します。

スケジュールは複数のイベントをまとめて管理する単位で、1つのスケジュールで最大10個のイベントを持たせることが出来ます。

../../../_images/スクリーンショット_2017-12-14_0.51.59.png

『スケジュールの新規作成』をクリックします。

../../../_images/スクリーンショット_2017-12-14_0.53.02.png

スケジュールの名前をつけます。

スケジュールの名前がそのまま画面に表示されるわけではありません。

次にイベントのマスタデータを作成します。

../../../_images/スクリーンショット_2017-12-14_0.54.25.png

作成したスケジュールを選択し、画面下部のペインのタブの中から『イベントマスタ管理』を選択します。

『イベントの新規作成』をクリックします。

../../../_images/スクリーンショット_2017-12-14_1.21.36.png

イベントの名前をつけます。

イベントの名前がそのまま画面に表示されるわけではありません。

メタデータにはイベントに関するメタデータを自由に付与出来ます。

表示用のイベントの名称や、クライアントで使用する説明テキストなどを記述出来ます。

期間の種類には2種類あります。

1つめは絶対期間です。

../../../_images/スクリーンショット_2017-12-14_1.23.47.png

イベントの開始日時と終了日時を指定します。(時間はUTCで指定することに注意してください)

2つめは相対時間です。

../../../_images/スクリーンショット_2017-12-14_1.24.58.png

トリガーの名前とトリガーが引かれてから何分間をイベントの開催期間とするかを設定します。

開催期間には最大30日(43,200) まで指定可能です。

イベントマスタを登録出来たらエクスポートします。

../../../_images/スクリーンショット_2017-12-14_1.27.40.png

『イベントマスタのエクスポート』をクリックします。

すると json ファイルがダウンロードされるはずです。それがイベント情報のマスターデータです。

次に、エクスポートしたイベントをスケジュールに反映しましょう。

../../../_images/スクリーンショット_2017-12-14_1.30.04.png

次に『マスターデータを更新』をクリックします。

../../../_images/スクリーンショット_2017-12-14_1.31.22.png

先ほどエクスポートしたマスターデータを選択してアップロードします。

これで、GS2マネージメントコンソールでおこなう準備は完了です。

現在有効なイベントのリストを取得する

yield return Gs2.Schedule.List(
    r =>
    {
        if (r.Error != null)
        {
            // 例外が発生
        }
        foreach (var eve in r.Result.Events)
        {
            Debug.Log("name: " + eve.Name);        // イベント名
            Debug.Log("meta: " + eve.Meta);        // メタデータ
            Debug.Log("begin: " + eve.Begin);    // 開始日時
            Debug.Log("end: " + eve.End);        // 終了日時
        }
    },
    Session,                            // ゲームセッション
    ScheduleName,                        // スケジュール名
    new []{EventName1, EventName2});    // イベント名のリスト

イベント名リストで指定したイベントのうち、現在有効なイベントのみが応答されます。

イベント名リストを省略した場合、開催期間中の全てのイベントを受け取れます。

イベントの情報を取得する

yield return Gs2.Schedule.Get(
    r =>
    {
        if (r.Error != null)
        {
            // 例外が発生
        }
        Debug.Log("name: " + r.Result.Name);      // イベント名
        Debug.Log("meta: " + r.Result.Meta);      // メタデータ
        Debug.Log("begin: " + r.Result.Begin);    // 開始日時
        Debug.Log("end: " + r.Result.End);        // 終了日時
    },
    Session,            // ゲームセッション
    ScheduleName,       // スケジュール名
    EventName1);        // イベント名

イベント開始トリガーを引く

今回の例では GS2-Account の createAccount イベントをトリガーとしてイベントを開始するスクリプトを GS2-Script で定義した場合の例です。

schedule_client = client('schedule')        –- GS2-Schedule のクライアントを初期化
result = schedule_client.pull_trigger({
    scheduleName="schedule-0001",         -- スケジュール名
    triggerName="trigger-0001",           -- トリガー名
    userId="user-0001",                   -- ユーザID
    action="pull_again"                   -- トリガーの引き方
})
result = {permit=not result.isError}      -- トリガーを引くのに失敗した場合失敗とする

こちらの GS2-Script を作成後、GS2-Account のゲーム設定のアカウント登録時のスクリプトに設定することで、

アカウント登録後一定期間をイベント期間とすることが出来ます。