Settings

Theme

Bevy game development tutorials and in-depth resources

taintedcoders.com

140 points by GenericCanadian a month ago · 120 comments

Reader

tyleo a month ago

I really want to like bevy but compile times are slow and the output binaries are huge.

I built a few games in WASM and was shocked to see many of the bevy variants larger than the Unity versions.

There’s definitely a market for rust game engines but it seems that no one’s hit the sweet spot yet.

  • alfiedotwtf a month ago

    I hear Rust being slow to compile is their biggest gripe, but really - look at what you’re gaining for the slowdown!

    Bevy gives you a very nice ECS to model your app but compilation can be slower than hand crafted code, while not using it gives you tonnes more code and the complexities that come with it, just to compile faster?

    • tyleo a month ago

      I don’t know what you mean by, “just to compile faster.” Compiling fast is critical to game development. There’s no formula for fun so you have to iterate extensively.

      I also don’t think that other solutions are “tonnes more code.” Any code will explode in size if poorly written. The same is true for bevy.

    • NewsaHackO a month ago

      I swear I have only heard about ECS and people trying to show off how good the ECS is when it comes to Bevy, never about an actual game.

      • polski-g a month ago

        "There are more rust game engines than rust games" - Confucius

        • Ygg2 a month ago

          "The claim which is made without proof can be dismissed without proof" - Big Brain

          • NewsaHackO a month ago

            What are some notable rust games?

            • roflcopter69 a month ago
              • NewsaHackO a month ago

                OK, even though it does not seem like that game was very notable, will give you that one game. Rust has at least ~5-6 game engines though, so you will have to come up with 4-5 more.

                • CupricTea 21 days ago

                  Tiny Glade launched to 10,692 concurrent players with a 97% overwhelmingly positive score on Steam.

                  Calling that "not very notable" for an indie title is pretty ignorant.

            • Ygg2 a month ago

              Here is ten games in bevy engine

              https://youtu.be/50g3eSrSM6Q

              Rust has like 2-3 game engines and a bunch of bindings.

              • NewsaHackO a month ago

                OK, so I didn't say random games, though. I said notable ones. None of those are notable, and half of them aren't even released yet.

                • Ygg2 a month ago

                  No, the statement is there is more Rust engines than games.

                  It also adds easy to move goalpost of notability, that only accounts for luck and age, not actual capabilities.

                  • NewsaHackO a month ago

                    I have created 1000 rust games engines. All will be released Q2 2031.

                    • Ygg2 25 days ago

                      I have instructed Claude to make two games in each of your engines for Q3 2031. Your claim is still invalid :P

    • CyberDildonics a month ago

      Bevy gives you a very nice ECS

      That's a single data structure. People say binaries start at 50 MB for a hello world program and 700 MB for the debug binaries.

      https://old.reddit.com/r/bevy/comments/16wcixk/cant_figure_o...

      • saghm a month ago

        It's a single data structure that contains your entire game though? The whole point of the ECS is that literally everything uses the same data; it's like if you modeled every object in the world with one struct that has an optional field for every piece of data that could exist. I'm not saying that necessarily makes the tradeoff worthwhile, but calling it a "single data structure" is a bit reductive.

        • CyberDildonics a month ago

          It's a single data structure that contains your entire game though?

          Are you asking?

          but calling it a "single data structure" is a bit reductive.

          No it isn't. It's like a tiny database. Depending on how someone implements it, it could use arrays, hash maps and b-trees. There is no universe where this means a binary that does nothing should be 50 megabytes.

          • fluffybucktsnek a month ago

            > It's like a tiny database.

            No it isn't. It also handles system management and concurrency, basically the main loop of your application.

            I also would be cautious of assigning the blame of the binary size onto the data structure on its own.

            • alfiedotwtf a month ago

              I would say yes it’s like a tiny database but as well as all the other things your added. And I think that’s a good thing, because it does this at the type level!

              I’m actually seeing if I can build a parser using bevy_ecs just because the way their state machine works, it looks like it would be fun

            • CyberDildonics a month ago

              system management

              What does that mean?

              concurrency

              Some data structures and databases deal with concurrency.

              • nkrisc a month ago

                In this case systems are the S of ECS and contain all your game logic, acting upon the entities and components (E and C).

                By system management I assume they mean the APIs bevy offers for scheduling and sequencing systems and events so your game logic remains modularized while still running in the correct order.

                • CyberDildonics a month ago

                  It seems like you're calling an entire game engine "ECS". I'm not sure what the point is here, the whole question was what justifies having a 50 MB hello world binary. It doesn't matter what you put into a data structure, the data structure itself shouldn't make 50 MB binaries.

                  • fluffybucktsnek a month ago

                    No, they aren't calling the entire game engine "ECS". Entity-Component-System is an architecture that Bevy is structured around.

                    As I have previously stated, I wouldn't blame the data structures used behind Bevy just yet, given Rust's tendency for making bloated binaries. What is taking the most space in this 50MB binary? How does it scale with the complexity of the application?

                    • CyberDildonics a month ago

                      Even if you can put a function pointer into a data structure, that's still just a data structure.

                      • fluffybucktsnek a month ago

                        I don't know where you are trying to go with this logic. You still haven't assured that the 50MB is actually related to data structures used behind by bevy, lest you are insunating that the data structures used by bevy are solely responsible for that size, which is not what the post claims.

                        • alfiedotwtf a month ago

                          How small is a hello world in C on Linux? The last time I checked a few years ago, it was either 9Mb or 13Mb (memory is fuzzy on this one but one of them was right).

                          Edit: wow I’m way off… it must have been the 90s when I checked this lol

                        • CyberDildonics a month ago

                          You should probably read the whole thread. You jumped in half way through and got all mixed up.

                          • fluffybucktsnek a month ago

                            I know the thread. Your point is about whether Bevy's "data structure" is worth 50MB. I pressing on the fact that you haven't shown what this 50MB actually are.

                            But, out of curiosity, do you also consider the Linux Kernel also a data structure?

                            • CyberDildonics a month ago

                              I pressing on the fact that you haven't shown what this 50MB actually are.

                              To be clear you think an ECS implementation is 50 MB?

                              But, out of curiosity, do you also consider the Linux Kernel also a data structure?

                              Do you think a spreadsheet the holds function pointers is a kernel?

                              • fluffybucktsnek a month ago

                                > To be clear you think an ECS implementation is 50MB?

                                No.

                                > Do you think a spreadsheet the[sic] holds a function pointer is a kernel?

                                Do you think an entire engine, including its system scheduler, is a spreadsheet? If so, shouldn't be hard to apply the same argument to any kernel. Of course, it all relies on your definitions and sense of reductionism.

                                • CyberDildonics a month ago

                                  I think you're conflating other big features of a game engine with a way to store data. If you look at other ecs implementations they are data structures, they don't do "system scheduling" (is that different from regular scheduling?)

                                  • fluffybucktsnek a month ago

                                    First of, Bevy isn't just an ECS implementation. It's a game engine designed around ECS. While the ECS part is its core, Bevy also provides rendering, resource management, physics, etc. One of its other tasks, a rather important one too, is system scheduling: once you register systems, Bevy is responsible for dispatching them each frame, at the appropriate time, while also avoid data races over global resources and components.

                                    • CyberDildonics a month ago

                                      First of, Bevy isn't just an ECS implementation.

                                      No one thought that or said that so I don't know what point you're trying to make.

                                      If you go to the comments I replied it was someone saying bevy compiles slow and has excessive bloated binaries. Someone else replied that you get so much, like ecs. Then I said that ecs specifically is just a data structure and has no reason to bloat binaries to be 50MB for an empty program that does nothing.

                                      You're replying about things no one was discussing.

                                      • fluffybucktsnek a month ago

                                        Your whole thread is about nitpicking the phrase "Bevy gives you a nice ECS". You are the one who asserted that "ecs specifically is just a data structure" (it isn't, by most definitions [1] [2], except yours). I supposed you were referring exclusively to a simple and basic component storage implementation (which is a data storage), where as OP was probably referring to the whole ergonomics of writing programs in it, alongside all the other features. It seems to me that you're the one who missed the point.

                                        Then, you used this reductionism to question whether the 50MB binary is worth it. And that's ignoring the fact that there are ways to cut it if you wish, as mentioned in the reddit thread. And then there's the issue of whether it will actually matter for a full game.

                                        [1] https://en.wikipedia.org/wiki/Entity_component_system

                                        [2] https://github.com/SanderMertens/ecs-faq#what-is-ecs

                                        • CyberDildonics a month ago

                                          Your link describes a data structure and then just says "systems that use it" which is implied. Of course it gets used. Seems tautological.

                                          • fluffybucktsnek a month ago

                                            I will need citation on which link, and how it defines ECS as a data structure.

                                            From [1]:

                                            > Entity component system (ECS) is a software architectural pattern. An ECS consists of entities composed of data components, along with systems that operate on those components.

                                            From [2]: > ECS ("Entity Component System") describes a design approach which promotes code reusability by separating data from behavior. Data is often stored in cache-friendly ways which benefits performance.

                                            • CyberDildonics a month ago

                                              What you just described is a data structure that gets used. If the user brings the behavior what is the ecs? It's the data structure.

                                              Of course it will be used somehow. I don't call a std::vector a "vector system" because someone uses it, but I guess people think using this data structure makes it a "system".

                                              • fluffybucktsnek a month ago

                                                It's a data structure, except it doesn't describe how data is actually stored, only how its elements interact, so it's a data structure that doesn't actually structure data. If you are the kind of person that considers stuff like MVVM and Clean Architecture to be data structures, then I suppose it would be consistent. Most people don't.

                                                • CyberDildonics a month ago

                                                  It does store data so it is a data structure. Every implementation is meant to store data and the whole point is to have more memory locality so how it stores data is actually crucial.

                                                  • fluffybucktsnek 25 days ago

                                                    No, not every ECS implementation is about data storage (to be more precise, component storage). This architecture's abstraction being better suited for data locality is the main appeal, yes, but many appreciate the mere separation of the GameComponent's Components into Components and Systems. So your assertion about it being strictly meant for data storage is just wrong. As [2] states:

                                                    > Data is often stored in cache-friendly ways which benefits performance.

                                                    Notice it says often, not always.

                                                    And bear in mind, generally, data structures aren't just about storing data. They are about storing data in a very particular way.

                                                    • CyberDildonics 24 days ago

                                                      (to be more precise, component storage)

                                                      That's data, so it stores data, meaning it is a data structure.

                                                      So your assertion about it being strictly meant for data storage is just wrong.

                                                      No, using a data structure doesn't mean it isn't one.

                                                      Notice it says often, not always.

                                                      This doesn't matter. You're way off the map in what causes 50MB binaries.

                                                      data structures aren't just about storing data. They are about storing data in a very particular way.

                                                      Same thing, you're pretty deep in the replies and still not making a point.

                                                      • fluffybucktsnek 24 days ago

                                                        > That's data, so it stores data, so it's data structure.

                                                        Technically, the component storage is, at best, a ADS. But that's grasping at straws given that you can just store components directly in a function's stack frame. Still, the component storage isn't "the ECS" in the same way that a service injector isn't "the Clean Architecture ", even though you'll always have them in some form in each.

                                                        > No, using data structure doesn't mean it isn't one.

                                                        Now, where did I say that?

                                                        > This doesn't matter.

                                                        For the discussion of whether ECS is a data structure, it is, given that you previously stated that ECS was meant for storing data, and "often" contradicts that.

                                                        > You're way off the map in what causes 50MB binaries.

                                                        I haven't asserted anything about it. You did, and you have yet to prove it.

                                                        > Same thing

                                                        Pretty much everything stores data in someway. Which brings us back to the "kernel is a data structure in your eyes?" question from earlier. I don't think it is me who isn't making much of a point.

                                                        • CyberDildonics 24 days ago

                                                          No one knows or cares about whatever "ADS" is, injector services or 'clean architecture'. It seems like you're caught up in so much nonsense that you don't think that a class meant to store data is a data structure.

                                                          • fluffybucktsnek 23 days ago

                                                            ADS stands for Abstract Data Structure. ECS ain't even a class. Nothing you're saying now is making sense.

                                                            Edit: checking now ADS is a too literal of a translation (English isn't my first language). The more appropriate term is ADT.

                                                            • CyberDildonics 23 days ago

                                                              ECS ain't even a class.

                                                              ECS is an abstract term for a data structure. Have you ever programmed before?

                                                              • fluffybucktsnek 23 days ago

                                                                > ECS is an abstract term for a data structure.

                                                                Sources? I have cited mine for why it isn't.

                                                                • CyberDildonics 22 days ago

                                                                  You want a source for saying an ecs can be implemented as a class? It's all over github.

                                                                  • fluffybucktsnek 22 days ago

                                                                    Then, surely, you should be able to find a link to a ECS class's source easily. So where is it?

                                                                    Also, remember, it's not my responsibility to search to prove your arguments. Burden of proof is on the claimant, as it goes.

                                                                    • CyberDildonics 22 days ago
                                                                      • fluffybucktsnek 22 days ago

                                                                        Funny, there are no classes named "ECS" in that link. In fact, there are no classes at all, because you didn't actually link a class source. Why push the step of searching for the class towards the reader when you could do it yourself? Wasn't it easy? I wonder why?

                                                                        Taking a cursory look (which is already beyond my responsibilities) at https://github.com/redxdev/ECS/blob/master/ECS.h, by searching "class ECS" and "struct ECS" and "EntityComponentSystem" wields no results.

                                                                        • CyberDildonics 21 days ago

                                                                          They're ecs, some of them are wrapped in classes. Classes are just a simple programming structure. You should probably learn how to program before arguing all this stuff.

                                                                          • fluffybucktsnek 21 days ago

                                                                            >They're ecs, some of them wrapped in classes.

                                                                            No, they aren't.

                                                                            > You should probably learn how to program before arguing all this stuff.

                                                                            Notice how I didn't reveal whether I program or not, yet you still made assumptions about it. I suspect that you either are a poor programmer or a troll.

                                                                            • CyberDildonics 21 days ago

                                                                              you either are a poor programmer or a troll.

                                                                              Didn't you just say something about "ad hominem" (even though you used it incorrectly, pointing out something negative if it's related is not ad hominem).

                                                                              You don't know what a data structure is or what a class does or doesn't do, that's not something programmers have to worry about. They don't have to consult wikipedia for a definition.

                                                                              • fluffybucktsnek 20 days ago

                                                                                It would be ad hominen argument if it was an argument, not a side note. Whereas, in your case, you used to dismiss my position as "no real programmer needs to consult the Wikipedia for definitions" (according to whom, you?).

                                                                                Since you failed to cite any third party source for definitions, whether your definitions are actually conventional depend solely on your authority as a programmer, in contrast to me, who cited Wikipedia (and there are many others I can cite too). An attack on your authority is no longer a fallacy, but, towards me, it is, since I never relied on my authority as a programmer.

                                                                                Never mind the fact that being a good programmer doesn't mean you know the definition of technical terms.

                                                                                • CyberDildonics 14 days ago

                                                                                  I linked you hundred different ecs data structures, did you ever learn how to program?

                                                                                  Never mind the fact that being a good programmer doesn't mean you know the definition of technical terms.

                                                                                  Yes it does. How would you know?

                                                                                  • fluffybucktsnek 14 days ago

                                                                                    Your link was basically a gish-gallop. I explicitly asked to asked link an "ECS" class source, instead you link an index of ECS libraries/engines/frameworks (not data structures, mind you). I picked the first, showed there was no "ECS" class, and your retort was "Theyre ecs". Now, your only retort is basically "all programmers now this". Can't speak for all programmers, but if someone were to ask for a array list implementation, I can easily directly link to Rust's Vec, or C++'s std::vector, or Java's ArrayList. Why can't you do the same for ECS if: a) it's also a class; b) it's easy to find?

                                                                                    > Yes it does. How would you know?

                                                                                    Better question: why being a good programmer guarantees you good knowledge about technical definitions? Being a good mason doesn't mean you have the formal knowledge of a civil engineer.

                                  • fluffybucktsnek a month ago

                                    Other ECS implementations might not, but Bevy does come with a system scheduler. You register systems (functions that operate over the components) and, through their parameters, Bevy's scheduler decides how to parallelize the registered systems while avoid data races.

                                    • CyberDildonics a month ago

                                      Other ECS implementations might not, but Bevy does come with a system scheduler.

                                      That's an ecs data structure and a system scheduler. If I make a vector and a system scheduler, vectors don't suddenly have system schedulers, they are two different things.

                                      You register systems (functions that operate over the components)

                                      That's just adding a function pointer to a field.

                                      • fluffybucktsnek a month ago

                                        > That's an ecs data structure [...]

                                        ECS isn't a data structure tho, it's a pattern. You must be referring to the component storage. That's, at best, half the equation. You do realize the discussion is about the 50MB program, which uses both the component storage, the system scheduler and other features, right?

                                        > That's just adding a function pointer to field

                                        Just as much as creating a new process, through the IP/PC field in the TCB. Don't know why you focused on that particular point, but sure.

                                        • CyberDildonics a month ago

                                          ECS isn't a data structure tho, it's a pattern.

                                          Every implementation out there is a data structure. You keep talking about things that use it and then lump them together. That's just you.

                                          You do realize the discussion is about the 50MB program, which uses both the component storage, the system scheduler and other features, right?

                                          No, the first person I replied to said that justified a 50MB program. A few other software components don't make any sense either. 50MB is not something you get to with 4 or 5 parts of a game engine. That's the stripped binary too, it was originally 700MB.

                                          Don't know why you focused on that particular point, but sure.

                                          You brought it up, I'm not even sure what point you are trying to make.

                                          • fluffybucktsnek a month ago

                                            > Every implementation out there is a data structure.

                                            Examples?

                                            > 50MB is not something you get to with 4 or 5 parts of a game engine.

                                            Depends on the engine's architecture, runtime, etc. Again, don't know if you are blaming the bloat on those components alone (it seems like you are), but you haven't established a direct link between said components and the bloat, thus, it's hard to properly reason about the tradeoffs given that we don't know how said bloat scales.

                                            > That's the stripped binary too, it was originally 700MB.

                                            Actually, no. Rust doesn't strip binaries on release by default. There's a reason there's a guide about minimizing Rust program sizes.

                                            > You brought it up, I'm not even sure what point you were trying to make.

                                            You are the one who nitpicked over "You register functions", ignoring the rest of the sentence.

                                            • CyberDildonics a month ago

                                              Depends on the engine's architecture,

                                              No, it depends on excessive dependencies that themselves have dependencies.

                                              There's a reason there's a guide about minimizing Rust program sizes.

                                              And 50 MB was the stripped version, what is not sinking in?

                                              • fluffybucktsnek a month ago

                                                > No, it depends on excessive dependencies that themselves have dependencies.

                                                Not necessarily. Not every dependency will generate code. Furthermore, those dependencies of dependencies are rather small. If you're so certain that's the case, then provide an actual analysis over a case. Would be an interesting read.

                                                > And that 50MB was the stripped version. What is not sinking in?

                                                From the reddit post you linked:

                                                > paholg: Rust debug binaries tend to be large. What's the size of you compile in release mode? > talentedBlue: 49M. looks more reasonable > CleanCut9: You can strip the release binary to get it even smaller if you want

                                                What didn't sink in is the fact that you don't seem to have read the linked thread appropriately.

                                                • CyberDildonics a month ago

                                                  Not every dependency will generate code.

                                                  Who said that?

                                                  Furthermore, those dependencies of dependencies are rather small.

                                                  No, they add up to 50 MB.

                                                  • fluffybucktsnek 25 days ago

                                                    > Who said that?

                                                    Your assertion that dependencies are the cause of the bloat is only trivially acceptable if, at least, every dependency actually contributed into the binary size, nevertheless in a significant manner. Thus it is a counterpoint.

                                                    Which brings to...

                                                    > No, they add up to 50MB.

                                                    You are just asserting this. The thread you linked doesn't really support this. So I'm asking for actual proof, like a disassembly, or analysis through other tooling.

                                                    • CyberDildonics 24 days ago

                                                      Your assertion that dependencies are the cause of the bloat is only trivially acceptable if, at least, every dependency actually contributed into the binary size, nevertheless in a significant manner. Thus it is a counterpoint.

                                                      That makes zero sense. That's like saying your luggage can't be too heavy because it contains a feather. Think about this super hard.

                                                      So I'm asking for actual proof, like a disassembly, or analysis through other tooling.

                                                      You think you need disassembly to see file sizes?

                                                      • fluffybucktsnek 24 days ago

                                                        > That's like saying your luggage can't be too heavy because it contains a feather. Think about it super hard.

                                                        There's nothing to think here. This analogy is stupid at best, profoundly ignorant at worst. We both agree that the binary is 50MB (the weight), so the "luggage can't be too heavy" is already nonsense.

                                                        > You think you need disassembly to see file sizes?

                                                        I mean the cause for the 50MB, if that wasn't clear (somehow).

                                                        • CyberDildonics 24 days ago

                                                          This analogy is stupid at best, profoundly ignorant at worst.

                                                          No it isn't. If you could explain why you would have already. Saying that some dependencies aren't heavy so the problem isn't dependencies doesn't make any sense. Huge bloated binaries are from lots of bloated dependencies because people aren't actually writing 50 MB of stuff to do what they need.

                                                          • fluffybucktsnek 23 days ago

                                                            > If you could explain why you have already.

                                                            I have my suspicions. But I rather speak with certainty rather than spout unfounded hypotheses as facts.

                                                            > Saying that some dependencies aren't heavy so the problem isn't dependencies doesn't make sense.

                                                            If I did say that. I said that isn't necessarily dependencies, because you have yet to prove it. If you do prove it, then that is that. As of now, all you've shown is that thread.

                                                            > Huge bloated binaries are from lots of bloated dependencies because people aren't actually writing 50MB of stuff to do what they need.

                                                            Restating what I've said prior, you are just asserting this, but have yet to prove it. For starters, what are the specific bloated dependencies? How much space does each dependency actually occupy in the final binary? A disassembly would answer those really quickly.

                                                            • CyberDildonics 23 days ago

                                                              what are the specific bloated dependencies?

                                                              Not a single data structure, that's for sure. Have you ever programmed before?

                                                              • fluffybucktsnek 23 days ago

                                                                > Not a single data structure, that's for sure.

                                                                Even though you have to actually substantantiate this, for the sake of brevity, let's go with it. All you have crossed is a single potential cause, not proven a particular one.

                                                                > Have you ever programmed before?

                                                                Let's say I haven't. How would it impact your argument? Whether I'm a programmer or not won't magically substantiate your position.

                                                                • CyberDildonics 22 days ago

                                                                  Let's say I haven't.

                                                                  That explains why what you're saying and focusing on doesn't seem to really make sense.

                                                                  Even though you have to actually substantantiate this,

                                                                  Data structures are parts of programs that hold data. Have you made a data structure before?

                                                                  • fluffybucktsnek 22 days ago

                                                                    > That explains why what you're saying and focusing on doesn't seem to make sense.

                                                                    Or it could be just you. Even presuming you're a good programmer, that wouldn't make your arguments good by default.

                                                                    > Data structures are parts of the program that hold data.

                                                                    Not according to Wikipedia:

                                                                    > In computer science, a data structure is a data organization and storage format that is usually chosen for efficient access to data.

                                                                    ECS doesn't stipulate any storage format, as shown by the previous definitions, only that your application will be architected around Entities, Components and Systems. How they are stored/managed is up to the programs/frameworks/engines to decide, and this storage is just one concern an implementation may have, just like how storing ViewModels is just one concern of a MVVM framework, but not all.

                                                                    I'm no stranger to using unorthodox definitions, but I would prefer if you were upfront that your definitions are unconventional, rather than pretend that they are common sense without citing any third party authority.

                                                                    • CyberDildonics 22 days ago

                                                                      So programming doesn't matter and data structures don't hold data?

                                                                      • fluffybucktsnek 22 days ago

                                                                        Please cite exactly where I said any of that.

                                                                        • CyberDildonics 21 days ago

                                                                          You don't realize wikipedia is saying the same thing and you don't realize what 'format' or 'structure' means or that some terms aren't specific. Please learn how to program before talking about programming.

                                                                          • fluffybucktsnek 21 days ago

                                                                            So, rather than actually explain what Wikipedia means with terms such as "data organization" and "storage format", you just dismiss the whole thing with an ad hominem.

                                                                            From HN guidelines:

                                                                            > Please don't post shallow dismissals, especially of other people's work. A good critical comment teaches us something.

                • fluffybucktsnek a month ago

                  Exactly this.

  • reitzensteinm a month ago

    Compile times are my biggest struggle, too. I'm vibecoding Bevy with parallel agents, and the bottleneck is often compiling the changes on my 7950X, not getting Codex to write them.

    As far as file sizes go, I'd be really interested in how a Rust compiler that didn't monomorphize so much would perform. Right now you have to modify the source code to write polymorphic generic functions, but it doesn't strictly have to be that way (at least as far as I can see).

    I wouldn't use Bevy for a web only game either, especially while it's still single threaded on WASM.

    • 0x1ceb00da a month ago

      Bevy website has some tips for improving compile times, have you tried them out?

      • reitzensteinm a month ago

        Yes, absolutely. I did that before vibecoding too, as rapidly editing and testing is so crucial.

        The way Bevy's internal state is so easily saved and loaded is convenient for this.

