为经典小游戏 Grenade Brothers 添加 AI 对手:Zig + wasm4 的单人模式实践
2026/8/6 5:25:31 网站建设 项目流程

最近对一个叫Grenade Brothers的小游戏做了二次开发,给它加了 AI 对手,支持单人游玩。

原游戏是用Zig编写、编译成WebAssembly,运行在wasm4这个幻想主机(fantasy console)上的。画面只有 160×160 像素和四种颜色,风格非常复古,玩法类似简化版的排球/乒乓球:两个人隔网打球,球落到对方场地就得分。

原作者的灵感来自游戏《A Way Out》里出现的一个街机小游戏。原版主要支持本地双人或 netplay 联机,缺少单人模式,所以我做了这个 fork,加上了 AI。

游戏简介

  • 双方隔着球网交换一个球
  • 球落到己方场地地面则对方得分
  • 跳跃击球可以加速,站着击球会减速
  • 击球点越偏离角色中心,横向速度越大
  • 支持本地双人和 netplay(浏览器即可运行,手机也能玩)

原版控制:

  • 左玩家:方向键(上键跳跃)
  • 右玩家:ESDF
  • R 键重置

本 fork 新增内容

在保留原游戏全部功能与EUPL-1.2协议的基础上,增加了模式选择菜单和三种 AI 难度:

模式说明
2 Players原版本地双人 / netplay
AI 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.1
  • wasm4 ≥ 2.5.4

Bash

git 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 感兴趣,欢迎交流。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询