Hacker News new | ask | show | jobs
by TeMPOraL 3675 days ago
Would they?

I did read a bit on that, and tried to implement a simple game on it. What I've learned is:

a) it seems to be vapourware; there are some blog posts about it and examples floating around, but that's pretty much it

b) it seems to make sense only for MMO games, which are glorified interfaces to database tables anyway - hence the ECS model, which is about treating your game design as a database problem - fits it well

c) experienced people I talked about think this is a stupid approach, for reasons I'm probably too dumb to understand (except the efficiency ones)

d) in games that are not database-like MMOs, it's getting very hard to figure out what should be a component or a system, how many systems should you have, etc. etd.

e) it seems to seriously complicate implementing game logic - you end up spreading code that belongs together across many different "systems"

2 comments

Most modern engines, as far as I know, implement a component-driven approach. You can see it in pretty much any kind of public engine like UE or Unity and it works really well. Composition over inheritance any day. I don't really see why you claim that it seems to be vaporware, considering it's one of the most implemented types of game engines currently.

It is true that there are some degrees of limitations and implementations that different game engines go through and none of them is a 100% pure CES engine (something like http://www.chris-granger.com/2012/12/11/anatomy-of-a-knockou... ), where all systems are separated from the components and the entities containing them. Usually you'd have sets of components and systems and whatnot and different hierarchies, but the gist of it is still a Component-driven system.

> It is true that there are some degrees of limitations and implementations that different game engines go through and none of them is a 100% pure CES engine

One thing I vividly remember from learning about ECS is that the main sources on it repeatedly remind you that what UE or Unity do is not ECS, and that the way they understand the concept of "Entity" and "Component" is different. Entity Component System is not what UE or Unity do.

I'm developing NullAwesome[0] with an entity component approach, and so far it seems to be going rather well.

Using an ECS for game design actually has enormous advantages when you are coding a high-performance game in a language like C or C++: you can lay out the components of the entities however you want, so that systems on the hot path have access to as many components as they'll need without blowing the data cache. I'm not actually doing that for this game, but still, it has advantages outside of just MMOs.

[0] https://nullawesome.tumblr.com, https://github.com/bitwize/nullawesome