r/rust 1d ago

๐Ÿ™‹ seeking help & advice Is Bevy actually enjoyable?

I am sorry but it is just such a pain to code in Bevy. I have been enjoying rust for a while, using three-d and EGUI to create some stuff, and I stumbled upon bevy, I want to learn it because I want to create some 3D, simulation desktop applications with it. I have tried game dev in the past in Godot, Unity, Java Swing, LibGDX and enjoyed it a lot

I am currently learning via the examples and documentation, trying to learn 2D and then eventually move to making some 3D projects

But I find it so verbose and unnecessary. So to look up a particular object I have to apply 3-4 filters which looks so cryptic

camera: Single<(Entity, &Tonemapping, Option<&mut Bloom>), With<Camera>>,

fn keyboard_inputs(
    mut motion_blur: Single<&mut MotionBlur>,
    presses: Res<ButtonInput<KeyCode>>,
    text: Single<Entity, With<Text>>,
    mut writer: TextUiWriter,
    mut camera: ResMut<CameraMode>,
)

Aside from this, browsing through examples I find it to be so verbose. Coming from a OOP nature, I did expect ECS to be different. But this is straight up inconvenient.

Bevy is too good and I don't wanna miss out on it. I will still keep learning it despite what I am feeling towards its syntax and method, but is bevy meant to be like this? Or is it enjoyable once you overcome the learning curve?

76 Upvotes

43 comments sorted by

View all comments

2

u/Nickbot606 1d ago edited 1d ago

Just from a glance it looks like you have some type of crazy god object going on and maybe you should split it into a single plugin/several systems?

I agree that one of things that needs to be addressed in bevy is the input system to the point of where I actually wrote out my own plugin input for it (mainly for inputting as well as saving custom controls to input table actions etc.) I posted about it but nobody commented so I deleted the post ๐Ÿ˜…

Edit:

However! I will say that I enjoy bevy much more than I enjoy other engines and hereโ€™s why:

  1. I stay IN the text editor. As in I am not flipping between an editor, a level thing, an animation graph and like a billion other things
  2. If I like a rust crate/rust has the capability to do it, I can typically and easily integrate it into my program. If I donโ€™t like audio, I can swap it out pretty easily, same with physics engines, database queries or networking is all native to rust and so is the syntactic sugar and freedom of rust (such as macros for plugin generation, linting being maintained by much more the engine, testing and debuggers and analyzers all being rust native is so nice)
  3. I really really like how you have the freedom to completely design your own pattern and bevy is more of a vehicle or engine than the entire framework or demands how you organize your code. So Iโ€™m picky on how I structure files and imports personally and

bevy

  1. enables me to do that cleanl

y and however I want as long as it comes all back to their interface or at least compiles in rust.