用途
这是一个 Bevy 引擎的“类型路由”技能,面向类银河恶魔城(Metroidvania)玩法。它用于处理“能力门控探索”和“房间地图”这类需求,本身不实现具体引擎类型,而是把领域工作交给相关的 Bevy 技能(如能力系统、角色移动、存档、秘密机制等)。
主要能力与 ECS 结构
资料给出的 ECS 组织方式如下:
- 组件(Component)保存该类型的每实体标志,作为普通数据。该文件不命名新的引擎类型。
- 资源(Resource)保存整局运行的计数器(分数、波次索引、随机种子),通过 bevy-data-resources 管理。
- 系统在 Update 或来自 bevy-master 的固定时间步中读取这些组件;当后续系统需要看到前一个系统的结果时,用 .chain() 排序。
- 玩法模式切换通过 bevy-state-machines 处理。能力标志、已访问格子、地图迷雾由组件加一个资源组成。
示例中定义了 Ability 枚举(Dash、WallClimb、DoubleJump)、AbilitySet 组件(owned 布尔数组,含 has 与 grant 方法)、Gate 组件(requires 与 open)、MapCell 组件(x、y、visited)、MapFog 资源(revealed 计数)。
使用方式
资料提供的示例代码展示了:
- boot 系统在 Startup 中插入 MapFog 资源,并生成 AbilitySet、Gate、MapCell 实体。
- grant_dash 系统在按下 E 键时给玩家授予 Dash 能力。
- open_gates 系统根据玩家是否拥有门所需能力来设置门的 open 状态。
- reveal_cell 系统将 (0,0) 格子标记为已访问并增加 MapFog.revealed。
- install 函数用 add_systems 注册 Startup 与 Update,并将 (grant_dash, open_gates, reveal_cell) 用 .chain() 串联。
另有一个 shortcut_open 示例:当玩家同时拥有 Dash 和 WallClimb 时,捷径开启。
依赖声明为 bevy = "0.20"。
适用场景
适用于使用 Bevy 0.20+ 开发能力解锁式探索与地图迷雾玩法的项目。相关技能包括:bevy-ability-system(穿越能力)、bevy-character-movement(移动)、bevy-save-load(地图标志)、bevy-mechanic-secrets(可选房间)。前置技能为 bevy-master(ECS 所有权与调度)和 bevy-ecs-composition(生成与查询形态)。同类对等技能为 godot-genre-metroidvania。
限制与约束
资料明确列出以下禁止事项:
- 不要在文档 URL 中固定 /0.20.0/,链接保持指向最新版本,0.20 目标只在正文中说明一次。
- 不要从两个无序系统中可变查询同一组件,因为调度会并行运行系统,除非用 .chain() 排序。
- 不要在此发明物理、导航、网络或 XR 库,该技能只命名有文档的 Bevy 库和模块。
- Bevy 代码中不得出现其他引擎的类型,保持惯用 ECS 并只使用有文档的 Bevy API。
- 不得发明类型 API。
- 不在此选择物理或网络库。
借用规则:两个都可变查询同一组件的系统必须排序(.chain())或拆分,使只有一个写入;无关系统保持并行。
Bevy 没有地图图类型,上述示例即为数据本身。该路由不拥有第二套实现。