世界引擎

世界引擎

针对大型世界物理场景优化Sable,采用自适应空间索引、大物体处理及无损耗模拟保真度。

杂项

世界引擎

世界引擎是 Sable 的一个性能与扩展性附加模组,旨在让大型移动结构和物理密集型世界在不降低模拟质量的情况下流畅运行。

Sable 使大型移动结构成为可能。世界引擎专注于让这些模拟在世界包含更多实体、更大结构或更大的物理空间时更好地扩展。

它不会替代 Sable,也不会添加独立的物理系统。相反,它优化了 Sable 一些最热门的服务端路径,同时保留 Sable 现有的物理行为。


世界引擎能做什么?

世界引擎改进了 Sable 中随着世界变大而变得昂贵的部分。

它目前的优化包括:

  • 自适应空间查询
    根据当前查询的成本,在基于区块的查找和直接实体扫描之间进行选择。

  • 大型实体处理
    追踪非常大的移动结构,而无需将它们扩展成数十万个区块条目。

  • 世界级碰撞查询
    大型查询区域不再需要遍历请求体积内的每个区块。

  • 降低分配压力
    热门查询路径尽可能复用内部数据,以减少不必要的垃圾回收。

  • 更高效的活动实体处理
    物理工作集中在真正需要处理的实体上。

  • Sable 原生物理保真度
    世界引擎保持 Sable 配置的物理子步数和时间步行为。性能改进旨在避免降低求解器质量或改变碰撞精度。


为什么使用它?

世界引擎适用于 Sable 不仅仅移动一两个小装置的世界。

如果你使用以下内容,你可能会从中受益:

  • 大型船只、车辆、平台或移动基地
  • 同时使用多个 Sable 子世界
  • 移动结构附近有大量实体的高密度世界
  • 大型启用物理的建造
  • 服务端刻时间成为问题的整合包
  • 世界级或远距离的物理设置

对于小型 Sable 设置,差异可能不大。模拟越大越繁忙,高效的索引和查询行为就越重要。


不牺牲模拟质量

世界引擎不是一个“通过让物理变差来让物理更便宜”的模组。

它不会故意:

  • 减少 Sable 配置的物理子步数
  • 降低碰撞精度
  • 用近似碰撞边界替换精确碰撞边界
  • 仅为获得 TPS 而禁用远处结构的物理

目标是避免不必要的工作,同时保持相同的模拟结果。


前置要求

世界引擎是 Sable 的附加模组。

你必须安装兼容版本的 Sable。

当前开发目标:

  • Minecraft 1.21.1
  • NeoForge
  • Sable

始终使用针对你的 Minecraft 和 Sable 版本设计的世界引擎版本。


安装

  1. 为支持的 Minecraft 版本安装 NeoForge。
  2. 安装 Sable。
  3. 将世界引擎 .jar 文件放入你的 mods 文件夹中。
  4. 正常启动游戏或服务器。

世界引擎主要是一个后端优化模组,因此在使用前不需要配置额外的方块、物品或游戏系统。


它会添加新方块或机制吗?

不会。

世界引擎专注于 Sable 的性能、可扩展性和模拟基础设施。

如果它正常运行,大多数玩家应该会注意到大型 Sable 设置在高负载下表现更好。


它是服务端模组吗?

世界引擎的大部分工作针对服务端模拟和物理性能。

对于整合包和多人生存环境,请安装你的整合包/服务器设置所需的版本。


对现有世界安全吗?

世界引擎被设计为一个优化层,而不是内容模组,它不引入世界生成内容或自己的玩家拥有的方块数据。

与任何物理或核心系统模组一样,在更改模组版本之前,请备份重要世界。


性能理念

世界引擎遵循一个简单规则:

减少不必要的工作,而不是减少物理。

该项目优先考虑:

  1. 保留 Sable 的模拟行为
  2. 降低服务端刻成本
  3. 减少不必要的内存分配
  4. 更好地随大型结构和大型世界扩展
  5. 使优化可衡量、可测试

开发状态

世界引擎正在积极开发中。

随着更大的 Sable 工作负载暴露新的瓶颈,该项目仍在不断演进,因此未来可能会有额外的优化和兼容性工作。

带有日志、性能分析器捕获、重现步骤以及关于移动结构大小/数量的信息的错误报告尤其有用。


对于整合包作者

世界引擎旨在从玩法角度保持轻量,并且对于重度依赖 Sable 的整合包很有用。

它与技术型、工程型、载具、移动基地、自动化或大型多人生存整合包特别相关,在这些整合包中,物理模拟可能成为服务端刻预算的重要部分。


世界引擎 — 世界级 Sable 物理,不缩减物理本身。