Before some people might go “that’s too ambitious” or “oh not this again”, I’m not looking to make a AAA quality game with massive dedicated servers and sprawling player counts. This is a learning project.
I’ve been using Unity since 4 was released, and I’ve been using PUN for about 3 years now. All the games I’ve made with multiplayer have all used PUN, as they’re small games where a player can be the server with no issues.
But in this case, I’d like to experiment with a large scale multiplayer project with dedicated servers, but I’m struggling to find a confident solution for multiplayer.
UNET and Legacy are out of the question, obviously.
I’ve researched Forge a bit and it looks the most promising, although from what I’ve read the documentation is severely lacking. I have nothing to back this up, though.
I’ve checked out Bolt and Photon Server, but they’re both capped to a CCU that you pay for, from what I understand. Which is not only not acceptable for me, since possible high player counts, but also if I’m having players host their own servers I don’t want to be capped because of the solution I’m using, despite dedicated server hosting. I feel like I might be misunderstanding Bolt and Sever though.
And of course, PUN, but that’s not an option. As a player is technically the master client and the server, which isn’t good for this kind of project. Not to mention the rooms, and that the rooms will shut down when it’s empty.
My experience is I got burned by uLink when support ended for it without telling the community. After a couple years I picked the project back up again and did a complete rewrite for Unet, but got burned again with low level networking issues that were very difficult to troubleshoot since you can’t see what is going on.
In the end I said “never again,” and spent the next 10 or so weeks writing a complete replacement of all the Unet functionality I was using and any additional features I needed on top of UDP Sockets.
After that I spent a week converting my Unet project over to my own solution and never looked back. Best decision I ever made for this project.
What you have described is the exact use case for writing your own custom networking solution. Your not going to find a decent premade prepackaged solution that just works for this sort of thing, its super specific to your game.
They also let you run local development servers, so I’m not sure if this means you could deploy the server tech to your own server infrastructure, it seems to conflict with their pricing model so I doubt it.
For Bolt it might be worth contacting Exit Games and just asking them what they recommend and telling them your concerns, they’re a good bunch!
If authoritative server is what you need, you can look for Appwarp S2. Or Photo OnPremises Server. In our latest multiplayer game Mukticamp, we used to have appwarp. Then we decided to look for alternative and gave photon a try. But I have found photon both costly and platform restrictive and resource hungry. Appwarp is cheaper, uses less memory and processing power, works on linux. Photon Onpremise Server is exclusively for windows I think. In photon you code the server side in C# where as in Appwarp your server side code is in Java. Appwarp is simple too, have a MMO demo, interest management and load balancing through master server and its sample code. I think photon has more builtin solutions and more options. But we have got what we need in appwarp, so extra features were redundant for me. Also learning curve for Appwarp is easier than photon. I integrated appwarp server up and running in a single setting(0.25 day). Where as it took me days for photon.
In both cases, you will have to pay them for CCU. You can role out your own networking, but I haven’t done something like that yet, so can’t comment on this part. I guess you will have to work a lot in low level networking, which I guess is not an easy one click task. Hope this helps.