I'm trying to research simple but realistic matchmaking. A lot of references to elo online are brief tutorials about finding the two players with the closest elo then throwing them together.<p>However, if you play a modern game, that's not what happens. If you queue up for any FPS or MOBA, there's a waiting time, even if there's hundreds of other players on. The matchmaker is trying to find players with similar Elo in similar locations with similar map choices and probably prioritizes players who have been waiting longer. That's a lot of parameters to balance.
What is actually happening in that wait time? How does one go about deciding their parameters for when is too long to wait, when to keep waiting for potentially better matches even though you have enough players to start a match, etc.
Then how is that actually implemented? Do I just block my mm server for 15 seconds in a loop and keep rechecking for "good" matches according to my parameters? (I am a hobbyist amateur, if that wasn't clear).<p>Interested in any tutorials, books, or research papers.
Games with peer to peer networking also need (or want) to establish connectivity between candidate matches. No sense matching two players that are behind NATs that won't be able to communicate.<p>It does probably make sense to wait a limited time for a better match though; better to wait a minute for a better match than to start right away and play many minutes of a terrible match. The wait time might vary based on the quality of the match... but you don't want to have someone stuck waiting if they keep getting matched, but the partner finds a better match.
I've personally used trueskill for n-n team balancing: <a href="https://trueskill.org/" rel="nofollow">https://trueskill.org/</a><p>I haven't had enough players to actually have enough data / joining players to actually tune those parameters. If I did though I would store joining data and try out different strategies offline using gradient descent / grid search.