Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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.



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


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


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.


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".


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.


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.


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.


(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.


> 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.


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.


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.


ECS ain't even a class.

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


> ECS is an abstract term for a data structure.

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


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


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.



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.


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.


>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.


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.


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.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: