I have used the Event Bus in the past for the following:
- Rapid prototyping: I use the Event Bus pattern often when rapidly prototyping new game mechanics or features. With this pattern, I can easily have components that trigger each other's behaviors with events while keeping them decoupled. This pattern permits us to add and remove objects as subscribers or publishers with a single line of code, which is always helpful when you want to prototype something quickly and easily.
- Production code: I use the Event Bus in production code if I can't find a justifiable reason to implement a more sophisticated approach to managing game events. It's a pattern that does the job well if you don't need to handle complex event types or structures.
I would avoid using a globally accessible Event Bus like the one presented in this chapter to manage events that don't have a "global scope." For instance, if I have a UI component in the HUD that...