Hello lovely creator community,
I want to introduce myself. I am Madelyn, and am new to this community. The past few days I have been experimenting with UEFN and it’s going quite amazing. Yet I miss one feature that can also help many others. That is: allow matchmaking portals to send JSON data with a special private key to another island together with a listener event trigger device. Such that if we go from island A to B island B can send data from this session back to A by this listener. And island A sends through JSON all relevant data from the start to island B
Why?
First of all the main reason is that we can then create several game modes with matchmaking within a cluster of islands. So imagine you have 2 game modes that need some data communication, but they need separate matchmaking mechanics. Like for one island you need 16 players and the other 1 to 4. Then with a matchmaking device if I understood it correctly you can then link to the other island without a problem. But the downside is you lose all the data associated with island A and you can’t communicate back from island B to A about victory conditions or other things they accomplished.
My Suggestion
Allow us creators to add request and response data to the internal island system when using the matchmaking portal device.
How would this work? When the private key matches, the JSON data is read. Then when joined using the registered Matchmaking Portal Device, a special inter island communication object is created. Using the given trigger device that is send through a listener interface (aka a socket that sends an inter island channel to a special trigger device). That exists as long as the player doesn’t leave the session. Session is now redefined as the island clusters the player went through, through matchmaking devices.
When a session ends (or player leaves the island except for transfers to other islands) whichever comes first all data is transferred that was put into the listener queue. SO, to keep the cost low, you can keep the to send data in a queue, and limit the key value pairs to a maximum of a weak_map size (aka persistent storage max of 128kb if I remember it correctly). When updating a said key value pair, the queue listener just updates those values.
The newly added trigger device functionality than sends on a receive of matchmaking response event (which triggers before lobby closes or when the player leaves the session) a trigger through a specific channel that other devices can listen to and be manipulated by verse code. In the end this allows us creators to create a cohesive multi island experience without the need to worry about webAPI stuff which we currently don’t have access to.
Potential Risks
A poorly implemented private key system can of course lead to cheaters within a given island, or invalidated event results. This means that when an island creator enables this option they need to validate the JSON data by removing malicious parts (aka sanitizing). Which may make the life of us devs more difficult, but on the other hand if we make it easier with expecting a weak_map like structure that JSON is that can check if said record exists. The damage that can be done is already way smaller. But knowing this, it may be worth to also look for potential other communication mechanisms like the private key can for example change every 30sec through a seed mechanism based on time like 2FA often works with authentication apps.
Alternative
An alternative which is actually also quite powerful and can be better than the Q3 skill based matchmaking system, is a pre-join event device where you can check if a player is valid to join said session if it returns false the player moves on to the next lobby. And with a timeout creates their own lobby. What this allows us to do is make a skillbased matchmaking system our selfs but also allows us to solve this island communication problem by keeping it all within one big island, and partitioning it into sections with special data set before island transfer to self. Which allows you then the verify if said player can join the given lobby7 of a special event or minigame.