vivzkestrel a month ago

- since we are on the topic, i wanted to ask people here

- could someone kindly share some resources on c++ game development

- here is what i have

- https://gamedev.net/tutorials/

- https://shader-learning.com/

- https://learnopengl.com/

- https://shaderacademy.com/

- https://www.gabrielgambetta.com/client-server-game-architect...

- https://github.com/0xFA11/MultiplayerNetworkingResources

- just a headsup, i am looking for 3D game development without unreal, unity , godot or any of those engines

michaelteter a month ago

Those of us unfamiliar with Bevy can deduce what it might be, but it would be really nice if your introduction included at least a link titled "Bevy game engine" which links to bevy.org.

Then your unfamiliar readers can first hop to bevy.org to see what it's all about.

nextaccountic a month ago

> These guides are up to date with Bevy version 0.18

This is huge, thanks. Unfortunately many Bevy resources became stale (the Bevy cookbook was even abandoned, there was little interest in keeping it up to date and so there were many sections for, say, Bevy 0.12)

roflcopter69 a month ago

There's also ongoing work on the (for now hidden) Bevy Book https://bevy.org/learn/book/intro/

Already seems like a great resource to me but it's still WIP.

  • Based-A a month ago

    As someone who is actively working on the Bevy Book, the next engine release should include the first public release of the Bevy Book. And once it's out, then we'll be doing our best to keep it updated and expand it alongside the Bevy engine.

    • dannersy a month ago

      This is great news and thank you for work.

    • Tade0 a month ago

      Great news, thanks. I have to say that several times I tried to invent something from scratch only to eventually find, reading the documentation/examples, that Bevy already has that part covered.

      I now default to the examples, but a book would greatly help.

