Hello!
I couldn't find any good answer about this topic, so I decided to make a new discussion.
How do one connect to a client-hosted game reliably?
In co-op games, making a dedicated server looks like an overkill, but I need to reliably connect 2 peers together.
My game is server-authoritative, not full P2P, but nowadays almost nobody knows how to port-forward, since AAA titles somehow do it manually.
The question is, how? Like in Borderlands, I just click on "go online", and suddenly others see my game online, and can join without any problem.
I have a self hosted lobby service( working with database ), the matchmaking is covered, the problem starts when it comes to directly connecting to an IP address.
I'm currently using RakNet for networking library, which I feel is a bit overkill, because I don't use any of it's high level features, only connecting-packet sending and receiving.
I've tried RakNet's NAT punchthrough, but that's not reliable enough. Often it gives punchthrough failed, which customers don't understand and claiming it's the game's fault that they can't connect, because Diablo 3 works. I, as a developer, of course I know what's the difference, but what can I do to fight this problem?
Is there any middleware solution you know of? How do bigger titles handle it?( like torchlight, borderlands, and other coop games )
I'm even open for paid services, libraries, anything.
Thank you
Edit: I'm using C++, and a self programmed engine