我正在制作 SOFT(Survival Of the Fittest: Thrones),一款免费的中世纪沙盒 RPG,使用 Godot 4:你从一个毫无背景的角色开始,手持一把促膝棒和几枚硬币,招募同伴,接任务,甚至可能成为一名领主。这是一个个人项目,我使用 AI 处理代码和艺术,所以想分享战斗动画的实现方式,因为那部分经历了最多的试错。

艺术流程:我先把战斗角色绘制为静态图,然后使用 Veo 对挥击、格挡、闪避、跌倒进行动画制作,使用静态图作为起始帧。脚本将视频切分为帧,抠出背景,并将亮度与第一帧对齐,防止在站立精灵上闪烁,最后将其打包进纹理集,并附带一个小元数据文件(锚点、时长、击中帧)。战斗时,动画会覆盖在单位上,结束后静态图会淡回。

难点在于武器。动画是基于一把剑生成的,但游戏中角色可能携带斧头、锤子或匕首。因此脚本会追踪剑在动画中的位置(把手和剑尖放在每帧),并在游戏中沿着这条线绘制角色实际使用的武器。追踪在布料和皮革上效果很好,但在 mail(链甲)和 plate(板甲)上则失败:光亮的盔甲会被追踪器误认为是剑,所以我为这些武器手动逐帧放置剑。如果有人有更好的技巧,我很想听。

另一个教训:网页版构建。所有这些绘制的帧导致一个包超过了 itch.io 的 200 MB 文件限制。我把艺术拆分为三个包,在游戏启动后分别下载,这样首次加载不超过 90 MB,动画在你在地图上时加载。

代码大部分使用 Claude 编写,而我负责设计、测试和审查。之所以能运作,是因为每条发现都会在代码改动前先核对,且每次改动都会有测试以及截图或简短视频,再放入构建。

如果对流程的任何部分有疑问,我很乐意解答。游戏免费在浏览器中玩:https://gadavra.itch.io/soft