MobAIOptimizer
MobAIOptimizer 是一款用于优化生物 AI 执行负载的服务器性能优化插件。
其核心机制是对生物 AI 执行过程进行动态调度与节流控制,在保证行为逻辑基本完整的前提下,降低高密度实体环境中的 Tick 压力。
插件通过运行时 Hook 实现对 AI 执行流程的精细化控制,并根据服务器运行状态进行自适应调整。
核心机制
每 Tick 执行上限控制
插件为每个服务器 Tick 设定一个可执行 AI 的最大数量(动态值):
- 当本 Tick 内已执行的 AI 数量达到上限时
- 剩余实体将跳过本 Tick 的 AI 执行
- 下一个 Tick 重新参与调度
该机制用于控制瞬时 AI 负载峰值。
单实体冷却间隔控制
插件为每个生物记录最近一次 AI 执行时间,并设定最小执行间隔:
- 若未达到冷却 Tick 数,则跳过本次执行
- 达到冷却时间后允许执行
该机制用于避免同一实体高频重复执行 AI。
动态自适应调节
插件实时监测服务器 Tick 执行耗时,并根据目标 Tick 时间动态调整:
- 每 Tick AI 执行上限
- 单实体冷却间隔
当 Tick 耗时高于目标值时:
- 减少允许执行的 AI 数量
- 增加冷却间隔
当 Tick 耗时低于目标值时:
- 提高允许执行的 AI 数量
- 缩短冷却间隔
形成基于运行负载的自适应调节机制。
数据维护机制
插件内部维护实体执行记录表:
- 使用 ActorUniqueID 作为索引
- 定期清理过期记录
- 在实体 despawn 或 remove 时即时移除数据
- 支持初始容量预留
用于保证长期运行时的数据稳定性。
调试统计功能
支持周期输出运行统计信息,包括:
- 当前动态 AI 上限
- 当前冷却间隔
- 实际执行数量
- 冷却跳过次数
- 上限节流跳过次数
- 跳过比例
- 清理数量
- 当前追踪实体数量
统计输出可通过配置开关控制。
技术实现结构
插件通过 Hook 以下函数实现控制:
- Mob::$aiStep
拦截生物 AI 执行逻辑,实现节流与冷却判断。 - Level::$tick
监测 Tick 执行耗时,用于驱动动态参数调整。 - Actor::$despawn / Actor::$remove
实体移除时清理追踪数据。
配置项说明
主要可配置参数包括:
- 是否启用优化
- 是否启用调试输出
- 目标 Tick 时间(毫秒)
- 每 Tick 上限调节步长
- 冷却 Tick 调节步长
- 清理间隔 Tick
- 记录最大存活 Tick
- 初始 Map 预留容量
配置文件位于插件目录下的 config.json。
适用环境
适用于:
- 高实体密度服务器
- 大规模刷怪结构环境
- 动物聚集区域
- 长时间运行的大型地图
- 需要平滑 AI 负载的服务器环境
点击链接加入群聊【PHE 插件交流群】:https://qm.qq.com/q/DOYQMxgWVW