12 个版本 (4 个重大更改)
新 0.4.0-alpha.3 | 2024 年 8 月 17 日 |
---|---|
0.4.0-alpha.0 | 2024 年 8 月 16 日 |
0.3.0 | 2024 年 7 月 4 日 |
0.2.0 | 2024 年 2 月 18 日 |
0.0.11 | 2023 年 9 月 26 日 |
#1483 in 游戏开发
每月 203 次下载
36KB
471 行
Dexterous Developer
Rust 的模块化热重载系统。
最新版本的文档可在以下地址找到:https://lee-orr.github.io/dexterous_developer/
您还可以找到 最新预发布版本的文档 和 主分支的文档
特性
- 一个用于构建和运行可重载 Rust 项目的 CLI,包括通过网络(跨设备)
- 直接与二进制包协同工作!
- 序列化和反序列化元素的能力,允许随着时间的推移演变架构
- 仅在您明确启用时才将热重载功能包含在您的构建中 - 例如,通过使用 CLI 启动器
- 创建适配器的功能,以便与其他框架一起使用,允许您使用 Dexterous Developer 工具与其它工具一起使用。
- 包括第一方的 Bevy 适配器
- 在 Windows、Linux 和 MacOS 上运行
- 在 Linux 上,可以在主操作系统上运行时在开发容器内进行开发,从而可以使用开发容器来开发游戏和其他 GUI 应用。
Bevy 特定功能
- 明确定义您游戏的可重载区域 - 包括系统、组件、事件和资源(有一些限制)
- 在重载时将资源重置为默认值或预定义的值
- 序列化/反序列化可重载的资源与组件,允许您在它们与反序列化器兼容的情况下更新它们的模式(使用rmp_serde)。
- 标记将在热重载时被删除的实体。
- 在热重载后运行系统。
- 创建函数以在进入/退出状态或热重载时设置和拆卸。
未来工作
- 跨平台热重载 - 在开发环境中运行“热重载服务器”,并在不同的操作系统上执行应用程序。
- 移动支持
- 基于浏览器的WASM支持
- WASI支持
- 使用中间编译结果修补正在运行的库
- 除了当前的动态库方法外,还支持使用进程间通信
- 应添加基于GUI的启动器,特别是针对移动设备
- 在bevy中支持ECS钩子和观察者
安装
通过运行以下命令安装CLI:cargo install [email protected]
。这会安装2个命令行工具
dexterous_developer_cli
- 用于构建项目,可能同时运行dexterous_developer_runner
- 用于在另一台设备上运行项目
设置
您还需要将适当的dexterous开发者适配器添加到您的库依赖中,并设置“热”功能。例如,如果您正在使用bevy
[features]
hot = ["bevy_dexterous_developer/hot"]
[dependencies]
bevy = "0.14"
bevy_dexterous_developer = { version = "0.4.0-alpha.3"}
serde = "1" # If you want the serialization capacities
最后,您需要设置一个Dexterous.toml
文件,它有助于定义一些必要的元素,例如应该监视哪些文件夹以更改,以及应该启用哪些功能。有关更多信息,请参阅此存储库中的示例文件或书籍。
Bevy设置
在您的main.rs
中,您的main函数应该是
reloadable_main!((initial_plugins) {
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>();
}
}
reloadable_scope!(reloadable(app) {
app
.add_systems(Update, this_system_will_reload);
})
Simple Visual示例展示了库的基本使用方法,而书籍也有更多信息。
使用热重载运行
要本地运行热重载应用程序,请使用cargo安装并运行dexterous_developer_cli
(可选地传递特定包或示例)。
要在不同的机器(具有相同平台)上运行应用程序,请在两台机器上使用cargo安装dexterous_developer_cli
,然后
- 在开发机器上运行
dexterous_developer_cli --serve-only
命令 - 在目标机器上运行命令
dexterous_developer_runner --server http://*.*.*.*:4321
,理想情况下在专用目录中
在没有热重载的情况下运行或构建
要构建或运行没有热重载功能的应用程序版本,请记住避免包含hot
功能,因为它是为仅在工作在可重载库内而设计的!
灵感
最初的灵感来自DGriffin91的荒谬bevy热重载
Bevy版本支持
Bevy | Dexterous Developer |
---|---|
0.14 | >= 0.3 |
0.13 | = 0.2 |
0.12 | 0.0.12, 0.1 |
0.11 | <= 0.0.11 |
依赖关系
~5–11MB
~120K SLoC