Hi,
I know Unity has it's own networking API but in the past I have run into major issues running this outside a local network where I got NAT Punchtrough errors, strangely these seem to be still present and I don't want to run into the same wall again. Recently I have been working a lot with Java/Libgdx and the Kryonet framework for networking, and this works great. Now I want to play around with Unity again and I was wondering if there is something like KryoNet for C#. I know there are some paid networking frameworks like Photon but I just want to play around and perhaps eventually setup my own server somewhere so I have full control over it.
I have been looking into C# socket programming and this works, but it's hard to make a robust client/server system without tons of knowledge. So is there a framework, perhaps similar to KryoNet for C#, that would work with Unity? Where I could just run the server without problems locally or from Raspberry Pi and connect anywhere with a service like noip.com or eventually from a paid service like VPS, AWS, Azure, etc. Or perhaps the HLAPI or the Transport layer do work now or there is some work around for that NAT Punchtrough error?
More specifically, I want to create a lobby and a matchmaking system where 2 or more users can play games with/against each other.
Thanks,