搜索

0.30.1 AI 深度优化与验证

寻路采样去重、动态障碍复核、索敌节流、前后对照及逐物种回归。

修改内容

  • 有界局部寻路使用单次搜索地形快照:同一方块只取样一次,区块加载/区域所有权在该搜索内复用。快照不跨 tick、不跨实体共享,不缓存 Bukkit 方块/区块对象。单次最多采样 32,768 个方块;原有 900 个节点、水平 24 格和垂直 12 格搜索边界保留。
  • 受控路线执行前重新校验下一路点。新增障碍、挖空落脚点、危险方块变化会中止旧速度,后续重新寻路;不会为了缓存效率长期忽略地形变化。粉雪、甜浆果丛、凋零玫瑰加入危险方块。
  • 移动目标导致的重算最短间隔为 6 tick;无路时不因每次目标抖动而立即重新搜索,普通刷新间隔仍为 20 tick。跳跃途中保留已验证的地面路点。
  • 目标跨世界、坐标非有限数值或宠物已被传送远离路线时,安全终止/丢弃旧缓存,避免跨世界距离计算异常和追逐旧世界位置。
  • 主动索敌先筛原生状态及主人/宠物距离,再对近到远候选检查宠物归属、保护规则和视线。最近目标不可攻击时继续查后续候选;区域所有权始终先于实体状态读取。
  • 战斗进入攻击距离时停止原生路径一次,持续驻留不再每两 tick 重复停路;重新追击后可以再次停车。去除同轮多余目标指派。
  • 飞行/水生宠物停止受控追击时同时清除垂直残留速度;地面生物保留重力下落。蓄力表现更新为每 4 tick,战斗判定仍是原有频率,蓄力时长和伤害间隔不变。
  • 新增场景查出了嘎枝战斗后跟随被原版 Brain 抢占、熊猫特殊姿态阻碍战斗/跟随的问题。两类改用受控目标与路径;熊猫恢复行动时清理翻滚、仰躺、进食、喷嚏等临时姿态,不改基因和外观。嘎枝已休眠时不重复触发停用声音/游戏事件。
  • 末影人在白天会由原版逃光流程自行瞬移,出现刚被召回又跑远的情况;改为受控感知和导航,阻止该原生逃光逻辑抢占宠物行为。仍保留插件的正常安全召回与技能传送,没有全局取消传送事件,也不影响野生末影人。

本次新增实现仍使用标准 Bukkit 方块、实体和位置接口,复用已有的可选 Folia 区域保护桥。没有引入 NMS 或额外打包依赖,没有修改价格、宠物币、食物、外观、等级、MM 技能或管理员配置。

可复现的寻路采样对照

同一测试程序、地形、起点、终点,分别加载 0.30.0 与 0.30.1 的实际 Jar,统计 World#getBlockAt 次数。

场景 0.30.0 读块次数 0.30.1 读块次数 降幅 两版路径点数
小体型绕墙 1,731 573 66.9% 23 / 23
略宽于一格的生物绕墙 18,572 1,226 93.4% 25 / 25
宽 3、高 6 的大体型绕墙 157,868 3,985 97.5% 27 / 27
终点被连续墙隔断 7,249 2,049 71.7% 4 / 4(部分路径)

这是特定用例的取样次数对照,不是实际整服 CPU、TPS 或多人压测提升比例。独立新搜索和路点执行检查仍读取最新地形,不能将该缓存理解为永久方块缓存。

复现程序:.tools/ai-deep/PathReadProbe.java;数据:baseline-path-reads.csv、optimized-path-reads.csv。

单元测试

兼容下限 1.21.11 API 和 Paper 26.2 API 分别通过 566 项测试,0 失败、0 错误。新增覆盖单次读块去重、独立搜索刷新、未加载区块拒读、动态封路及恢复、挖空/危险落脚、移动目标重算限频、跨世界旧路线、危险植物、权限查询排序、攻击距离停车频率、垂直速度清理、蓄力表现节流、嘎枝重复停用抑制和熊猫临时姿态恢复。

服务端回归

三批发布测试及僵尸村民追加测试使用同一个 Jar,SHA-256:

5322C8868D065C690E10C571970D1085E8CD6A745D5523C2F5D9B6D0ED2366A6

  • Paper 26.2 的 91 种全部执行完毕:首轮 909/910 项通过,90 种为 10/10。僵尸村民首次“连续行走跟随”未通过:最近已到主人 0.584 格,但统计行走距离为 0,不符合本测试的步行判据;不能仅因已接近主人就把这一项改成通过。
  • 僵尸村民随后单独重复 7/7 轮、70/70 项通过,再按“僵尸鹦鹉螺 → 僵尸村民”的相邻顺序重复 7 轮,两种合计 14/14 次、140/140 项通过。僵尸村民追加共 14 次均正常;首轮现象尚未稳定复现,保留原始失败行,不宣称偶发问题已完全定位/修复。
  • 嘎枝、末影人、熊猫各重复 7 轮,合计 21/21 轮、210/210 项通过。熊猫分别覆盖 WORRIED、WEAK、LAZY、BROWN、NORMAL、PLAYFUL、AGGRESSIVE 七种基因。末影人日志仅有正常安全召回,没有复现修复前的逃光乱传送。
  • Folia 26.2 最终 Jar 针对嘎枝、末影人、末影龙、熊猫、潜影贝复测,5/5 种、50/50 项通过。此前候选包 11 种通过的记录仅作过程证据,不冒充最终包全物种 Folia 验证。

