跳到正文

Adaptive Optimization(reborn)

作者:col9kam

一个根据系统负载和游戏内状况动态优化 Minecraft 性能的模组。

收藏

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。

🧠 自适应优化 — 为 Minecraft 带来真正的自适应性能

✅ 自适应优化现已正式稳定

自适应优化已正式进入稳定开发阶段。

在对观察、性能分析、持久化、工作负载归因和性能测量系统进行大规模内部重构之后,该模组现在拥有了比以往预览版更强大、更可靠的基础。

自适应优化不再只是一个围绕预定义优化行为构建的实验性概念。

它正在成为一个真正的自适应优化平台,旨在实现:

观察 → 识别 → 诊断 → 实验 → 测量 → 学习 → 改进

当前稳定版本已经能在 Minecraft 中提供真实的性能提升,而未来的预览版将继续扩展其自主优化能力。


⚠️ 重要开发说明

我的模组是在 AI 的大量帮助下开发的。

我仍在学习 Java 和 Minecraft 模组开发,因此即使自适应优化现在被认为是稳定的,这并不意味着不可能出现 bug 或异常兼容情况。

稳定意味着当前基础已经达到了足够可靠的水平,可以正常使用并持续开发,而无需不断重建核心架构。

我仍然建议在你自己的整合包中测试新版本,然后再将其用于重要的世界,尤其是在非常庞大或特殊的整合包中。

如果你遇到:

  • 性能回退
  • 兼容性问题
  • 异常行为
  • 卡顿
  • 崩溃
  • 或者自适应优化似乎让某些情况变得更糟

请报告它们。

真实世界的报告对改进系统非常有用。


⚙️ 当前版本

目前可用于:

Forge 1.20.1

计划未来支持更多 Minecraft 版本和模组加载器。


🚀 自适应优化实际做了什么

🧠 自适应运行时优化

自适应优化会持续观察 Minecraft 在你游玩时的行为。

AO 并不完全依赖静态的调整列表,而是构建关于当前工作负载的运行时信息,并利用这些信息来确定可能存在优化机会的地方。

不同的整合包可能表现出完全不同的行为。

AO 正是围绕这一现实设计的。


🔍 真实工作负载检测

自适应优化现在可以区分许多不同类型的工作负载,包括:

  • 原版 Minecraft
  • 模组化工作负载
  • 单个模组
  • 类和方法
  • 客户端工作负载
  • 服务器工作负载
  • 实体
  • 寻路
  • 计划任务 Tick
  • 区块相关工作
  • 网络
  • I/O
  • 渲染
  • 命令
  • 文件系统活动
  • 锁竞争
  • CPU 压力
  • 内存压力
  • 垃圾回收
  • 未知或未分类的工作负载

如果证据不足,模组无需假装自己理解了某件事。

必要时,工作负载可以保持为 UNKNOWN,直到 AO 收集到更充分的信息。


🎯 原版 / 模组归因

AO 可以判断观察到的工作负载属于:

  • Minecraft 原版
  • 某个特定模组
  • 某个特定子系统
  • 某个语义工作负载组
  • 或未知来源

这样一来,优化器就能更准确地了解究竟是什么在消耗资源,而不是仅仅根据全局 FPS 或 Tick 数值作出反应。


📊 高级运行时性能分析

性能分析系统已进行了大幅重构。

自适应优化可以跨多个时间窗口分析工作负载行为,并判断其属于:

  • 新出现
  • 持续存在
  • 正在消失
  • 偶发出现

它还会基于调用栈进行归因,将相关工作负载归为一组,而不是分散到数十个独立方法中。

这让 AO 能够更准确地识别实际的性能模式。


⏱️ 真实服务器 Tick 测量

自适应优化现在加入了完善的服务端 Tick 耗时测量。

AO 会监测 Forge 服务器的 Tick 边界,同时将 Minecraft 自带的内部 Tick 计时器用作独立参考。

这两项测量会彼此独立,以便 AO 检测以下两者之间的差异:

  • Minecraft 的核心 Tick 工作负载
  • 围绕其运行的额外 Forge/模组工作负载