reitzensteinm a month ago

This site is excellent. I emailed the author to thank them after reading it cover to cover, and they replied and asked if anything was unclear or if there was anything I wanted to see explored more.

Quite the dedication to a free resource!

jvuygbbkuurx a month ago

My problem with bevy isn't the basics, but the architecture. I always feel like I'm making wrong decisions on if something should be a component or a field, and how it interacts with other stuff in systems. I just feel like I'm making an unmaintainable mess, but I'm not sure how it could be improved.

  • GenericCanadianOP a month ago

    I think ECS is a new enough architecture that the patterns are still very much folk lore.

    I think a lot of the way I try and structure my Bevy apps comes down to trying to separate the rendering from my game logic. Its very easy to confuse the two responsibilities.

    Coming from the web and Ruby I find the lack of automated testing and TDD to be foreign to me. So I've been trying to figure out patterns that make my games easier to test. Hoping to write about it soon.

    • EddieRingle a month ago

      > I think ECS is a new enough architecture that the patterns are still very much folk lore.

      ECS is a pretty old idea, built on concepts that are even older. I was playing around with an ECS-like engine of my own in C over 10 years ago, based on blog posts and talks that are now 20-25 years old. Even the Wikipedia article for ECS can trace the origins back to the 1960s. (Though obviously it hasn't been applied to video games for quite that long.)

      Nowadays I'd probably reach for Godot and Kotlin if I just wanted to build a game in an ergonomic language on a solid foundation. You could still apply ECS concepts there, as well.

    • ukoki a month ago

      > lack of automated testing and TDD

      Rust has testing in the standard library -- IMHO Bevy is far easier to test than most game engines because it's "just rust". You can test game logic by starting headless apps, proding the ECS, and making assertions on the results.

      For acceptance tests I've dusted off cucumber (after ten years of not thinking about BDD), as I it works great with Bevy

  • bigbadfeline a month ago

    > I always feel like I'm making wrong decisions on if something should be a component or a field... I just feel like I'm making an unmaintainable mess,

    That is true for all game platforms, experience takes care of it, don't give up.

    About compilation time concerns, it doesn't seem to be a problem with Bevy, there's a fast compile mode with very reasonable performance.

    However, I didn't see any scripting, there are scripting options for rust, it would be good to have bindings for some rust-like scripting.

Ugvx a month ago

This has been on my list to kick off for a while. From previous times I looked at it, these tutorials are the only text based tutorials that are really kept up to date. Love it

jippo a month ago

Thank you. Not many free and in-depth resource for Bevy engine. Mostly are paid ones. I am surprised that you switch from Ruby to Rust. Seems a different beast to me.

  • jaggederest a month ago

    As a long time ruby enjoyer and now also rust enjoyer, the core syntax and systems of rust are very rubyesque in a lot of ways, you can tell that some of the core contributors liked the language.

    • nextaccountic a month ago

      yeah ruby API ideas and the _why poignant guide specifically, they were very influential in programming in general. a number of early rust devs came from ruby as well. all original authors of cargo worked on ruby's bundler earlier. etc

    • IshKebab a month ago

      Really? What do you think comes from Ruby? Rust mostly seems to be inspired by ML and C++.

      Actually I just checked the "official" list and they only list the closure syntax which seems pretty minor:

      https://doc.rust-lang.org/reference/influences.html

      • littlestymaar a month ago

        A significant portion of the prominent community members come from Ruby so I guess there must be something …

      • jaggederest a month ago

        Iterator style, chaining, traits, blocks all feel very rubyesque, and expression syntax as well, plus the cargo toolchain is very bundler-informed.

      • leafario2 a month ago

        Expression orientation

        • IshKebab a month ago

          That's from functional programming.

          • saghm a month ago

            I don't think anyone claimed that Ruby and Rust were the only two languages with those features, just that they're something they both have in common.

            • IshKebab a month ago

              The claim is that Rust took espression-orientation from Ruby. That's unlikely - it is much more inspired by FP languages which are also expression oriented.

              • saghm a month ago

                Ah, you're right, I definitely misread that the first time. I think the only thing that Rust probably was directly inspired by Ruby on was the syntax for closures (which is not exactly the same, but when the closure uses a block rather than returning an expression directly it's similar, and I vaguely recall seeing something about that being intentional).

  • nextaccountic a month ago

    > Mostly are paid ones.

    can someone link to some of those paid resources?

  • sivakon a month ago

    can you tell me what those paid ones are?

SilentM68 a month ago

Thank you :)

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection