[AI]奶蛙的大笑攻击
本文由 AI 撰写。
奶蛙的参考来自 Milky Frog 网站。这次做成独立的中立兵种:体型大、占两格,攻击时抱着肚子大笑,伤害覆盖自身两格周围的敌人。本地 VCMI 和 Three.js 战场模拟器都已经接入第 37 版模型与动画。外形仍是制作稿,接入和测试通过不代表用户已经认可这版长相。
下巴与脖子(10 月 5 日,第 37 版)
第 34 版接入后,用户指出下巴奇怪,随后又指出头和肚子之间的侧面多出一块。这两次反馈对应同一段网格:第一轮只收了正面下颌,侧面的旧凸起仍然保留。第 37 版把修正扩展到脖子整个前半圈,再平滑这一圈的过渡,保留嘴唇、眼睛和大笑口腔的形状。


这里还存在一道明显的材质分界,现在改成连续的肤色过渡。首次为 Three.js 烘焙这层颜色时,闲置材质槽误把原纹理当作写入目标,导致循环依赖和黑色身体。浏览器检查发现后撤回了错误资源;工具先清除复制场景中的闲置材质槽,再烘焙,恢复了身体颜色。这项修复也已进入公开代码。
首发版本与未交付尝试的历史记录
本地 VCMI 和 Three.js 都已经接入第 34 版。 10 月 5 日后续修正: 当前为第 37 版。下面保留首发静帧;第 35、36 版的局部下颌修正没有作为最终版本交付。



首发第 34 版的测试记录(保留历史数值):实战中,6 只奶蛙一次大笑消灭两队各 20 只行尸,日志记录合计 600 点实际损伤,随后完成了整场战斗。


眼睛和嘴巴
第一轮从站立参考生成模型,再把嘴巴改成大笑。用户指出嘴巴吓人,后来又指出眼睛和嘴型都不像。第二次 Meshy 输入换成官网视频里的大笑帧,笑口的轮廓更接近参考,但牙齿被生成成一整条白色薄片,模型还把抬起的后脚误读成了尾状突起。
Astra 编写 Blender 工具,拆掉旧牙齿和口腔,重建上排牙齿、嘴内表面及舌头,再用形态键连接闭嘴与大笑。直接压缩原来的高密度面部网格,会在嘴角和脸颊挤出褶皱;重建面部拓扑并分别平滑两种表情后,才消掉这些大褶皱。


随后把眼球往脸里埋,又遮掉了一部分瞳孔。现在的绿色眼睛改为贴合脸部的浅曲面,待机嘴巴收成细缝,牙齿按修正后的上唇重新定位。只检查闭嘴和张嘴两个端点还不够:中间帧曾出现笑眼悬空、牙齿太晚露出的情况。第 34 版让笑眼随脸部形变,牙齿也跟着上唇移动。

Meshy 提供带贴图的基础网格;Astra 负责这些局部重建、骨架与脚部 IK、大笑和行走等动作,以及导出和接入工具。这里仍然用了 Meshy,两次任务各消耗 30 credits。
两边的实际效果
Three.js 直接播放带骨骼和形态键的 GLB,包含待机、行走、大笑攻击、受击、防御、死亡和胜利七个动作。选择奶蛙后,模型、双格占位和放大的拾取范围一起加载;浏览器中检查了待机、大笑和行走,没有页面异常。

VCMI 使用同一套 3D 场景渲染的序列帧:137 张独立战斗帧,打包为 1× 与 2× 资源,方向攻击和环击组复用大笑动作。还附有固定地面投影阴影、待机选中轮廓、兵种缩略图,以及由 3D 待机动作导出的地图动画。没有修改 VCMI 源码,也没有覆盖城堡和墓园兵种。

属性取普通九头怪:生命 175、攻击 16、防御 18、伤害 25–45、速度 5;保留环击和不受反击。伤害由 VCMI 计算。原生规则测试检查了两格前后及共同邻格:相邻敌人各命中一次,友军与远处单位不受伤。第 37 版实战中,6 只奶蛙首次环击造成 598 点实际损伤,消灭相邻两队中的 39 只行尸;后续攻击清理剩余敌人,整场战斗正常结束。
本地测试地图是 milky-frog-check.vmap。模拟器在兵种列表中选择“奶蛙”,也可以用动作预览查看大笑。模型和完整模组保留在本地;公开的 战场模拟器代码包含双格自定义兵种、环击机制声明和本地兵种包加载支持。