这让自适应优化能够更清晰地监测:

  • MSPT
  • Tick 不稳定性
  • 服务端工作负载峰值
  • 模组化服务器负载
  • 模拟速度下降

该监测系统经过专门设计,运行开销极低。


🧪 因果性能测量

最重要的架构调整之一,是新增了实验性测量系统。

自适应优化现在包含多个独立的测量阶段:

PRE

优化前的性能。

EXPERIMENT

候选优化生效期间的性能。

RECOVERY

还原优化后的性能。

这一架构正在逐步搭建,最终 AO 将能够判断某项优化是否确实带来了改善,而不是看到性能发生变化,就认定这是优化造成的。


🛡️ 工作负载可比性

Minecraft 的性能会不断变化。

进入另一个维度、生成地形、垃圾回收、另一个模组开始活动,或分析器丢失采样,都可能使两次性能测量无法公平比较。

自适应优化现在能检测许多此类情况。

示例包括:

  • 工作负载变化
  • 目标消失
  • 世界变化
  • 维度变化
  • 资源重载
  • 生命周期变化
  • CPU 压力变化
  • 垃圾回收
  • 堆内存变化
  • 锁争用
  • 网络突发
  • 采样质量下降
  • 观测缺失

如果某项实验不可信,AO 可以将其标记为:

无定论

而不是学习错误的信息。


🧬 自适应与基于进化的优化

自适应优化包含旨在随时间生成、评估、记忆和改进优化策略的系统。

长期目标并不只是:

启用优化 X。

相反,AO 正朝着以下方向发展:

判断当前游戏需要什么,测试可能的解决方案,对其进行测量,拒绝糟糕的方案,保留良好的方案,并改进未来的决策。

现有的自适应系统正逐步接入更新且可靠得多的观测与因果评估架构。


💾 持久化学习

自适应优化可以在会话之间保留有用的信息。

其持久化系统也已重建并修正,以提供更安全的长期状态处理。

目标是让 AO 最终能够记住诸如以下内容:

  • 有效的策略
  • 失败的策略
  • 它们影响了哪些工作负载
  • 涉及了哪些模组
  • 哪些环境产生了良好结果
  • 哪些候选方案不应再次尝试

这使优化知识随时间变得更有用,而不是每次会话都从零开始。


🎮 专注于真实游戏稳定性

自适应优化并非只为追求尽可能高的 FPS 数值而设计。

其更大的目标是改善 Minecraft 的整体稳定性。

这包括:

  • 帧时间一致性
  • Tick 稳定性
  • 减少工作负载尖峰
  • 减少卡顿
  • 更好的响应性
  • 在大型整合包下表现更好
  • 长时间游戏会话更稳定

一个平均 200 FPS 但不断卡死的 Minecraft 实例并没有真正得到优化。

AO 专注于完整的性能体验。


🧩 为模组化 Minecraft 而设计

自适应优化在开发时特别考虑了复杂的模组环境。

AO 不会假设每个工作负载都是原版行为,而是可以观察模组归属并识别模组化行为。

随着整合包越来越大、多个系统开始相互交互,这一点变得越来越重要。


🤝 自适应优化与我的其他优化模组

Adaptive Optimization 并非旨在让我的其他优化项目变得过时。

相反,长期目标是打造一个优化生态系统。

例如以下项目:

Sync Fix

针对其领域内与刻相关的系统、同步系统及其他工作负载进行专项优化。

Chunks Optimization

深入优化区块加载、生成、一致性以及大规模区块工作负载。

Logs Fixer

减少不必要的日志开销,并防止过量日志刷屏影响性能。

Mods Fixer

检测并修复根源位于第三方模组中的问题,包括兼容性问题,以及模组行为低效或异常的问题。

Future Render Optimization

针对渲染工作负载进行专项优化。

当 Adaptive Optimization 发现互补的优化机会时,仍可继续优化这些相同领域中的其他部分。

我们的目标并非人为限制 AO。

相反:

专项模组深入优化各自的子系统,而 Adaptive Optimization 则提供额外的自适应跨系统优化层。

