Ofon的维度边界与预生成(ODBP)

Ofon的维度边界与预生成(ODBP)

通过一个服务端管理界面,创建独立的世界边界,并配置持久的、按维度预生成的作业,带有灵活的优先级控制。

Ofon的维度边界与预生成

Ofon的维度边界与预生成(简称ODBP)是一款服务器管理模组,旨在将独立的维度边界和持久化预生成任务整合到一个命令系统中。

ODBP的主要目标是简化对包含多个维度的大型世界的管理,无需重复设置单独的工具,也无需手动追踪当前正在预生成的维度。

ODBP仍在开发中。随着模组的测试和开发,其功能、命令、性能表现以及用户界面元素可能会持续变化。


世界边界

ODBP允许为各个维度分别配置独立的世界边界。

这意味着主世界(Overworld)、下界(Nether)、末地(End)以及兼容的模组维度都可以拥有各自独立的边界大小和中心点,而不再共享一个全局边界配置。

世界边界的大小使用直径来表示,这与原版Minecraft描述世界边界大小的方式一致。

例如:

/odbp worldborder overworld 100000

这将创建一个直径为100,000格的主世界边界。

您可以使用以下命令查看已配置的边界:

/odbp worldborder overworld

您可以使用以下命令查看所有已配置的边界:

/odbp worldborder list

简写命令:

/odbp list

显示相同的世界边界总览。


预生成

ODBP还为各个维度提供持久化的预生成任务。

每个维度都可以拥有自己已保存的预生成任务和进度。虽然同一时间只有一个维度在积极进行预生成,但其他维度的任务会保留保存状态。

这使得管理员可以暂停一个维度并恢复另一个维度,而不会丢失任何一个任务的进度。

目前,预生成使用一个与所配置的方形世界边界相匹配的方形生成区域。未来可能会考虑增加其他预生成形状。

预生成从所配置的世界边界中心开始向外进行,而不是从世界的外部边缘开始。


开始预生成

在开始预生成之前,请先为该维度配置一个ODBP世界边界。

例如:

/odbp worldborder overworld 100000

然后使用以下命令开始预生成:

/odbp pregen overworld start

还可以指定优先级:

/odbp pregen overworld start low

/odbp pregen overworld start medium

/odbp pregen overworld start high

/odbp pregen overworld start extreme


预生成优先级

LOW(低)专为在玩家活跃使用服务器时进行后台预生成而设计。

LOW会根据服务器活动情况自动调整其提交的预生成工作量。

当没有人在线时,LOW可使用的工作窗口最高可达32个并发区块生成请求。

当有玩家在线时,LOW会将其最大工作窗口限制为16。

当玩家活跃地穿越区块并可能触发正常的游戏性区块加载时,LOW会将其最大工作窗口降低至8。

当服务器tick健康度开始下降时,LOW甚至可以进一步降低其工作量。

当玩家活动停止时,LOW会逐渐增加其工作窗口,而不是立即恢复到最大负载。

LOW的目的是让长期预生成任务能够在后台持续运行,而无需管理员在玩家加入服务器时不断暂停和恢复这些任务。


MEDIUM(中)提供更为均衡的预生成模式,其最大工作窗口为64个并发区块请求。


HIGH(高)提供激进的预生成,其最大工作窗口为96个并发区块请求。


EXTREME(极高)允许的最大工作窗口为128个并发区块请求,主要用于服务器空闲时的最大吞吐量。

EXTREME并不代表Minecraft会每秒生成128个区块或使用128个CPU线程。该工作窗口控制的是ODBP愿意同时保持进行中的区块生成请求数量。

Minecraft、NeoForge(若安装了C2ME)、世界生成模组、存储性能、可用的CPU资源以及其他服务器活动最终决定了这些请求的完成速度。

EXTREME模式在未来具有更多多线程世界生成能力的处理器和服务器上可能会变得更加有用,甚至超越当前高端桌面处理器(如Ryzen 9 9950X)所能提供的性能。其更大的工作窗口是特意为那些能从更高并行度中受益的系统而提供的,并非假设所有当前系统都能从中受益。


管理预生成任务

要查看所有已保存的预生成任务:

/odbp pregen list

要查看单个维度的详细信息:

