What does HackerNews think of bevy?

A refreshingly simple data-driven game engine built in Rust

Language: Rust

#3 in Game engine
#125 in Hacktoberfest
#10 in React
#79 in Rust
The bevy engine (ECS based) has an `UpdateMode` that specifies "Continuous" vs "Reactive" https://docs.rs/bevy/0.10.1/bevy/winit/enum.UpdateMode.html.

Here's an example using it, it's well suited for "desktop applications", the shorthand to use it is `desktop_app()` https://github.com/bevyengine/bevy/blob/1c5c94715cb17cda5ae2....

https://github.com/bevyengine/bevy/

I'm doing this role over at Bevy[0]. Docs, project management, and mentorship (plus my technical contributions). It's incredibly valuable for the project, and has allowed us to scale up to hundreds of active contributors in less than two years. We do our best to welcome and encourage other folks in the same sort of role; there's always more PR reviews, issue management and community building to be done.

Incidentally, this work has led to an official role with the project, tons of professional experience and contacts, and some well-paid consulting gigs. I have a very strange and spotty resume due to health issues, so it's been frankly life-changing.

[0]: https://github.com/bevyengine/bevy

I cannot agree enough.

For example, in the bevy[0] discord alone, there's a remarkable about of advice, plugin recommendations, and technical help that's essentially just lost in noise.

It's a real shame; I can't help but wonder how much effort is repeated, or how much beginners needlessly struggle because they couldn't effectively find information.

[0] https://github.com/bevyengine/bevy

I wrote an implementation based on this a few weeks back. It works really nicely and I can render some 2M line segments at 60fps.

One thing you should do is try to limit very short and small segments, as GPUs don’t like rendering 1px triangles.

Still, I’ve been lead to understand that the instanced rendering done in this article is suboptimal on most GPUs. A better way to do it is apparently to put the points into a (non-vertex) buffer and do (batched) drawcalls for large numbers of vertices with a kind of manual instancing. Basically looking up what amounts to instance data using gl_VertexInput/6 and vertex data using gl_VertexIndex%6 (or 4 instead of 6 for indexes rendering).

Unfortunately I haven’t had the time to implement and test this yet.

If like me you’re also rendering lines with perspective, you want to also look at Freya Holmer's work. Particularly line thinness fading is important to reduce shimmer/aliasing. This means basically keep the width at a minimum of 1px and adjusting opacity below that instead.

Edit: For those interested, mine is implemented as a plugin to the Bevy game engine, written in Rust. Bevy can be found here https://github.com/bevyengine/bevy. The plugin is https://github.com/ForesightMiningSoftwareCorporation/bevy_p....

All this hype around ECS started when Minecraft, Factorio and They Are Billions proved that the paradigm works, though that is just a small percentage of games that can benefit from ECS. The rest should use the classic OOP model. I really don't see how a game like Dota, CSGO or your average Battle Royale will be better with ECS. I agree with the article.

There are libraries enabling ECS for you if you are not looking for an engine like Unity:

C++: https://github.com/skypjack/entt (Non-Java Minecraft uses this)

Java: https://github.com/libgdx/ashley

Rust: https://github.com/bevyengine/bevy (it's still work in progress, not battle-tested and a moving target)