各系统应协同工作,而不是盲目地重复执行相同的优化。


🔬 安全优化理念

Adaptive Optimization 并非旨在通过简单禁用功能或激进地跳过游戏逻辑来提升性能。

该项目围绕以下更安全的优化技术进行开发:

  • 缓存
  • 记忆化
  • 去重
  • 批处理
  • 合并处理
  • 对象复用
  • 改进调度
  • 延后适当的工作
  • 正确失效
  • 快速路径
  • 安全拦截
  • 受控重写

未来的自主优化系统还必须能够在候选方案不安全或无效时予以拒绝。


🛡️ 提升性能,不破坏游戏体验

如果一项优化会破坏游戏,那它就毫无用处。

新架构将以下几个问题分别处理:

性能是否有所提升?

这项优化是否安全?

游戏是否仍能正常运行?

未来的自主实验会先分别评估这些方面,再决定是否将某项优化认定为可信。

实验结果可能包括:

  • ACCEPT
  • REJECT
  • INCONCLUSIVE
  • ABORTED

证据不明确时,这能让 AO 采取更审慎的做法。


🔮 接下来是什么?

稳定版并不意味着开发已经结束。

Adaptive Optimization 的开发路线图仍然十分宏大。

接下来的预览版将重点打通已经构建完成的各个系统。


🧪 即将推出 — 自主实验协调器

下一个重要阶段是中央实验协调器。

它将负责安全地管理:

观察
↓
基线测量
↓
应用候选方案
↓
稳定
↓
实验测量
↓
回滚
↓
恢复测量
↓
评估

它还会确保实验不受崩溃和重启影响,避免未完成的实验悄无声息地变成永久优化状态。


🧠 即将推出 — 真正的因果学习

实验协调器经过验证并证明可靠后,自适应学习系统就能开始获取可信的因果结果。

不再只是学习:

我做了某件事之后,性能发生了变化。

AO 将逐步学会:

在这些条件下,这个特定候选方案提升了这类可比工作负载的表现,并通过了必要的安全检查。

这是本项目最重要的目标之一。


🧬 即将推出 — 自动生成候选方案

后续预览版本将继续推动 AO 超越预定义的优化列表。

我们的目标是让 Adaptive Optimization 最终能够自行发现工作负载,并自动生成安全的优化候选方案。

它应该能够找到那些并非专门针对某个特定模组或整合包编写的优化机会。


🌐 未来规划 — 共享自适应技术

为 AO 开发的自适应架构,未来或许也会应用到我的其他几款优化模组中。

这样一来,每个专用优化器都能在自己的领域内学习和调整,而 Adaptive Optimization 则负责更广泛的跨系统决策。

我们的长期愿景是构建一个由多个优化系统组成的生态,让它们能够协同工作,而不是各自为战。


⚠️ 重要说明

Adaptive Optimization 并非即时提升 FPS 的工具。

实际效果会因以下因素而异:

  • 硬件
  • Minecraft 设置
  • 整合包
  • 当前工作负载
  • 地图
  • 光影
  • 其他优化模组

某些情况下提升可能很明显,另一些情况下变化则可能较小。

我们的目标不是伪造性能提升。

而是在存在安全且可测量的优化机会时,切实提升 Minecraft 的运行表现。


❤️ 致谢

感谢 TishinaCentral 对 Adaptive Optimization 进行测试并展示:

https://youtu.be/oajlZEfVfnc


💬 Discord

你可以通过此链接加入 Discord 服务器:

https://discord.gg/9WZDxVY4m

Bug 报告、测试结果、兼容性报告和反馈都能为改进项目提供很大帮助。


☕ 支持本项目

支持项目开发:

buymeacoffee.com/col9kam


⚙️ 关于开发环境

从版本 8.3.7 起,Adaptive Optimization 正式迁移到了 IntelliJ IDEA。

项目早期版本使用 MCreator 进行原型开发,但目前的系统已改为独立编写,并发展成一个规模大得多的 Java 项目,拥有专门用于以下方面的系统:

  • 观测
  • 性能分析
  • 归因
  • 持久化
  • 自适应参数
  • 优化策略
  • 运行时测量
  • 实验评估
  • 安全性
  • 学习

