留白

留白

Liubai 是一个面向大型技术基地的客户端渲染优化器。它保守地剔除完全遮挡的实体和方块实体,减少远处的次要效果,并根据配置的帧率目标调整其画质压力。

关于流白

流白(Liubai)是一款客户端图形优化模组。它会监测游戏的流畅度,并谨慎地减少由墙体后的物体、远处细节、粒子、阴影和名称标签所导致的图形处理负担。当游戏开始卡顿时,流白会逐步降低绘制远处或次要物体所花费的处理量。一旦游戏恢复流畅,它会等待性能保持稳定后,再逐步恢复细节,这可以防止设置在目标帧率附近反复切换。

流白仅更改客户端图形。它不会停止生物或实体AI、红石、合成配方或机器运作,也不会减少服务端的游戏处理或提升服务器TPS(服务器速度)。

流白可以与诸如实体剔除(Entity Culling)和机械动力(Create)/飞轮(Flywheel)等模组协同工作。

功能特性

基于游戏性能的自动调整

  • 根据目标FPS和近期游戏流畅度,自动在 正常 / 高负载 / 紧急 压力等级之间切换;
  • 等待性能保持稳定后才降低压力等级,减少频繁的切换;
  • 若游戏自身的帧率限制低于流白的目标,流白会采用较低的值,避免错误地持续处于高压状态。

对墙后物体的谨慎检测

  • 当未安装其他遮挡剔除优化模组时,流白可使用自身的检测来判断隐藏在墙后的物体;
  • 使用游戏记录的每个物体的真实可见区域,而非将所有物体视为相同大小;
  • 只有完整的实心方块才算可靠遮挡;当区块未加载、物体可见区域异常或检测结果不确定时,仍会绘制物体;
  • 默认情况下,一个物体必须被连续两次确认隐藏后,流白才会暂时停止绘制它;
  • 每帧只能执行有限次数的检测和有限的检测时间;过于复杂而无法完成的检测会延续到下一帧继续进行,不会丢弃先前可靠的检测结果;
  • 玩家移动后,流白会检查旧的遮挡墙是否仍然有效,并优先处理这些物体,以减少旧的检测结果突然全部失效时所导致的卡顿。

远处细节和大量相似的物体

  • 当游戏处于压力之下时,流白会根据远处物体在屏幕上的显示大小,处理那些几乎不可见的物体;
  • 对远处的掉落物和经验球使用稳定的每区域数量限制,减少因处理顺序变化引起的闪烁;
  • 保护重要物体,如玩家、Boss、弹射物、载具、发光或燃烧的实体,以及十字准星指向的物体;
  • 在附近的安全范围内,物体不会因为看起来太小或同类物体过多而被跳过。

粒子、阴影和名称标签

  • 在创建粒子之前判断是否需要显示远处的粒子,减少不必要的创建工作;
  • 对已存在的粒子使用建议的数量限制,并限制每帧可以添加的远处粒子数量;
  • 当游戏处于压力之下时,减少普通实体阴影和名称标签的显示距离;
  • 保护重要粒子,如爆炸、不死图腾和音爆,以及重要实体的阴影和名称标签。

设置与性能信息

  • 提供简体中文和英文的配置界面;
  • 可从ESC暂停菜单右上角的“流白设置”按钮直接打开;
  • 可选的屏幕性能面板(HUD)显示当前压力等级、工作模式、每秒未绘制物体数、检测隐藏物体所花费的时间及超时检测数、粒子状态,以及P95/P99帧时间。这些帧时间有助于了解最慢的5%和1%的帧;
  • 性能面板默认关闭,可在必要时于设置中启用。

模组兼容性

实体剔除 (Entity Culling)

默认遮挡模式为 自动:

  • 当装有实体剔除模组时,由实体剔除模组决定普通物体是否完全隐藏,流白不会重复执行相同的墙体可见性检测;
  • 未安装实体剔除模组时,流白会使用自身谨慎的可见性检测;
  • 无论哪种情况,流白都能继续处理微小的远处物体、粒子、阴影、名称标签,以及受支持模组中远处物体在屏幕上的更新频率。

已测试的实体剔除版本为 1.10.5。被实体剔除模组跳过的物体不会计入流白的性能信息,因此两个模组同时使用时,流白显示的“跳过的隐藏物体”数量可能为0。这属于正常现象。

机械动力 (Create) 和飞轮 (Flywheel)

以下版本已进行专门的支持和测试:

Create 6.0.10
Flywheel 1.0.6

当游戏处于压力之下时,流白会配合飞轮自身的规则,降低远处机器在屏幕上的更新频率。附近的机器保持原有的更新率。流白不会移除或重建飞轮用于绘制机器的物体,也不会停止机器的逻辑运算。

其他版本的机械动力/飞轮不被自动视为受支持。如果其行为与流白的预期不同,流白会禁用这项额外优化,并保持飞轮的原始行为不变,以确保游戏仍能安全启动。

黑貂 (Sable) 和机械动力航空学 (Create Aeronautics)

当前的安全兼容模式是针对以下组合制作的,并已确认这些版本可以共同启动并进入世界:

Sable 2.0.3
Create Aeronautics 1.3.0
Create 6.0.10
Flywheel 1.0.6

Iris

流白使用Iris公开提供的信息来判断游戏何时在绘制阴影。在生成阴影期间,流白会避免应用隐藏物体的常规视角规则,以降低生物、其他实体、特殊渲染方块或原版实体阴影缺失的风险。

已确认Iris可以与流白一同启动并进入世界。实际的阴影效果仍需使用不同的光影包进行单独测试,因此这并不代表每个光影包都得到完全支持。

推荐设置

  • 进入世界后,从ESC暂停菜单右上角打开“流白设置”。
  • 保持遮挡模式为默认的 自动 设置。
  • 使用实体剔除模组时,不要强制两个模组同时检测普通物体是否隐藏。
  • 如需检查优化是否生效,可临时启用屏幕性能面板(HUD)。
  • 流白不需要安装在标准专用服务器上。对于多人游戏,仅在客户端安装即可使用其图形优化功能。

配置文件:

config/liubai-client.toml

常见问题解答

我可以将流白与实体剔除一起使用吗?

可以。默认的 自动 模式让实体剔除模组决定普通物体是否完全隐藏,避免重复检测。流白则继续控制对剩余可见物体所花费的图形处理量。

这会影响机器、红石或实体逻辑吗?

不会。流白仅调整客户端图形以及受支持渲染物体在屏幕上的更新频率。它不会停止游戏逻辑运算。

为什么性能面板显示流白跳过的隐藏物体为0?

当流白与实体剔除协作时,由实体剔除模组执行可见性检测,其跳过的物体不计入流白的性能信息。当压力等级仍处于 正常 或附近没有符合条件的远处物体时,其他优化计数器也可能保持为0。

安装流白后,平均FPS变化不大是为什么?

结果取决于每个玩家的世界和整合包。流白在某些情况下可能带来显著的FPS提升,而在其他情况下提升效果可能很小甚至不明显。