/odbp pregen overworld

以下命令提供相同的详细状态信息:

/odbp pregen overworld status

要暂停正在运行的任务:

/odbp pregen overworld pause

要稍后恢复该任务:

/odbp pregen overworld resume

要在保留任务的同时更改其优先级:

/odbp pregen overworld priority low

/odbp pregen overworld priority medium

/odbp pregen overworld priority high

/odbp pregen overworld priority extreme

要取消并移除已保存的预生成任务:

/odbp pregen overworld cancel

取消ODBP预生成任务并不会删除已经生成的区块。


持久化任务

预生成任务会为每个维度独立保存。

同一时间只能有一个任务在积极进行生成。

管理员可以暂停一个维度并恢复另一个维度,以切换预生成工作而不会丢失已保存的进度。

在服务器重启或单人世界重启后,未完成的预生成任务将保持“已暂停”(PAUSED)状态,直到被显式恢复。

使用/stop进行的正常服务器关闭以及正常的“保存并退出”操作都是安全的。

在可能的情况下,建议在强制关闭或突然终止服务器或游戏之前,先暂停一个正在运行的预生成任务。这允许未完成的工作得以完成,并为ODBP提供最干净的停止点。


预生成统计

ODBP为活动中的预生成任务提供详细的统计信息。

“已处理”(Processed)代表ODBP已处理完毕的区块位置总数。

“已生成”(Generated)代表ODBP实际需要生成至完整区块状态的区块数量。

“已存在”(Existing)代表ODBP处理时已经是完整生成的区块,因此ODBP可以跳过再次生成它们。

“失败”(Failed)代表ODBP尝试生成但由于Minecraft、世界生成或其他模组返回错误而未能成功完成的区块。

一个失败的区块并不自动意味着该区块已损坏。应检查服务器日志以查找潜在错误。

这些统计信息之间的关系为:

已处理 = 已生成 + 已存在 + 失败

ODBP会显示短期、30秒、5分钟以及本次会话的区块处理速率,以便更容易地了解预生成任务的执行情况。


颜色编码

ODBP在其命令和状态信息中广泛使用颜色编码以提高可读性。

“已处理”信息以青色显示。

“已生成”信息以绿色显示。

“已存在”区块信息以黄色显示。

“失败”区块信息以红色显示。

维度、预生成优先级、进度信息、警告以及命令操作在可行的情况下也使用一致的颜色,以便快速阅读大型状态显示。


性能与C2ME

ODBP并不试图取代C2ME。

ODBP控制哪些区块应当被预生成、何时提交预生成工作、提交工作的激进程度以及如何保存进度。

Minecraft和兼容的优化模组(如C2ME)仍然负责实际的区块生成和线程行为。

ODBP设计为无需C2ME即可运行,但使用C2ME的服务器可能会因其跨多个CPU线程执行世界生成工作的能力而显著受益。


服务器与客户端要求

ODBP目前旨在作为一款服务器端管理模组运行。

普通玩家目前无需在其客户端安装ODBP即可加入使用该模组的服务器。

管理命令需要操作员权限等级2。

如果未来版本中ODBP获得图形化管理界面,那么客户端组件可能会变得有用。

一个计划的设想是管理员HUD或带有下拉控件的菜单,用于在开始或管理任务之前选择维度、预生成优先级、世界边界设置和其他选项。

如果添加了此类界面,客户端组件将面向使用图形界面的管理员,而服务器仍将保留对所有ODBP操作和权限的权威控制。


帮助命令

要获取ODBP的常规帮助:

/odbp help

要获取世界边界的帮助:

/odbp help worldborder

要获取预生成的帮助:

/odbp help pregen

要获取已加载和可用维度名称的列表:

/odbp dimensions


开发中

Ofon的维度边界与预生成仍在积极开发和测试中。

当前的重点是可靠的世界边界管理、持久的跨维度预生成、易于理解的状态信息、良好的性能,以及允许后台预生成与正常的服务器游戏体验共存。

随着开发的继续,可能会增加更多生活质量功能、管理工具、预生成选项、性能改进以及可选的图形界面。

欢迎提供来自不同硬件配置的反馈、错误报告、兼容性报告以及性能测试结果。