7 个版本
0.2.0 | 2024年2月18日 |
---|---|
0.1.0 | 2023年12月2日 |
0.0.12 | 2023年11月16日 |
0.0.11 | 2023年9月26日 |
#2274 in 游戏开发
50 每月下载量
用于 4 crates
63KB
1.5K SLoC
Dexterous Developer
bevy 游戏引擎的实验性热重载系统。灵感来自 DGriffin91 的荒谬 bevy 热重载 - 添加了重新加载任意系统的能力,以及随时间变换资源/组件结构的能力。
完整的文档可在以下位置找到:https://lee-orr.github.io/dexterous_developer/
特性
- 明确定义您游戏的可重载区域 - 这可能包括系统、组件、状态、事件和资源(有一些限制)
- 在重载时将资源重置为默认值或预先确定的值
- 序列化/反序列化您可重载的资源 & 组件,允许您在它们与反序列化器兼容的情况下演变它们的模式(使用 rmp_serde)
- 标记实体在热重载时删除
- 在热重载后运行系统
- 创建函数在进入/退出状态或在热重载时设置和拆除
- 仅在您明确启用时在构建中包含任何热重载功能 - 例如,通过使用 CLI 启动器
跨平台/跨设备热重载 - 在开发环境中运行 "热重载服务器",并在其他地方执行应用程序。为了获得最佳效果,开发环境应是一个 Linux 设备或基于 Linux 的开发容器,但它也可以配置为直接在 Windows 或 Mac 上运行 - 尽管可靠性较低。由于始终可以设置在 Linux 上托管 docker-in-docker 环境以支持 Windows/mac,因此直接在 Windows/mac 上进行交叉编译不是优先事项,这已被证实是有效的。此功能在当前版本中不起作用,但将在未来重新实现
已知问题
- 不会在移动设备或 WASM 上工作
安装
通过运行以下命令获取 CLI:cargo install dexterous_developer_cli
。
您可以通过在终端中运行 dexterous_developer_cli run
来运行您的 dexterous 代码。
在您的 Cargo.toml
中添加以下内容
[lib]
name = "lib_THE_NAME_OF_YOUR_GAME"
path = "src/lib.rs"
crate-type = ["rlib"]
[dependencies]
bevy = "0.13"
dexterous_developer = "0.1.1"
serde = "1" # If you want the serialization capacities
[package.metadata]
hot_reload_features = ["bevy/dynamic_linking", "bevy/embedded_watcher"] # this injects these features into the build, enabling the use of bevy's dynamic linking and asset hot reload capacity.
如果您的游戏还不是库,请将所有主要逻辑移动到 lib.rs
而不是 main.rs
。然后,在您的 main.rs
中 - 调用 bevy_main 函数
fn main() {
lib_NAME_OF_YOUR_GAME::bevy_main();
}
并且在你的 lib.rs
文件中,你的 main 函数应改为
#[hot_bevy_main]
pub fn bevy_main(initial_plugins: impl InitialPlugins) {
App::new()
.add_plugins(initial_plugins.initialize::<DefaultPlugins>()) // You can use either DefaultPlugins or MinimnalPlugins here, and use "set" on this as you would with them
// Here you can do what you'd normally do with app
// ... and so on
}
如果你有一个插件并想要添加可重载的元素,请在定义该插件的文件中添加以下内容
impl Plugin for MyPlugin {
fn build(&self, app: &mut App) {
app
.setup_reloadable_elements::<reloadable>();
}
}
#[dexterous_developer_setup]
fn reloadable(app: &mut ReloadableAppContents) {
app
.add_systems(Update, this_system_will_reload);
}
Bevy 版本支持
Bevy | Dexterous Developer |
---|---|
0.13 | >= 0.2 |
0.12 | 0.0.12, 0.1 |
0.11 | <= 0.0.11 |
依赖项
~2–16MB
~206K SLoC