Hacker News new | ask | show | jobs
by SeanAnderson 853 days ago
I've been building My First Game™ using Bevy after teaching myself Rust last year. I feel super cool running Rust in WASM in the browser! It's been a great experience overall and I highly recommend exploring what Bevy has to offer.

The community is really exceptional. I ask questions daily and get helpful responses usually within minutes. Bevy hides some of the complexities of Rust, such as lifetimes, away from normal development. This was a pleasant surprise for someone coming in with little awareness of Rust.

Writing in ECS is pretty confusing to begin with and, IMO, represents the steepest part of the learning curve. After a while ECS starts to feel more natural though and you'll wonder why you were ever comfortable doing OOP.

The main sore spots for me are: UI needs a lot of work to be ergonomic and beautiful, there's a lot of footguns related to performance and event handling/change detection, which do have workarounds, but at the cost of ergonomics, and, specifically for WASM, everything (including rendering) is still single-threaded which makes the app perform worse than well written JavaScript for now.

I'd be happy to try and answer any questions about my experience as a complete noob to Rust/Bevy/ECS/game development and having immersed myself ~full time on a game for the past year.

FYI, you can browse my game's code here: https://github.com/MeoMix/symbiants

1 comments

Hey!! I’m on the same journey! Yew, but with Bevy ECS and HTML as my “rendering engine”.

Keep me posted!!

Never dug deep into Bevy's subcrates, but does this mean you have more control from the JS side? (e.g. when I want to interlace the main loop tick with something from the JS side)
https://github.com/sanspointes/bevy-wasm-api someone in the Discord mentioned they were playing around with this idea a couple of days ago. No idea how well it works though.
Much appreciated!
Oh, I my case, I was actually creating a “headless” game, where my graphics were just in HTML and CSS because I’m more artistically enabled to make things using those instead of OpenGL!

And because I’m weird!