用途
这是一个面向 Bevy 0.20 的开放世界类型路由技能,用于处理区域流式加载(streaming regions)与远处角色(distant actors)的激活管理。它本身是一个薄路由层,不承担具体领域实现,领域工作交由其他 Bevy 技能完成。
主要能力
- 将区域归属(region membership)和激活距离定义为组件,由使用者自行拥有。
- 将玩家所在单元格(player cell)作为一个资源保存。
- 通过一个链式系统在写入单元格后执行激活逻辑:一个系统写入 PlayerCell,下一个系统插入或移除 Active 标记。
- 远处角色保留一个 home 点,仅在存在 Active 标记时移动。
- 提供示例代码,展示 Player、Resident、Active、PlayerCell、Wander 等组件与资源的定义,以及 track_cell、activate、deactivate、wander、spawn_world 等系统,并通过 RegionPlugin 注册资源与链式系统。
使用方式
在 Bevy 0.20 项目中加载此技能,用于区域流式加载与远处角色管理。ECS 形态上:组件以普通数据保存每实体的类型标记;资源保存运行期计数器(如分数、波次索引、种子);系统在 Update 或固定时间步上读取这些组件,当后续系统需要看到结果时使用 .chain() 排序。游戏模式变化通过 bevy-state-machines 处理,不要发明类型插件。
路由关系:区域场景交由 bevy-asset-scenes,组装交由 bevy-3d-world-building,环境角色交由 bevy-ai-navigation,目标交由 bevy-quest-system。网格 LOD 仍归 bevy-3d-world-building。
适用场景
适用于需要在 Bevy 0.20 中实现开放世界区域流式加载、按玩家所在单元格激活或停用远处角色的场景。示例中玩家与一圈居民从 Startup 生成,居民按单元格索引分布,激活距离为相邻一格。
限制
- 目标版本为 Bevy 0.20+。
- 不要在此发明世界分区类型、物理、导航、网络或 XR crate,也不要发明类型 API。
- 不要在文档 URL 中固定 /0.20.0/,链接保持最新,0.20 目标仅在正文中说明一次。
- 不要从两个无序系统可变查询同一组件,除非用 .chain() 排序。
- Bevy 代码保持惯用 ECS,不使用场景树类型,仅使用有文档的 Bevy API。
- 本技能不拥有第二套实现,下游消费者为空。
- 前置技能为 bevy-master 与 bevy-ecs-composition;互补技能为 bevy-asset-scenes、bevy-3d-world-building、bevy-ai-navigation、bevy-quest-system。
官方文档参考
Assets(官方资源目录,未选择第三方 crate)、Examples(最新分支示例树)、ECS(Component、systems、Query、Startup、Update 与 .chain())、Plugins(Plugin、DefaultPlugins、MinimalPlugins 与 add_plugins)。