For the past 9 months, we’ve been working an ultra cool Global Events System for Unreal.
Do you know that painful moment when an action is taken inside your game (for example the player presses a button) and all of a sudden you need to turn a light on, open a door and this turn into a Cast-To fiesta?
It’s completely awful, I personally hate it. The first problem is that you need a reference to all of those items and the second one is you need to cast of all them and then call the specific function. This approach gets even worse when you need to do the behavior for a second object or even more through your game.
And that’s how our journey started with one goal in mind to have a truly global and simple system for events inside Unreal.
Today marks a really important milestone for us because we’ve completed our first monthly feature vote and I decided to share with the community what we’ve achieved so far.
What can you do with the Events System?
There are a lot of things you can do with this system, from creating simple mechanics such as interactions with an object to huge systemic worlds that allow interactions between different parts.
**There are 3 parts to the system as we know it today. **
- The event - consist of an UObject created inside your content browser who’s unique and used for reference
- The invoker - A specific action or trigger that lets everything know this event was triggered.
- The listener - Any object who’s interested in that specific event.
How can you use it?**
Instead of holding references and calling manually all your functions replace all of that with the Invoke node provided and select the specific event you want to invoke.
Inside your listeners implement any logic you would like to be triggered by any event. Yes, you can an actor or widget listening to multiple events and react to each one differently or even share sequences behavior.
What’s the best part?
The most requested feature and by far the one we are most proud of is the Payload for events. They are similar to Drag&Drop payloads from the UI system and they allow for transferring data through events. You can create your own Payload classes and add any kind of data to it with no additional work, just select your class from the invoke dropdown and all the nodes will spawn for you and will be sent to the listener alongside with the event.
At this moment we would love to gather as much feedback as possible from the community, so we can improve this system to allow the most intuitive and simple behavior.
If you got any idea or suggestion, please leave us a comment or add it here.
Thanks for your time.
We would love to hear from you!