There’s a common problem in software design that doesn’t only exist in game development called code dependencies. In a project, small or big, every developer comes to the point where several modules depend on each other: The GUI renderer depends on the health points and inventory, the inventory depends on the object pool and player state, the rendering engine depends on the object pool, textures, geometry, and much more.
One goal of object-oriented programming is to write modular (thus flexible) source code, and one of the biggest rules is to keep dependencies low. This article will talk about a system that implements a message bus with fire-and-forget behavior, with the main target being eliminating dependencies in the sources.