2个不稳定版本
0.15.0 | 2024年4月9日 |
---|---|
0.14.0 | 2024年3月1日 |
#597 in 游戏开发
98 每月下载量
54KB
995 行
Revy
Revy是Bevy游戏引擎的时间旅行调试器原型,使用Rerun构建。
基本思路是使用Revy来调查游戏玩法/物理/一般行为等类型的bug。
Revy不是一个图形调试器:对于图形调试,您可以使用例如RenderDoc。
它也不是性能分析器:对于性能分析,Bevy与例如Tracy集成良好。
Revy通过每帧快照Bevy数据库的差异,并将这些差异记录到Rerun数据库中来实现。
这允许您在任何时间点检查和可视化引擎的状态,无论是实时还是事后。
这些录制可以随后共享以供回放或例如附加到bug报告。
https://github.com/rerun-io/revy/assets/2910679/cd096cbe-5e68-4acf-8010-e6c32c5568dc
示例
Breakout | 3D形状 | 外星蛋糕爱好者 |
---|---|---|
现场演示 | 现场演示 | 现场演示 |
![]() |
![]() |
![]() |
⚠️ 这不是官方的Rerun项目。这是一个边实验,旨在探索Rerun等工具在游戏开发中可能带来的可能性。这不是一个完整、维护良好的项目——也不是旨在成为这样的项目。它可能存在许多bug并且运行缓慢,代码中充满了令人难以置信的混乱 🙃。
使用方法
-
安装Rerun查看器 (
0.15
). -
将
revy
添加到您的依赖项revy = "0.15" # always matches the rerun version
-
初始化
rerun
插件.add_plugins({ let rec = revy::RecordingStreamBuilder::new("<your_app_name>").spawn().unwrap(); revy::RerunPlugin { rec } })
这将启动后台的Rerun查看器并将录制数据流式传输到它。
查看RecordingStreamBuilder
文档以获取其他选项(保存到文件、连接到远程查看器等)。
自定义记录器
Revy将记录每个实体的每个组件(),要么使用内置的专用记录器之一,要么使用基于反射的通用记录器。
您还可以通过插入一个 RerunComponentLoggers
资源来注册您自己的自定义记录器
.insert_resource(revy::RerunComponentLoggers::new([
(
"bevy_render::view::visibility::ViewVisibility".into(),
Some(revy::RerunLogger::new(
|_world, _all_entities, entity, _component| {
let suffix = None;
use revy::external::rerun;
let data = entity
.get::<ViewVisibility>()
.map(|vviz| {
revy::Aliased::<rerun::components::Text>::new(
"ViewVisibility",
rerun::components::Text(
if vviz.get() { ":)))" } else { ":'(" }.into(),
),
)
})
.map(|data| Box::new(data) as _);
(suffix, data)
},
)),
),
]))
兼容性
Bevy | Revy | Rerun |
---|---|---|
0.13 | 0.14 | 0.14 |
0.13 | 0.15 | 0.15 |
依赖项
~39–71MB
~1M SLoC