4 个版本 (2 个重大变更)

新功能 0.3.1 2024 年 8 月 23 日
0.3.0 2024 年 8 月 23 日
0.2.0 2024 年 3 月 8 日
0.1.0 2024 年 1 月 6 日

#617游戏开发

MIT/Apache

64KB
1.5K SLoC

bevy_generative

CodeSize License GitHub Actions Workflow Status Bevy tracking crates.io docs.rs

bevy_generative 是为 bevy 引擎 编写的插件,允许实时生成地图、纹理、地形、星球等!

功能

  • 允许直接集成到您的 bevy 游戏中的程序生成资产
  • 处理图像和网格数据的实时更新,作为资产配置的变更
  • 支持本地和 wasm 目标
  • 允许保存生成的资产(本地使用 rfd,wasm 使用 JavaScript blob)
  • 使用 serde 序列化和反序列化组件

展示

查看 Procedra [源代码],一个允许您实时实验所有参数并生成资产的程序生成 Web 应用程序!

安装

bevy_generative 添加到您的 Rust 项目中

cargo add bevy_generative

示例

地图和纹理

use bevy::prelude::*;
use bevy_generative::map::{MapBundle, MapPlugin};

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(MapPlugin)
        .add_systems(Startup, setup)
        .run();
}

fn setup(mut commands: Commands) {
    commands.spawn(Camera2dBundle::default());
    commands.spawn(MapBundle::default());
}

地形

use bevy::prelude::*;
use bevy_generative::terrain::{TerrainBundle, TerrainPlugin};

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(TerrainPlugin)
        .add_systems(Startup, setup)
        .run();
}

fn setup(mut commands: Commands) {
    commands.spawn(PointLightBundle {
        transform: Transform::from_xyz(-2.0, 2.5, 5.0).looking_at(Vec3::ZERO, Vec3::Y),
        ..default()
    });
    commands.spawn(Camera3dBundle {
        transform: Transform::from_xyz(-2.0, 2.5, 5.0).looking_at(Vec3::ZERO, Vec3::Y),
        ..default()
    });
    commands.spawn(TerrainBundle::default());
}

星球

use bevy::prelude::*;
use bevy_generative::planet::{PlanetBundle, PlanetPlugin};

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(PlanetPlugin)
        .add_systems(Startup, setup)
        .run();
}

fn setup(mut commands: Commands) {
    commands.spawn(PointLightBundle {
        transform: Transform::from_xyz(-2.0, 2.5, 5.0).looking_at(Vec3::ZERO, Vec3::Y),
        ..default()
    });
    commands.spawn(Camera3dBundle {
        transform: Transform::from_xyz(-2.0, 2.5, 5.0).looking_at(Vec3::ZERO, Vec3::Y),
        ..default()
    });
    commands.spawn(PlanetBundle::default());
}

Bevy 兼容性

bevy bevy_generative
0.14 0.3, main
0.13 0.2
0.12 0.1

贡献

欢迎贡献!问题、拉取请求、功能请求和错误报告都很受欢迎。如果您想为此项目做出贡献,请按照以下步骤操作

  1. 分支仓库。
  2. 创建一个具有描述性名称的新分支。
  3. 进行更改或添加。
  4. 测试您的更改。
  5. 提交一个带有您工作明确描述的拉取请求。

请确保您的代码通过所有 CI 检查,并在适用的情况下包含相关测试。感谢您帮助改进 bevy_generative

您的贡献将根据以下许可部分中所述的双许可。

许可

此仓库中的所有代码都根据以下任一许可进行双许可

由您选择。这意味着您可以选择您喜欢的许可协议!这种双重许可方法在Rust生态系统中是事实上的标准,并且有非常好的理由包含两者。

依赖项

~41–78MB
~1.5M SLoC