Bevy Engine, and its ecosystem. (Revised)

Initially this will be an "article/blog" of sorts. However in the near future, I would like to showcase some guides/examples on how you could get some basic tools and maybe a basic project going.

temporary recent context of this page

for recent context, the first iteration of this page, after revising made me come off as bitter towards Unity specifically, but the overall modern game industry as a whole. This broke not only professionalism, but also the spirit of creating and learning. With that in mind I've re-written this page. Most of what exists on this website has the purpose of "existing" for the sake of me building a nice flow and user experience which is currently lacking. In the coming development phases, there will be less writing, and more "UI/UX".

What is Bevy?

Bevy is an ECS driven game engine written in Rust. This essentially means its a very modern new game engine that just recently turned 5 years old. However its technically a little older than that since it is actually a second attempt from the same authors of the Amethyst game engine. Amethyst as it became larger, was difficult to maintain and work with, so the efforts were canabalized and started anew into the Bevy project.

Why is ECS nice?

ECS stands for Entity Component System. It has the result of being far more efficient than Object Orientated Programming or OOP. Although, most game genre's won't exactly notice the performance difference, especially if you are in a small indie game environment. However, one game genre that could actually greatly benefit from this is the timeless RTS genre. In classic RTS games, one of the most powerful strategies is "more beats less", where say one opponent could have better quality units, whilest the other just simply has more "cheaper" units. Typically more beats less. That means a LOT of entities within a given game, and as you scale up the entities, the worse the performance can become. For most indie developers, a RTS genre is just too much to take on as it would require quite a bit of UI, and classical AI implementations just to get something "acceptable" and so its never really considered for small teams. I have a little bit of bias, because Bevy was essentially my first "serious" game engine that I learned game development on and still do to this day. So with that in mind, in my opinion structurally speaking, ECS just seems simpler to work with and that's why I like it.

Bevy philosophy

Bevy itself, if you coming from a more built out game engine like say Unity or Unreal, can appear VERY minimal. What I mean by this is well, you kind of have to setup a lot of the tools yourself, but don't be dis-heartened a lot of the community has working solutions you can easily just import. So for example, to install Bevy, you actually have to install it via the terminal using Rusts package manager cargo. Already that gives a clue as to how Bevy works, everything you want to do in Bevy, you need to do via the terminal. Obviously you'd want to have a dedicated IDE of sorts, doing EVERYTHING from the command line although possible, can become rediculous pretty quickly. From here, to run Bevy you would have to essentially setup your main function to even call a window the proper way, in order to even get a visual window of your first project. This means if your expecting some already setup tooling like a developer UI space your not going to get that unless you set it up yourself. This may seem as overwhelming, but actually it means your game engine is going to evolve to your project and not your project to the game engine. However some development tools don't need to be exactly "unique". Commonly, as your project gets bigger, it actually becomes more convenient to have a developer UI of sorts for debugging and/or an editor tool of sorts. In such situations, the bevy community has lots of packages already made for common requirements such as this. The community standard solution in this scenario is bevy-inspector-egui, where in a few short steps you could have a "Unity-Like" developer interface/UI. As it turns out most people do like to have a developer UI of sorts, so eventually it seems Bevy will have an official built-in solution, and actually they have publicly stated they would base it off bevy-inspector-egui, whether it gets incorporated or heavily inspired I don't know, but currently its the unofficial official solution that even the developers of Bevy recommend. This works because in the end of the day, Bevy is open-source.