这次迁移让项目在架构、性能、兼容性和测试方面拥有了更多掌控力。


📖 项目的起点

早在 2024 年,我启动这个项目时,还不知道如何才能让这个想法成为现实。

我最初的目标是打造一款能够适应 Minecraft 的优化模组,而不只是简单地再添加一份预设优化项列表。

当时,我的开发知识非常有限,AI 开发工具也远不如今天强大。

项目遭到了拒绝,我也被告知需要积累更多开发经验。

但我没有放弃这个想法,而是继续学习。

2025 年 10 月 11 日,我决定用自己积累的 Java 知识,以及当时逐渐推出的新一代 AI 工具,再试一次。

起初,我用 Copilot 辅助开发。后来,我也尝试了 ChatGPT。最开始,它还不够强大,无法真正帮我实现心中的构想;但随着模型和工具经历几次重大改进,它在开发中的帮助越来越大。

最大的转变,来自我发现了 Codex。

我决定购买它的一个套餐,并开始在项目中大量使用。直到今天我仍在使用它,它极大地提升了开发速度,也让我能够取得更多进展。

这些工具帮助我逐步摆脱 MCreator,将项目迁移到 IntelliJ IDEA,理解真正的 Forge 项目结构,更深入地排查问题,并不断重建 Adaptive Optimization,让它远比最初的版本先进。

我仍然认为自己是个初学者。

AI 对开发帮助很大,但我也一直在测试、审查、重新设计、调查故障、做架构决策,并从每一次问题中吸取经验。

Adaptive Optimization 已经发展到能够比项目早期版本更有效地提升性能,但我还有很多计划尚未完成。

而 Adaptive Optimization 只是个开始。

完成它之后,我计划继续开发 Adaptive Mods 中的其他优化模组。等它们足够成熟后,我希望将它们移植到最重要的 Minecraft 版本上,覆盖 1.12.2 到游戏的最新版本。

完成这些优化项目后,我还想开发几款规模更大的玩法模组。

其中一款是 Re:Loop,另一款则是更具野心的项目,围绕一个奇异的维度展开。那里充满走廊和区域,并会随着玩家不断深入而持续变化。

但我的长远目标不止于 Minecraft。

为这些模组开发的技术、构想、实验系统和自适应优化概念,最终都将成为一款免费优化应用程序的基础。

我的构想是,性能优化最终不应只局限于 Minecraft。

我想探索这些系统未来是否能帮助优化 PC 本身、其他游戏,甚至其他类型的设备。

我知道这一切都需要投入大量工作,所以我会循序渐进、耐心推进,而不是试图一口气完成所有事情。

我会继续分享预览、实验、进展更新和新想法,让大家见证 Adaptive Optimization 不断成长,并逐渐看到 Adaptive Mods 最终想要实现的一切。

Adaptive Optimization 的诞生,是因为我坚持把一个最初看起来远超自己能力范围的构想做下去。

如今,这个最初的构想不再只是一个优化模组,而是成为了一个更宏大项目的起点。


🧠 总结

Adaptive Optimization 已不再只是一个试图动态优化 Minecraft 的原型。

它现已正式进入稳定阶段,核心优化、观察、性能分析和测量系统已能在真实的 Minecraft 环境中正常运行。

开发现正朝着下一个目标迈进:

让这些系统变得越来越自主。

Adaptive Optimization 的开发目标是:

观察 Minecraft、理解其工作负载、发现优化机会、验证优化是否真正有效、拒绝不安全或无用的更改、记住成功的策略,并随着时间推移不断提升优化能力。

Adaptive Optimization 并未就此结束。

稳定阶段是迈向未来的基石。

 

常见问题

Adaptive Optimization(reborn) 支持哪些 Minecraft 版本?

Adaptive Optimization(reborn) 支持 Minecraft Java 版 1.20.1,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。

Adaptive Optimization(reborn) 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分

col9kam 的其他作品

查看全部 →