用途
graph-world-bevy 是 GraphOS 的一个技能,用于在 Rust 中以 Bevy 的 ECS 与时间调度实现 GraphOS 世界运行时。它仅使用 Bevy 的 app、ecs、time 能力,不包含 Bevy 渲染、窗口、UI 或资源管线。
该技能依赖 graph-world 进行图建模与闭环校验,依赖 graph-management 进行图检查、验证与原子图变更。当请求改变 World/Context/Variant/System/Event/EventSystem 拓扑时,应先用 graph-world,再用 graph-management 读取或应用图变更。
主要能力
- 项目引导:初始化 npm 元数据与 GraphOS 工具(graphos-world-plugin、graphos-cli),配置 package.json 中的 GraphOS 生成选项(禁用 TypeScript 生成,启用 genBevy),并提供 wasm 与 iOS/Android/macOS/Windows/Linux 跨平台编译脚本。
- Rust + Bevy 初始化:初始化 Rust crate,固定 package.name 为 "app",库输出支持 cdylib、rlib、staticlib;添加 world-bevy 与 Bevy 运行时依赖(bevy_app、bevy_ecs、bevy_time)。
- world-bevy 依赖提供:Context、IVariant、IEvent、Message、WorldResource、next_id()、reg()、reg_veriant()、reg_event() 以及用于 wasm 宿主集成的 C FFI 绑定。
- 文件组织规范:每个 System/EventSystem 一个文件,snake_case 命名,统一放在 src/app/ 下;共享类型、配置、辅助函数分别放在 types.rs、config.rs、common.rs;配置实例放在 src/config/ 下。
- 系统实现:使用观察者与 ECS 查询连接生命周期系统,禁止使用 EventReader/EventWriter,事件通过 On<T> 触发与 app.add_observer(...) 处理;使用 Res<Time<Virtual>> 获得确定性更新时序;通过 WorldLogEvent 输出运行时日志。
- 世界启动入口:在 src/app/ 下的专用引导模块中实现确定性的启动初始化,生成所需的根/领域上下文。
使用方式
- 先用 graph-world 完成图设计并完成闭环校验。
- 用 graph-management 检查图状态、验证节点类型/插件,并在修改 Rust 运行时绑定前应用图变更。
- 若图有变化,先重新生成/更新 GraphOS 输出。
- 项目引导:npm init -y;npm i -D graphos-world-plugin graphos-cli;配置 package.json 的 GraphOS 选项与脚本;创建 World.graph.json。
- Rust 初始化:cargo init --bin .;cargo add world-bevy;cargo add bevy --no-default-features --features bevy_app,bevy_ecs,bevy_time。
- 实现系统:先定义 types.rs、config.rs、common.rs,再在 src/app/ 下按规范实现各 System/EventSystem,并在 src/app/mod.rs 中注册。
- 构建验证:cargo check、cargo run、npm run build:wasm:node。
适用场景
- 需要 GraphOS 世界项目使用 Rust 运行时而非 TypeScript 运行时。
- 需要将 Bevy 仅作为 ECS/运行时调度器与时间源。
- 需要用于世界/领域逻辑的确定性、headless 应用循环。
限制
- 不包含 TypeScript 实现代码。
- 不包含 Bevy 渲染栈(bevy_render、bevy_winit、bevy_pbr、bevy_ui、bevy_sprite 等)。
- 若请求包含渲染或前端集成,需移交给其他展示/运行时技能。
- 前置条件:必须先用 graph-world 完成图设计并完成闭环校验。
- 禁止使用 EventReader<T> 或 EventWriter<T>。
- 不得修改 src/gen 下的生成文件。
- 具体收费、价格、平台支持范围等事实暂未提供。