Mutliplayer Systems: What is free and what are the pros and cons?

I’m a new Unity creator and I would like to create a multiplayer game. Don’t worry about skill level since I learn easily, and have previous experience with multiple languages (and multiple unity projects so relatively new). I am looking for a way to implement multiplayer. Is there any way to set up a multiplayer system that can be accessed from any location? From what I understand, unet is free. However I also (think) I understand that it requires Unity Multiplayer service which is not free. I’m looking for a free system that allows me to do multiplayer without paying for anything. If nothing is available, that is completely understandable since something has to be hosted somewhere. Worst comes to worst my game will be set up with Mirror, and will be only be accessible through devices in the same network. Otherwise, if anyone has any suggestions for systems that are free, and that allow multiplayer connecting computers from anywhere (by this I mean a system where anyone can connect to a game from anywhere).

Thank you for your time,

L0raxeo

This is generally good question, and unfortunately currently there is no simple solutions to it. You’re mentioning a lot of different terminology but I assume that you’re looking for cheapest solution (if possible free plugin + free or cheap networking costs in general)

To describe it a little better, when you build your own game you have to decide first between:

  1. Dedicated game servers
  • a lot of plugins support this
  • better cross-platform compatibility
  • better protection against hackers
  1. P2P
  • cheaper as there is no need for servers, player is a host
  • not that complicated in theory, but not many people share how they implement it

Using dedicated game servers, unfortunately as far as I know, you cannot make it for free, you need to pay for servers or build up your own, and it can be one of the biggest cost in the long run on your entire game if you’re lucky enough to have a lot of players. Using P2P (peer to peer) you can get away for free, however you need to handle few stuff by yourself as there is no simple solution that just enables you good P2P as you might think.

If you’re looking for plugins that supports P2P, I’m not 100% sure but Mirror might support it in client-server format where one player takes up the role of server.
If you’re ok with Mirror, go ahead use it, or even try the new MLAPI. However, for me, as I worked with UNET before, I find that style of programming really complicated because your game needs to use different code to run for multiplayer and for single-player. Personally, I’m leaning more on low-level solution that handles networking for me but I can architect my game as I want, for example I can build up my game on data stream, and if I play an online match, i will just sync that data stream with other clients without needing to edit my existing gameplay code. This is reason why DOTS is useful, it uses similar or even same approach. However this is another problem for another topic.

What you use to program multiplayer (Mirror, MLAPI, etc) and what you use to pass packages around the internet between players are two different things. You might be confusing things because some solutions like Photon bundle both things in the same package.

For example, Steam offers free matchmaking, and P2P connections/relays. Sony, Microsoft, and Nintendo also offer such features for free on their platform SDKs. Epic Online Services has similar features for free, and can be used on pretty much every platform too.

Pros and cons: