So I’m thinking of making a game where, if it gets big enough, I would add a skill-based matchmaking system to it. SBMM gets a lot of bad rep due to it being pretty inaccurate in games like Fortnite and Warzone (I am also pretty sure they are always switching up the way it works), however, I think mine would be OK since it would try to pair you with servers/matches where your average Kill/Death Ratio was similar to the average one in that server.
I’m aware you would use MessagingService for this, and I’ve used it before; however, I have not used MessagingService for back-and-forth communication between servers, I have only used it for doing things like changing the music in all servers after someone bought a developer product to do so.
How my SBMM system would work:
---Player joins game.
---Is player following a friend?
------If yes, send them straight to their friend's server.
------If no, proceed.
---Are there more than 5 active servers?
------If yes, proceed to SBMM.
------If no, send player to a random server. No point in continuing.
---Does player have a decent number of kills and deaths to be able to compare?
------If no, then send them to a random server.
------If yes, proceed.
---Find player's KDR.
---Use MessagingService to communicate to all servers the player's KDR
------Depending on how many servers there are, it might be a good idea to limit this to 50-100
--------How would I do this? MessagingService is supposed to communicate to ALL servers
---Script in a different server would get this information and perform math on
---Find average KDR in that server
---Is it equal to the KDR of the player we are comparing?
------If no, subtract the player's KDR from the server's average KDR.
-------Find absolute value of it.
-------Find the percent difference of the server's average KDR to the player's KDR
---This is the part where I'm confused. How would I send back information from all the servers that were a match of some sort to the specific server that created this request?
---Return the server ID + the percent difference of the average KDR there to the player's.
---Get back all server IDs + the % number they were compared to the player's KDR.
------When getting them back, look at each one. The one with the lowest % in comparison will be stored in a variable
When all comparing is done, send player to the server. Ideally, the % difference between the average server KDR and the player’s KDR will be less than 20%-25%, making the match somewhat fair.
I apologize for the weird formatting of my design matrix. Doing it this way was the only way I was able to visualize it in a clearer way