What networking solution to go with? + some questions

First of all, I know this has been discussed alot, but I just can’t seem to figure out what the best choice should be in my particular case

So I’ve been doing some research lately on networking in Unity. I’ve been told the built-in Unity Networking won’t cut it when you’re going to do some advanced stuff. Also when testing around with it, I’ve had several NAT-punchthrough problems.

After some searching on the forums I guess there were 3 solutions I found to be most commonly used:

  • Photon Networking
  • Smarfox Server
  • ULink

Now, the main things I would like the networking to do are:

  • Send terrain voxel data to clients (large arrays of bytes basicly)
  • Players can start their own server within a client, other clients connect to the client via IP-Adress ( or maybe something like a friends system and invite friends), or either download a dedicated server application
  • Hold around 20 - 30 people in a single game
  • A database with users information such as name, password, player ID, maybe a list with friends (I guess this is possible with MySQL or something similar? )
  • Send reliable and unreliable packages

What solution would be best to go with, according to this wish-list? Also, is it allowed to ship a server application of let’s say photon for example, modded specifically for this game, or is that not legal?

I don’t have any experience in networking yet so any help is welcome :smile:

As Photon is your example, let me answer a few questions about it:
It’s perfectly legal to modify the Photon Server. Just download the Server SDK and get to know it. I suggest you also download our “plain” Photon Unity API, which offers the most direct access to the server. Photon Unity Networking is built on top of that to mimick Unity’s networking but it doesn’t sound like it would help you much.
Photon always uses a dedicated server (process) which all clients connect to. It does not use a DB, so you’re free to use any. Adding accounts and such should be relatively easy and you can send reliable or unreliable.
We are working on terms to redistribute the server. See the Requirements.
Photon is not built to haul huge amounts of data. We think it’s smarter to make small to medium sized packages and send those on demand.

Thanks for the info!

So if I understand correctly, I may redistribute a server application among my users, via my own site? Or do I need some special kind of licensing for that? It is meant to work the way like how minecraft does it. The servers set up by users won’t be monitored by an official master server.