← Back to context

Comment by monkeyelite

3 months ago

It’s incredible how many projects and articles have been written around ECS with very little results.

Quake 1-3 uses a single array of structs, with sometimes unused properties. Is your game more complex than quake 3?

The “ECS” upgrade to that is having an array for each component type but just letting there be gaps:

    transform[eid].position += …
    physics[eid].velocity = …

Hype as usual, too many people waste time on how to implement engines, instead of how to make a game fun to play.

Quake 1-3 were written for computers where memory was not much slower than the CPU as is the situation today.

But yeah, probably you don't need an ECS for 90% of the games.

  • Memory is sometimes faster today!

    • In absolute terms yes, but relative to the CPU speed memory is ridiculously slow.

      Quake struggled with the number of objects even in its days. What you've got in the game was already close to the maximum it could handle. Explosions spawning giblets could make it slow down to a crawl, and hit limits of the client<>server protocol.

      The hardware got faster, but users' expectations have increased too. Quake 1 updated the world state at 10 ticks per second.

      2 replies →

The important part of ECS (IMO) is more that it's a pattern that others recognize and less that it's necessarily the best pattern to use.