Hermes
This plugin is still under development and will be free on my ModularityPractice github
Hermes
is a plugin inspired by Lyra's GameplayMessageRouter
. If you're familiar with that plugin, you'll be very familiar with this.
For those unfamiliar with GameplayMessageRouter
, here's a summary of Hermes
:
Hermes is a subsystem, enabling global or local communication between multiple classes with no hard references.
Messages are handled through tags (channels) and a message (instanced struct). For an object to receive a message, they must be listening to a matching channel and the same struct type as the message that is being broadcast.
You can send message to a specific object. The object can then receive the message through the HermesInterface.
The receiver does not have to be listening to a message to receive this. You can send a unique message to a specific object with no restrictions.
There is no async node like you find in GameplayMessageRouter, it rather uses a simple delegate. This is to improve C++ usage and reduce some of the Blueprint spaghetti that can occur with multiple async nodes chained together.
Hermes supports "wild" messages. These are pure FName channels that are not bound to a gameplay tag.
The biggest flaw I found in
GameplaymessageRouter
is that in big projects, it becomes easy to lose track of where messages are being sent from and who's receiving them to track down bugs. That's why I've added better debugging capabilities through Cog.
Last updated