I see a lot of parallels between these ECS discussions and those had by DBAs working on SQL databases.<p>Why not use a RDBMS engine, perhaps specially tuned, to handle your game's data? Joining arbitrary tuples together at runtime as fast as possible has been the fitness function of every commercial RDBMS vendor since inception. Latency incurred by the network hop and disk IO is probably helping to maintain an illusion that these engines are somehow fundamentally incompatible with gaming use cases.
His "Sensible ECS" is basically what I did on my (simple 2D) game, just simple structs with components, and functions that operates on these components.<p>That works well, although it does not features parallelism, but still managed to run on a old laptop that can at most run Windows 7.
The final paragraph has the Crux of the issue imo.<p>They admit their proposed solution of statically declaring functionality in an entity has a downside.<p>> The main limitation is of course that entity types are locked down at compile-time and cannot be changed dynamically.<p>ECS is used I believe mainly in highly dynamic games.<p>His proposed alternative to statically hard code functionality in entities is great if you don't have a dynamic functionality which a lot of games dont.<p>For games like RPGs or space exploration where you have a variety of different entities with a variety of different components you can't really hard code things.<p>ECS is a great tool in certain situations. Not a great tool in others.
Also, I think it's important to say that ECS is not the only composition option, you can just use "EC" (or also CES): while on ECS the behavior runs on systems, on "EC"/"CES" the behavior runs on components, which is the case on Unity (by default) and O3DE.<p>I believe the mentioned Scott Bilas famous talk about composition follows this "EC" model instead of ECS, except that he calls it Game Object instead of Entity.
Really didn't realize that most people think "Elastic Container Service" when they hear ECS? (I could be wrong, but it's also def not "Entity Component System", so should define the thing up-front)