为经典小游戏 Grenade Brothers 添加 AI 对手:Zig + wasm4 的单人模式实践
最近对一个叫Grenade Brothers的小游戏做了二次开发给它加了 AI 对手支持单人游玩。原游戏是用Zig编写、编译成WebAssembly运行在wasm4这个幻想主机fantasy console上的。画面只有 160×160 像素和四种颜色风格非常复古玩法类似简化版的排球/乒乓球两个人隔网打球球落到对方场地就得分。原作者的灵感来自游戏《A Way Out》里出现的一个街机小游戏。原版主要支持本地双人或 netplay 联机缺少单人模式所以我做了这个 fork加上了 AI。游戏简介双方隔着球网交换一个球球落到己方场地地面则对方得分跳跃击球可以加速站着击球会减速击球点越偏离角色中心横向速度越大支持本地双人和 netplay浏览器即可运行手机也能玩原版控制左玩家方向键上键跳跃右玩家ESDFR 键重置本 fork 新增内容在保留原游戏全部功能与EUPL-1.2协议的基础上增加了模式选择菜单和三种 AI 难度模式说明2 Players原版本地双人 / netplayAI Easy追踪型 AI跟着球跑反应有延迟AI Medium预测型 AI模拟球的物理轨迹进行拦截AI Hard策略型 AI会预判、试图把球打向空当并使用有力跳跃规则调整左侧始终是人类玩家方向键 / 手柄1右侧在 AI 模式下由 AI 控制先到5 分获胜结束后返回菜单菜单操作上下键移动光标X 键确认AI 设计思路简要AI 主要逻辑在 src/ai.zig 和 src/menu.zig 中。几个关键点AI 站位会刻意偏移让击球更容易把球打过网而不是纯垂直起跳加入了人类化的“噪声”反应延迟、脚步误差、跳跃时机抖动紧急情况球很低且很近会优先救球不会故意放水Hard 难度会尝试预判落点并主动寻找空当整体目标是让 AI 有层次感Easy 适合练手Medium 有一定对抗性Hard 能给有经验的玩家一些压力。如何运行依赖与原版相同Zig ≥ 0.10.1wasm4 ≥ 2.5.4Bashgit clone https://github.com/lClonazepam/Grenade_Brothers_AI.git cd Grenade_Brothers_AI make init build run写在最后这是一个纯粹的个人兴趣项目主要是想在原有优秀小游戏的基础上补上单人可玩性并实践一下简单的游戏 AI追踪 → 预测 → 简单策略。原游戏本身已经很有趣加上 AI 后一个人也能随时玩一会儿。代码量不大感兴趣的朋友可以直接看源码尤其是 src/ai.zig 部分。仓库地址 https://github.com/lClonazepam/Grenade_Brothers_AI如果你也对 wasm4、Zig 小游戏或简单游戏 AI 感兴趣欢迎交流。