Bevy Editor: Using Godot as a Practical Editor for Bevy
Looking for a Bevy editor? Bevy does not have an official editor yet, so here is a practical Godot workflow for Bevy scenes, assets, and ECS game logic.
Rust · Bevy · Godot
If you’ve been searching for a Bevy editor, here’s the situation: Bevy still doesn’t ship with an official editor (yet). Which is a shame, because the data-driven/ECS workflow is genuinely nice—right up until you need to collaborate on scenes and content with other humans.
In practice, that usually means trying to bend Blender into a scene/content workflow. It can work up to a point, but it’s not really a scene editor for rapid iteration, and you hit the edges quickly.
Bevy Editor status today
At the time of writing, there is no official Bevy editor. A practical approach is to use an existing editor for authoring, then keep Bevy as the runtime where your ECS game logic lives.
What if we try using the editor and scene creation tools from another established game engine? Especially one that’s also open source and has a strong community? Enter Godot.
Godot is a popular open-source game engine that has a strong community and a powerful editor. It provides a wide range of features for game development, including 2D and 3D rendering, physics, audio, and scripting. And importantly for us, it has a plugin system that allows developers to extend its functionality.
So what if we could do this: manage assets and build scenes in Godot’s editor, then run game logic in Bevy. We’ll use godot-rust to talk to Godot from Rust, and do it from a Bevy app that still loads assets through standard Bevy APIs.
That’s exactly what I’m aiming for with godot-bevy: bringing Bevy’s ECS workflows into a Godot project so you can leverage the strengths of both. Bevy ergonomics, with Godot’s editor around it.
While building, I’ve had a pretty strict north star:
- Bevy should still feel like Bevy.
- Performance is critical.
- Ease of use is important.
Keeping Bevy feeling like Bevy
The library does this by providing a set of opt-in Bevy plugins that abstract away the Godot-specific pieces. A few highlights:
- You can load Godot resources through Bevy’s
AssetServer(includingres://paths). - You can define custom Godot nodes from ECS types (components/bundles) so that dropping a node into a scene can automatically insert your Bevy data when the scene is scanned.
- We can automatically sync transforms between Bevy and Godot (including one-way or two-way syncing).
- Godot’s scene tree APIs are effectively main-thread-only, so there are utilities to help keep node interactions on the right thread.
Performance
Performance is a critical aspect of any game engine. godot-bevy is designed to be fast and efficient, and we actively track this with benchmarks. We also support tracing/profiling workflows so you can actually see what’s going on when things get slow.
Integration with Godot’s Editor
Thanks to Godot’s addon system, we can surface Bevy state directly in the editor while your game runs—so you can inspect entities, components, and hierarchy right next to the Scene tab.
Demo
Source: You can find the example code in examples/simple-node2d-movement on GitHub.
It’s been an interesting project to work on and a lot of fun. I’ve also met a few people passionate about game development who’ve contributed along the way.
Bevy Editor FAQ
Does Bevy have an official editor?
Not right now. If you need editor workflows today, you generally pair Bevy with external tools.
Is Godot the Bevy editor?
Not exactly. Godot is still its own editor and engine, and godot-bevy lets you use Godot for authoring while your game logic runs in Bevy ECS.
Can I use this workflow today?
Yes for prototypes and active experimentation. The godot-bevy repo has runnable examples you can clone and test quickly.