陆鸣

自由开发者 · JavaKit 作者 · ⭐ 2,347 · 敏感词幸存者

诱饵水晶策略:我是如何用 Python 分析 Boss AI 的

在 Minecraft 里同时打凋零和末影龙,微软官方的规则是:双 Boss 血量为原版三倍,战斗中阵亡无法复活,必须一次通关。我们的队伍“星帆重建组”由方块鱼带队,我在其中负责战术分析和辅助脚本。这是我从零开始用 Python 拆解 Boss 行为、发现“诱饵水晶策略”、并和队友们一起把它打磨成实战方案的全过程。

从团灭到数据

训练第一周,我们连一只 Boss 都打不死。李哥不会疾跑加跳跃,每次躲龙息都掉进末地虚空。老严背包里塞了六组金苹果,负重超标跑不动。小赵反应最快但太爱近战莽,被凋零炸飞无数次。方块鱼一个人在语音里同时指挥四个人,嗓子喊哑了两天。

第五次团灭之后,我决定不再凭感觉打。我在本地服务器里用命令方块生成了凋零和末影龙的复制体,然后用 Python 写了一个简单的日志工具,记录战斗中每个 tick 的 Boss 位置、目标选择、技能释放间隔。数据跑了一晚上,第二天早上我看着输出,突然注意到了一个反复出现的模式:凋零在索敌时,会优先攻击“可破坏方块”——末地水晶被它判定成了目标。

这意味着如果我们故意留下几颗水晶不拆,凋零的骷髅头轰炸就会误伤末影龙。两只 Boss 会互相伤害。玩家的主要工作不再是硬扛输出,而是走位、诱导和生存。

# 凋零目标选择逻辑的简化模拟
def wither_target_priority(nearby_entities, nearby_blocks):
    # 凋零优先攻击可破坏方块(包括末地水晶)
    for block in nearby_blocks:
        if block.is_destructible and block.type == 'end_crystal':
            return block
    # 其次攻击玩家
    return nearest_player(nearby_entities)
                

诱饵水晶策略的四阶段

基于这个发现,我设计了一套四阶段战术:

🎯 诱饵水晶策略 v2.4

第一阶段 · 清场留饵:四人集火清理七颗末地水晶,故意留下两颗。方块鱼牵制末影龙,小岑控制凋零位置。
第二阶段 · 诱导互殴:将凋零引到龙池正下方,利用凋零的骷髅头轰炸末地水晶,溅射伤害削减末影龙血量。全队切换防守阵型,专注生存和走位。
第三阶段 · 击杀凋零:当双 Boss 血量被互相消耗至 50% 以下时,方块鱼和小岑集中击杀凋零。我负责用脚本实时监控双 Boss 血量比,触发语音播报。
第四阶段 · 屠龙:凋零阵亡后,全队用床炸掉最后两颗水晶,末影龙无法回血,集火收割。

方块鱼第一次听到这个战术时,在语音里沉默了五秒,然后说:“你是说,让 Boss 打 Boss?”我说对。他又沉默了五秒,说:“这大概是程序员打游戏的方式。”小岑在后面补了一句:“我服了。”

从 5% 到 40%

战术很美,执行是另一回事。我们把成功率从百分之五练到了百分之十五,然后是百分之二十五,最后稳定在百分之四十左右。再也上不去了,因为三倍血量双 Boss 的容错率低得可怕——任何一个队友的微小失误都会导致连锁团灭。

最接近成功的一次,末影龙只剩最后一格血,李哥按错了键从高台上摔了下去,直接摔死。少了一个人的火力,末影龙回了一口血,全队团灭。那天晚上李哥在语音里沉默了整整十分钟,然后说了一句“明天继续”。第二天他买了一个新键盘。

方块鱼把我们训练的录像剪成视频发在 B 站上,标题是《我带五个程序员打 MC 是为了让他们夺回代码》。视频最高播放量过两百万,弹幕里刷满了“泪目”“J**a”“404”。

4 月 2 日:十一分四十三秒

正式挑战那天,Twitch 直播间同时在线人数突破一百万。倒计时归零,末影龙的咆哮和凋零的嘶吼同时炸开。第一阶段顺利,第二阶段末影龙提前狂暴,全屏龙息覆盖。李哥血量见底,小赵护甲碎裂。我在语音里吼了一句:“提前进入第四阶段!现在就炸水晶!”

