#bevy #wfc #bevy-plugin #algorithm #gamedev #2d-3d #procedural-gen

bevy_ghx_proc_gen

用于WFC/模型合成的2D和3D过程生成的Bevy插件

2个不稳定版本

0.2.0 2024年5月17日
0.1.0 2024年1月19日

#1765 in 游戏开发

MIT/Apache

265KB
4.5K SLoC

Bevy Ghx Proc(edural) Gen(eration)

Bevy tracking bevy_ghx_proc_gen on crates.io bevy_ghx_proc_gen on docs.io

Bevy 插件和工具,用于 ghx_proc_gen

Bevy快速入门

cargo add bevy_ghx_proc_gen

步骤 13ghx_proc_gen快速入门 相同。

  1. 要自动为我们生成资产,我们使用 ProcGenSimplePlugin
  app.add_plugins(ProcGenSimplePlugin::<Cartesian2D, PbrMesh>::new());
  1. 要在Bevy视图中看到某些内容,我们将在 RulesModelsAssets 中设置资产
fn setup_generator(
    mut commands: Commands,
    mut meshes: ResMut<Assets<Mesh>>,
    mut materials: ResMut<Assets<StandardMaterial>>,
) {
  // ... Steps 1 to 3: Generator setup ...

  // Simple procedural cube mesh and materials.
  let cube_mesh = meshes.add(Mesh::from(shape::Cube { size: CUBE_SIZE }));
  let white_mat = materials.add(Color::WHITE.into());
  let black_mat = materials.add(Color::BLACK.into());*
  // We create our models asset here, in a separate collection for the sake of simplicity.
  // (We could also declare them with our models)
  let mut models_assets = RulesModelsAssets::<PbrMesh>::new();
  models_assets.add_asset(0, PbrMesh {
          mesh: cube_mesh.clone(),
          material: white_mat,
      },
  );
  models_assets.add_asset(1, PbrMesh {
          mesh: cube_mesh.clone(),
          material: black_mat,
      },
  );

  // ...
}
  1. 使用 GeneratorBundle 生成一个 Entity
  // The ProcGenSimplePlugin will detect this, generate and spawn the nodes. 
  commands.spawn(GeneratorBundle {
      spatial: SpatialBundle::from_transform(Transform::from_translation(Vec3::new(
          -grid.size_x() as f32 / 2., -grid.size_y() as f32 / 2., 0.,
      ))),
      grid,
      generator,
      asset_spawner: AssetSpawner::new(models_assets, NODE_SIZE, Vec3::ONE),
  });

bevy_chess_board_pattern

  • 有关更多信息,请参阅 bevy_ghx_proc_gen包文档示例
  • 几乎所有系统、结构、组件、资源等都具有 pub 可见性,因此您可以在自定义插件中使用或覆盖它们

Bevy插件

  • 查看来自 bevy_ghx_gridGridDebugPlugin,它为 ghx_proc_gen 使用的网格类型提供调试工具。

ghx_proc_gen 不需要 插件即可工作,但如果您想快速开始,或需要一些用于生成的调试工具,有一些现成的插件可供使用

  • ProcGenSimplePlugin:非常简单,只是用来生成和生成节点资产。请参阅 其源代码

  • ProcGenDebugPlugin [依赖于 GridDebugPlugin]:稍微复杂一些,但不是关注性能,而是关注演示和调试用例。您可以逐步查看生成,查看冲突发生的地方等。请参阅 其源代码

    • 键绑定以及调试插件使用的多数设置可以通过一些Bevy Resource 来覆盖。
    • 注意,调试插件(所有功能都已启用)依赖于其他插件以正确运行,例如:DefaultPickingPlugins(来自 bevy_mod_picking),EguiPlugin(来自 bevy_egui)或 GridDebugPlugin(来自 bevy_ghx_grid)。

这两个插件在您在一个 Entity 上插入 GeneratorBundle 组件时开始工作。

Cargo 功能

Cargo.toml 中找到列表和描述

  • default-assets-bundle-spawners:此功能为几种基本类型编译简单的 AssetBundleSpawner。如果您不需要它们或想要自定义其实现,请禁用此功能。
  • reflect:简单地为crate中常见的结构体推导 Reflect
  • simple-plugin:编译简单插件及其系统。
  • debug-plugin:编译调试插件、网格调试插件及其系统。
  • picking:通过 bevy_mod_picking 启用拾取。如果启用,则由调试插件使用。
  • egui-edit:启用一个 egui 编辑面板以检查节点和绘制模型

另请参阅 主crate 的 cargo 功能

兼容的 Bevy 版本

与 Bevy 版本的兼容性

ghx_proc_gen bevy_ghx_proc_gen bevy
0.2 0.2 0.13
0.1 0.1 0.12

许可证

bevy-ghx-proc-gen 是免费和开源的。此存储库中的所有代码都根据您的选择双许可

除非您明确表示,否则您提交给工作以包含在内的任何有意贡献,根据 Apache-2.0 许可证定义,应如上所述双许可,不附加任何其他条款或条件。

依赖项

~36–75MB
~1.5M SLoC