In a nutshell, to make them modular, you communicate between them with interfaces.
If you do it with casting and custom events, they ‘know’ about each other. It’s perfectly possible to be ‘modular’ here, but there is still a deep connection between the actors.
If you use an interface, it’s called on an Actor. It doesn’t care what kind of actor, the actor might not even implement the interface, it doesn’t care.
You see, no casting, no knowledge in one BP or the internals of another. The only access point you have is the interface.
You can build your spaceship like this. The only way each part works, is by communicating through interfaces. That’s it.
The only time this breaks down, is when you want to have one-many functionality, ie, event handlers.
At the moment, in blueprints, you have to know what kind of actor you’re binding to, and then it’s all blown.
But for the most part, yes, interfaces will get you there…