我从背包里掏出最后三张床,冲进龙池正下方的死亡区域。末影龙正在俯冲,巨大的黑色翅膀遮蔽了整个屏幕。我把三张床一字排开,算准时机同时引爆。爆炸的冲击波把我的视角炸得剧烈晃动,血量从满格掉到两颗心。但末影龙的血条从百分之十八直接被打到百分之五,水晶被全部摧毁,它无法回血。方块鱼在击杀凋零的瞬间,把下界之星扔向末影龙——它一头撞上了残留的火焰粒子效果,最后一丝血量烧干了。

紫色光柱从天而降。双 Boss 同时击杀。十一分四十三秒。

我摘掉耳机的时候,手还在抖。李哥趴在键盘上哭了出来。老严眼眶红了。方块鱼在直播间里吼了一句:“我们赢了!”

那一刻我知道,JavaKit 的两千三百四十七颗星,以及星帆科技丢失的那四个月 commit 历史——它们都要回来了。

—— 陆鸣,2028年3月28日,湖南老家书房。
保温杯上又多了一行:床炸末影龙,下界之星补刀。

评论 (8)

🐟
方块鱼2028-03-28 14:22
战术分析满分,执行团灭回忆满分。那场末影龙剩一格血结果李哥摔死的录像我至今没敢发出来……不过说真的,没有你那套脚本,我们可能现在还在第一阶段无限循环。程序员打游戏的方式虽然离谱,但有用。
回复
🐼
林子昂2028-03-28 15:10
陆哥,你那个 Python 脚本的语音播报功能太好用了。每次听到“凋零血量 30%,末影龙血量 45%,建议维持防守阵型”的时候,我都有一种在打副本的错觉。方块鱼后来把你的脚本封装成了一个 MC 辅助 Mod,叫“龙鸣助手”,已经在战队内部用了。
回复
老严2028-03-28 16:44
作为全队唯一一个背包里塞了六组金苹果的人,我必须为自己辩解一句:那些金苹果最后在第三阶段救了小赵一命。不过我承认,陆鸣在第N次团灭后私聊我那句“严哥,负重会影响疾跑速度,你知道吗”彻底改变了我的游戏观。
回复
🇲🇾
Wei2028-03-28 18:05
我在吉隆坡看的直播,延迟 200ms,心跳比打末影龙还快。方块鱼扔下界之星的那一下,我公寓楼下刚好有辆摩托车炸街,我一哆嗦把水杯打翻了。后来我看了陆哥的战术文档,用 Figma 给它配了一套可视化流程图——现在挂在我们战队的 SourceWeave 仓库首页。
回复
🌱
陈小满2028-03-28 21:30
陆哥,我正在看方块鱼的录像学战术。明年年度挑战赛我要参加,现在已经在本地服务器练第三阶段了。你的 Python 脚本我 fork 了一份,加了一个学生优惠版的简化配置——把金苹果换成了面包,因为我在生存模式里囤不起金苹果。
回复
方槐2028-03-29 03:15
Luming, I've never played Minecraft in my life, but I read your tactical analysis with the same focus I'd give a distributed systems paper. The "lure crystal" concept — redirecting an enemy's strength against another enemy — is basically a load balancer attack pattern. You wrote a game script and ended up writing a systems paper. — Fang Huai
回复
🎮
一个路过的 MC 速通玩家2028-03-30 11:22
作为速通圈的人,我想说:双 Boss 混战在民间早有人尝试过,但三倍血量加协同狂暴 AI 的版本,你们是全球首杀。诱饵水晶策略已经被收录进 MC 社区战术百科了,条目名是“Luming's Decoy”。你们程序员搞起游戏来,比职业玩家还可怕。
回复
💻
那个买新键盘的李哥2028-03-31 08:50
新键盘是红轴的。我把摔死那段的录像设成了屏保,每天上班前看一遍,提醒自己别再按错键。谢谢陆鸣没有在文章里写我团灭了多少次——其实我自己数过,四十七次。但我们现在有星标认证了,值了。
回复