スケジュール済みタスクのクイックスタート

スケジュールで実行されるタスクの作成方法を説明します。 以下のように、スケジュール済みのタスクを使用して自動化できるゲーム操作のルーチンが数多くあります。

  • 1 日の時間に応じてストアの価格を変更する。
  • タイトル データ を現在のイベントを反映するように更新する。
  • ゲームのエコノミーに毎日仮想通貨を投入する、など。

このクイック スタートで使用される例では、タイトル データで週末のみ UTC 時間 12:00 に rareDropRate と呼ばれるゲーム変数を変更する方法を紹介します。

手順 1 - CloudScript を準備する

[ゲーム マネージャー] で以下を実行します。

  • 左側のメニューで、[自動] を選択します。
  • [CloudScript Revisions (CloudScript のリビジョン)] タブで、adjustRareDropRateという新しい CloudScript 関数を追加し、SetTitleDataの API を単純に呼び出します。以下にコード スニペットと画像を示します。

注意

バグは意図的なものですので、心配しないでください。 ゲームでライブとなるように、新しいリビジョンを展開してください。

CloudScript の使用について詳しくは、CloudScript クイックスタートと、ExecuteCloudScript メソッドのドキュメントで学習できます。

handlers.adjustRareDropRate = function(args) {
    // Tutorial demo CloudScript
    serverAPI.SetTitleData({
        "Key": "rareDropRate",
        "Value": args.dropRate
    });
}

ゲーム マネージャー - CloudScript - 新しいバージョンの展開

手順 2 - スケジュール済みタスクの作成

左側のメニューで [サーバー] を選択します。

  • [Scheduled Tasks (スケジュール タスク)] タブに移動します。
  • 画面右上の [New Scheduled Task (新しいスケジュール タスク)] を選択します。
  • これにより、[Create Task (タスクの作成)] ビューが表示されます。
  • [Type of task (タスクのタイプ)] フィールドで、[Run a CloudScript function (CloudScript 機能を実行)] を選択します。
  • その下で、現在展開されている CloudScript のリビジョンから関数を選択し、渡す引数を指定できます。
  • 前の手順で記述した adjustRareDropRate ハンドラーを選択します。

このタスクのスケジュールを設定するには以下を実行します。

  • [スケジュール] ヘッダーの下で [スケジュールに従う (UTC)] を選択します。
  • シンプルなスケジュール ビルダーで、タスクをいつ実行するかを線tなくできます (毎時間、毎日、毎週など)。
  • この例では、週のどの曜日にタスクを実行するかを指定できる高度なスケジュールを設定します。
  • そこで、[CRON EXPRESSION (CRON 式)] を選択します。

高度にカスタマイズ可能な Cron 式によって、非常に複雑なスケジュールを構築できます。ただし、現在では、1 時間の 5 分刻みでのみスケジュールを設定できることに注意することが重要です。

たとえば、毎時 5 分、10 分、25 分、50 分でタスクを実行するように指定できますが、毎時 3 分、11 分、46 分にタスクを実行するようには指定できません

Cron 式の詳細は、crontab.guru 参照してください。ここでは豊富な情報とインタラクティブな式ビルダーが提供されています。

今回は土曜日と日曜日の 12:00 UTC にタスクを実行するため、「00 12 * * 0,6」となります (毎週土曜日と日曜日の 12 時から 0 分後)。

最後に、次の手順に進む前に、新しいタスクを保存してください。

ゲーム マネージャー - タスク - 新しいスケジュール済みタスク

手順 3 - タスクをテストする

[タスク] ビュー ([サーバー] ->[タスク]) では、新しく作成したタスクの次の実行が、期待どおり今度の土曜日であることがわかります。

現在が火曜日の場合、次のスケジュール済みの実行時間は 4 日後です。 今すぐテストするには、[Adjust rare drop rate] タスクを選択し、[RUN TASKS (タスクの実行)] を選択します。

ゲーム マネージャー - タスク - タスクの実行

手順 4 - テスト実行の結果を確認する

残念ながら、タスクの実行に失敗しました。 発生した問題を確認するために、タスクのインスタンスを選択します。

ゲーム マネージャー - タスク - 最近のタスク実行 - 失敗

[Task Instance Details (タスク インスタンスの詳細)] ビューには、タスクが失敗した理由の診断情報が表示されます。

今回は、serverAPI.SetTitleData への呼び出しが正しくないことが示されています。 本来server.SetTitleData とする必要がありました (説明は、カスタム CloudScript の記述チュートリアルの「中級: サーバー API の呼び出し」 を参照してください)。

[Task Instance Details (タスク インスタンスの詳細)] ビューには、開始時間と終了時間、呼び出された関数、渡された引数、完全な CloudScript 実行の結果など、他にも重要な情報があります。

ゲーム マネージャー - タスク - タスク インスタンスの詳細

手順 5 - 再テスト (成功)

手順 4 で見つかったエラーを修正してください。 正しいコード スニペットを以下に示します。

handlers.adjustRareDropRate = function(args) {
    // Tutorial demo CloudScript
    server.SetTitleData({
        "Key": "rareDropRate",
        "Value": args.dropRate
    });
}

次に、手順 3 を繰り返すと、最終的なテスト実行が成功します。

ゲーム マネージャー - タスク - 最近のタスク実行 - 成功

以下を実行して成功を確認します。

  • 左側のメニューで、[コンテンツ] を選択します。
  • [タイトル データ] タブに移動します。
  • [タイトル データ] エントリが実際に設定されていることを確認します。

ゲーム マネージャー - コンテンツ - タイトル データ