Reduced coupling in Overwatch ECS

From a GDC talk about the architecture of Overwatch.

Overwatch, a multiplayer first person shooter, has impact effects for many of the actions a player can perform. Impact effects happen whenever a projectile collides with surface, creating a fleeting particle effect combined with a scorch mark decal to drive home the collision. Each instance of an impact has to interact with many different systems, including level of detail, rending, layering, particles, and textures.

There are many events which can cause an impact effect, and new sources of impacts can spring up regularly, but coupling each new impact to so many components resulted in overt, combinatorial complexity and coupling. The teams solution was to reduce the state of new impacts down to a single list, which was later picked up by a single impact system who's job was to apply all the necessary side effects. This created a [[Bottleneck of Simplicity]] between the impact sources and the impacts side effects, similar to immutable state in a declarative system.

#games #software