每只检查原有九项:连续跟随、主动索敌、隔墙绕障、坐下停战、远距召回、移动助战、主人保护、旁观保护、地形保护;再增加第十项“跟随过程中放墙,拆墙后恢复”。新阶段在开始后第 10 tick 放墙、第 100 tick 拆墙,至 300 tick 检查实际移动及到达距离。Paper 目标 tick rate 200,Folia 使用正常 20 TPS;均不是生产多人负载压测。

本轮查错过程

初版全量测试暴露嘎枝动态跟随、熊猫战斗/跟随和末影人召回问题。补齐嘎枝/熊猫接管后,三类重复测试仍复现末影人原生逃光随机传送,日志显示从测试平台传到低处,再被召回后继续随机传走;补齐末影人感知接管后,最终重点 21 轮全部通过。临时调试探针有过一次字段名写错而中止的运行,该运行不计入结果,探针从未放进产品或正式服。

原始记录位于 .tools/ai-matrix/: release-deep-paper-results.csv、release-deep-focus-results.csv、release-deep-folia-results.csv、release-zombie-villager-retest-results.csv、release-neighbor-retest-results.csv,对应 *-console.log。失败和通过记录均保留。

Paper 首轮逐物种明细

类型 首轮通过 有效命中 投射物
ALLAY 10/10 32 0
ARMADILLO 10/10 29 0
AXOLOTL 10/10 31 0
BAT 10/10 32 0
BEE 10/10 32 0
BLAZE 10/10 14 15
BOGGED 10/10 17 17
BREEZE 10/10 15 16
CAMEL 10/10 27 0
CAMEL_HUSK 10/10 26 0
CAT 10/10 28 0
CAVE_SPIDER 10/10 29 0
CHICKEN 10/10 28 0
COD 10/10 32 0
COPPER_GOLEM 10/10 29 0
COW 10/10 28 0
CREAKING 10/10 29 0
CREEPER 10/10 11 0
DOLPHIN 10/10 31 0
DONKEY 10/10 26 0
DROWNED 10/10 17 17
ELDER_GUARDIAN 10/10 12 0
ENDERMAN 10/10 29 0
ENDERMITE 10/10 28 0
ENDER_DRAGON 10/10 12 12
EVOKER 10/10 12 0
FOX 10/10 28 0
FROG 10/10 21 0
GHAST 10/10 12 12
GIANT 10/10 29 0
GLOW_SQUID 10/10 30 0
GOAT 10/10 16 0
GUARDIAN 10/10 12 0
HAPPY_GHAST 10/10 31 0
HOGLIN 10/10 29 0
HORSE 10/10 26 0
HUSK 10/10 28 0
ILLUSIONER 10/10 17 17
IRON_GOLEM 10/10 26 0
LLAMA 10/10 17 20
MAGMA_CUBE 10/10 24 0
MANNEQUIN 10/10 29 0
MOOSHROOM 10/10 28 0
MULE 10/10 26 0
NAUTILUS 10/10 31 0
OCELOT 10/10 28 0
PANDA 10/10 29 0
PARCHED 10/10 17 17
PARROT 10/10 32 0
PHANTOM 10/10 31 0
PIG 10/10 28 0
PIGLIN 10/10 29 0
PIGLIN_BRUTE 10/10 29 0
PILLAGER 10/10 12 12
POLAR_BEAR 10/10 26 0
PUFFERFISH 10/10 30 0
RABBIT 10/10 29 0
RAVAGER 10/10 23 0
SALMON 10/10 31 0
SHEEP 10/10 28 0
SHULKER 10/10 11 15
SILVERFISH 10/10 28 0
SKELETON 10/10 17 17
SKELETON_HORSE 10/10 26 0
SLIME 10/10 24 0
SNIFFER 10/10 30 0
SNOW_GOLEM 10/10 24 25
SPIDER 10/10 25 0
SQUID 10/10 30 0
STRAY 10/10 17 17
STRIDER 10/10 16 0
SULFUR_CUBE 10/10 24 0
TADPOLE 10/10 32 0
TRADER_LLAMA 10/10 17 20
TROPICAL_FISH 10/10 32 0
TURTLE 10/10 29 0
VEX 10/10 32 0
VILLAGER 10/10 29 0
VINDICATOR 10/10 28 0
WANDERING_TRADER 10/10 29 0
WARDEN 10/10 28 0
WITCH 10/10 14 15
WITHER 10/10 15 16
WITHER_SKELETON 10/10 28 0
WOLF 10/10 28 0
ZOGLIN 10/10 29 0
ZOMBIE 10/10 33 0
ZOMBIE_HORSE 10/10 26 0
ZOMBIE_NAUTILUS 10/10 31 0
ZOMBIE_VILLAGER 9/10 33 0
ZOMBIFIED_PIGLIN 10/10 30 0

Folia 最终包专项明细

类型 通过
CREAKING 10/10
ENDERMAN 10/10
ENDER_DRAGON 10/10
PANDA 10/10
SHULKER 10/10

更新方式与验收边界

使用正常停服后的替换流程,保留旧 Jar 和整个 LiPet 数据目录备份;本次不需要删除或重置任何配置。正式服正常启动后核对 Enabling LiPet v0.30.1-SNAPSHOT,不能用 /lipet reload 代替 Java 代码更新。

隔离服测试是实际服务器实体与服务端代理玩家驱动的自动验证,不等于真实客户端动画、第一人称骑乘、任意地形、全部 MM/ModelEngine 变种或生产多人负载验收。0.30.0 的 逐物种基础报告 保留为历史记录,不用其结果冒充本版复测。