Hello I had some questions about a matchmaking network for a multiplayer game. Basically i was wondering how hard it is to make a network that automatically matches players for a game. so you dont have to join a server. and when you end a game you can be automatically matched up in a new game, similar to what you see in halo 3. this is a pc game, i want to use unreal engine 4. I was also wondering if this is possible though peer to peer? would this system require setting up a dedicated servers? is there any pre made software already out there that can be implemented into unreal. for a game without a subscription fee, would this type of network be a viable option considering i wont be relying on xbox live. does steam support any networking for games? those are all my questions. thanks!
If you want the games to be peer to peer you would need one master “matchmaking server” (or multiple if the load is too much for one machine) this would be a server with some server software you’d likely have to write yourself. This would do the job of matching clients based on whatever parameters you set (rank, skill, etc.). Once it has a group of clients for a game it would need to determine which client to be the server. This could be entirely random or you can try and do something fancy to determine which client is most central to the group / everyone has a similar ping to. From there the matchmaking server would send a message to the client who will be the host to create a server and a message to the other clients with the IP of the host for the server.
There are a few issues:
- People would likely need to setup portforwarding on their router
- Not everyone will have a stellar connection for hosting, which would lead to a laggy game
- Host advantage issue (see Halo 2 as an example)
I would advise against peer-to-peer for matchmaking. Many console games rely on this, resulting in an abnormally small pool of potential matches. Connecting to a third party server can resolve this to some extent.
Like they said the best way to handle match making would be with a dedicated server to match players, after that the game can be peer-to-peer. But as soon as you speak of matchmaking you will need a kind of ranking system (visibe or not to the players) that will avoid new or bad player to fight against the best ones. You mostly have two choice for that, i wont go too much in details since it’s heavily rely on math but the 2 algorithm that are most used are Elo System and TrueSkill. Personally i think TrueSkill is better than Elo but its a personnal choice, if you want to read a bit more on the subject i suggest you
Computing Your Skill (Jeff Moser explanation)
http://research.microsoft.com/en-us/projects/trueskill/faq.aspx (TrueSkill Microsoft FAQ)
http://github.com/moserware/Skills (an implementation in C#)
http://research.microsoft.com/en-us/projects/trueskill/ (Simple explanation)
http://research.microsoft.com/en-us/projects/trueskill/details.aspx (Detailed explaination)
http://research.microsoft.com/pubs/74419/TR-2006-80.pdf (Offical Article)
thank you guys! i appreciate the replies! now if i do set up a dedicated server for matchmaking is that financially viable for a game that is sold for 15 dollars? with no subscription fee?
I think its can be financially viable, a matchmaking server shouldnt be too hard on CPU and RAM unless you have thousand players online. You could also put ads in your lobby or matchmaking interface to cover the cost of the server, if its not too invasive people wont wine about it.
Personally I’m using simple matchmaking script on Parse server. It costs $0 in result
great resource ufna! thank you everyone! i got some info to work with
Hello guys, I am new at these and I couldnt find a complete guide to make matchmaking system for dummies like me. Could you please help or send me any complete and easy video or documentation? Thank you for help.
Be great if these could be shared