计划任务快速入门

本快速入门介绍如何创建按计划运行的任务。 有许多游戏操作例程可使用计划任务自动执行,例如:

  • 在一天中分时修改商店中的价格。
  • 更新游戏数据以反映当前事件的更改。
  • 每天将虚拟货币注入到游戏经济中等。

在本快速入门中使用的示例中,我们将演示如何修改游戏变量,该变量名为 rareDropRate 于 12:00 UTC,且仅在周末。

步骤 1 - 准备 CloudScript

Game Manager 中:

  • 在左侧菜单中选择 Automation
  • 在" CloudScript 修订 "选项卡上,添加一个名为" adjustRareDropRate "的新 CloudScript 函数,该函数通过对 SetTitleData API 的简单调用进行调用,如下面的代码片段和图像所示。

注意

对于仔细观察的人而言,不要担心 - Bug 是有意为之。 确保部署新版本,以便在游戏中可正常运行。

在我们的 CloudScript 快速入门以及 ExecuteCloudScript 方法的文档中,可以了解有关使用 CloudScript 的详细信息。

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

Game Manager - CloudScript - 部署新版本

第 2 步 - 创建计划任务

现在从左侧菜单中选择 Servers

  • 转到" 计划任务" 选项卡。
  • 选择屏幕右上角的"新建计划任务"
  • 这将弹出 Create Task 视图。
  • Type of task 字段中,选择 Run a CloudScript function
  • 在其下方,可以从当前部署的 CloudScript 版本中选择一个函数,以及指定要传入的参数。
  • 选择在上一步中写入的 adjustRareDropRate Handler

为此任务设置计划:

  • SCHEDULE 标题下,选择 On a schedule (UTC)
  • 通过一个简单的计划生成器可选择任务应运行的时间(每小时、每天、每周等)。
  • 对于此示例,我们想要一个高级计划,在该计划中,可指定在一周中的哪几天运行此任务。
  • 因此选择 CRON EXPRESSION

高度可定制的 Cron 表达式可生成非常复杂的计划,但务必注意,我们当前 允许在小时的 5 分钟标记处发生的计划。

例如,可以指定在小时的第 5、第 10、第 25 或第 50 分钟运行的任务,但 可以指定将在小时的第 3、第 11 或第 46 分钟运行的任务。

如果要了解有关 Cron 表达式的详细信息,请参阅 crontab.guru 提供的丰富信息和交互式表达式生成器。

在本例中,我们希望任务在 UTC 时间星期六和星期天 12:00 运行,也就是 00 12 * * 0,6(每个星期日和星期六的十二点零分)。

最后,确保在继续执行下一步前保存新任务。

Game Manager - Tasks - New Scheduled Task

步骤 3 - 测试任务

在“任务”视图(“服务器”->“任务”)上,可以看到新创建的任务的下一次运行是在下一个星期六 - 与预期一致。

因此,如果当前为星期二,则下一个计划运行时将是 4 天后。 要立即 测试该任务,请选择 Adjust rare drop rate 任务,然后选择 RUN TASKS

Game Manager - Tasks - Run Tasks

第 4 步 - 查看测试运行结果

不幸的是,运行的任务已失败。 选择任务实例,看出现了什么问题。

Game Manager - Tasks - 最近的任务执行活动 - 失败

Task Instance Details 视图提供有关任务失败原因的诊断信息。

在本例中,它指出,到 serverAPI.SetTitleData 的调用不正确。 它实际上 应为 server.SetTitleData(有关说明,请参阅编写自定义 CloudScript 教程的中间:调用服务器 API 部分)。

Task Instance Details 视图上还有其他重要信息 - 例如开始和结束时间、被调用的函数、传入的任何参数、完整 CloudScript 执行结果等。

Game Manager - Tasks - Task Instance Details

第 5 步 - 再次测试(成功)

继续修复我们在第 4 步中发现的错误。 下面是正确的代码段。

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

现在,重复步第 3 步,最终的测试运行成功。

Game Manager - Tasks - 最近的任务执行活动 - 成功

确认成功:

  • 在左侧菜单中选择 Content
  • 转到 Title Data 选项卡。
  • 验证 Title Data 条目实际上是否已设置。

Game Manager - Content - Title Data