Here’s the answer in a simple way:
The only benefit of event dispatchers over casting is game architecture modularity.
-
Memory load: As you build and scale a game, if you cast to things from a base class (usually Character), that class will grow in size and bloat. This means your entire game will be referenced at all times. This means insane loading times and bad performance.
-
Quality of life: Always casting also means your quality of life decreases. For one, you won’t have to navigate through a monster Character class every time you want to change/add something. But more importantly, if you use event dispatchers, you can put all the functionality for an object on that object itself. This is a huge workflow improvement because you don’t have to navigate to a base class, open it up, and put the other side of the functionality in there every time you want to communicate between objects. Just work in one blueprint when you’re designing it. If you don’t use event dispatchers (and interfaces), down the road you’ll find yourself with 15 blueprints open at all times trying to remember where stuff is and what you were even doing in the first place.
In summary: They do not make the code any smaller/shorter/simpler. They only make it more modular. They only structure it differently. This is key. And this helps both you and the computer not suffer with large complex projects.