当您将游戏的更新版本发布到 Roblox 时,玩家不会立即从旧版本的游戏中移除。相反,您可以通过重启所有过时的服务器来将玩家迁移到更新版本。
如果您不重启服务器,玩家将在运行旧版本的服务器最终空闲并关闭时过渡到新版本的游戏。这个选项不会造成中断,但您的玩家群体可能会在较长时间内玩不同版本的游戏;如果您的基础玩家数据格式发生了变化,您可能应该重启服务器。
对于时间敏感的更新,您可能更愿意提前发布,隐藏内容在一个 config 后,然后更改配置值以发布新的内容。
重启服务器
要重启发布更新的服务器,请执行以下步骤:
- 前往 Creations 并选择您想要重启服务器的游戏。
- 转到 Configure ⟩ Server Management。
- 选择您想要重启的地方。
- 点击 Restart Servers。
- 在 Confirm Server Restart 对话框中:
- 选择以下一个或两个重启选项:
- 只重启过时版本的服务器,以避免重启正在运行最新发布版本的服务器。
- 延迟服务器重启,以延迟服务器的关闭,并允许玩家在 1 到 60 分钟之间的设定时间内自行离开游戏,而不是被临时断开连接。这也被称为服务器流失。
- 点击 Restart。
重启服务器后,Roblox:
- 停止所有指定关闭的服务器的匹配。通过点击 Play 按钮加入您游戏的玩家将不会与这些服务器匹配,但他们仍然可以通过接受邀请、传送或从其个人资料中加入其他用户来加入这些服务器。
- 等待配置的延迟时间,如果您选择了 延迟服务器重启 选项。
- 自动将玩家传送到游戏的更新版本。所有在同一个旧服务器上的玩家都被送到运行新版本的同一个替代服务器。
服务器上的通知
当您启动延迟服务器重启时,DataModel.ServerRestartScheduled 事件将在受影响的服务器上触发,带有以下参数:
- restartTime — 一个 DateTime。服务器计划关闭的最早时间。
- source — 对于您发布的更新,这将始终是 Enum.CloseReason.DeveloperUpdate。
- attributes — 一个可选的 JSON 对象,您可以用来提供有关重启的自定义信息,例如更新原因、紧急性等。
在您的服务器脚本中,您可以订阅此事件以向玩家提供即将重启的信息。您可以选择在您的 UI 中提供一个倒计时器,提示玩家保存他们的进度,或在最方便的时候将他们传送到更新的服务器。
当 Roblox 需要因基础设施维护原因重启服务器时,服务器也会被通知。相同的 DataModel.ServerRestartScheduled 事件会触发,source 为 Enum.CloseReason.RobloxMaintenance,attributes 为一个空字典。