open-sourcegamebeat-em-up2.5dbevyrustwasm type: concept 创建: 2026-04-09 更新: 2026-04-09
Fish Folk Punchy
2.5D 横版清版动作游戏(Beat-em-up),基于 Bevy 引擎开发,支持 Web/WASM 原生运行
基本信息
核心技术点
Bevy ECS 架构
- 完全基于 Bevy 0.9 ECS 框架,所有游戏系统均为 Bevy Plugin
FighterPlugin(格斗者)、AttackPlugin(攻击)、MovementPlugin(移动)、ItemPlugin(物品)、AnimationPlugin(动画)、PlatformPlugin(平台)、UIPlugin(界面)等多个插件体系
FighterStatePlugin 管理格斗者状态机,核心 fighter_state.rs 达 2228 行
物理系统
bevy_rapier2d v0.20 刚体物理(2D 碰撞/重力)
- 调试渲染可选(
bevy-inspector-egui-rapier)
输入系统
leafwing-input-manager v0.7 输入管理器(PlayerAction/MenuAction 双 ActionMap)
structopt + directories 支持 CLI 参数配置和游戏数据目录查找
脚本系统
bevy_mod_js_scripting(第三方 Git 依赖)嵌入 JavaScript 脚本
fluent + bevy_fluent 国际化本地化支持(locales/ 目录)
serde_yaml 数据驱动配置(assets/default.game.yaml)
视效与音频
bevy_parallax 视差背景(2D 场景深度感)
bevy_kira_audio 音频系统(MP3 支持)
bevy_egui + egui_extras 调试 UI
WASM/Web 支持
web-sys 条件编译支持(wasm32 target)
- 游戏资产通过
AssetPlugin + 自定义 loaders 异步加载
- Web 演示页实时更新(latest release 自动部署)
工作空间结构
Cargo.toml workspace
├── punchy(主 crate)
│ ├── src/ — 29 个 .rs 模块(main.rs + 28 个功能模块)
│ ├── macros/ — proc-macro crate(punchy_macros)
│ ├── assets/ — fighter definitions, levels, locales, scripts
│ └── wasm_resources/ — WASM 平台资源
核心模块(src/)
| 文件 |
行数 |
职责 |
| fighter_state.rs |
2228 |
格斗者状态机(最大模块) |
| assets.rs |
513 |
资源加载器注册 |
| loading.rs |
520 |
关卡/资源配置加载 |
| item.rs |
443 |
物品系统 |
| platform.rs |
445 |
平台/地形系统 |
| ui.rs |
314 |
UI 界面插件 |
| metadata.rs |
306 |
游戏元数据 |
| attack.rs |
273 |
攻击/伤害判定 |
| enemy_ai.rs |
253 |
敌人 AI |
| fighter.rs |
244 |
格斗者基础 |
| movement.rs |
238 |
移动系统 |
玩法特点
- 2.5D Beat-em-up:横版视角 + 深度层次感(Parallax)
- 灵感来源:Little Fighter 2、River City Ransom
- 支持 2-4 名玩家本地/联机(继承自 open-source-game/fish-folk-jumpy 框架)
- 内置关卡编辑器(通过 WASM 前端)
- 完整本地化支持(多语言
locales/)
与 Fish Folk Jumpy 的关系
Punchy 与 open-source-game/fish-folk-jumpy 同属 Fish Folk 组织(Spicy Lobster 社区):
- Jumpy:2D 战术射击(Bevy + rapier2d + bones_framework)
- Punchy:2.5D 清版动作(共享 Bevy 技术栈,但独立代码库)
- 两者共享部分设计理念(确定性物理、多人合作)
对公司 AI 游戏的参考价值
| 方向 |
启示 |
| Bevy 游戏架构 |
Plugin 化系统设计(15+ 插件)适合模块化 AI 游戏 |
| 格斗状态机 |
fighter_state.rs 2228 行状态机可作为 AI 决策树参考 |
| WASM 跨平台 |
Web 原生运行能力对公司 HTML5 游戏有参考价值 |
| 数据驱动 |
YAML 配置 + 资源分离,方便 AI 生成内容接入 |
| 本地化框架 |
fluent 系统适合多语言 AI 对话游戏 |