   nat punchthrough
  In order to implement NAT punchthrough I need to have my matchmaking server(introducer) running on a "non-NAT intermediary system".  So in order to program and test my matchmaking server do I need to obtain such a server to execute my code or is there a simpler way to test my matchmaker?   
  In general, NAT punch-through is a really annoying thing to develop, up there with graphics card compatibility in requiring access to lots of different kinds of hardware, device drivers, host machines, etc. It's not something you can really do a good job of on your own in your basement (unless you happen to be very rich and very determined).If you still want to have a go at it, then yes, you will need to get a host out on the greater internet. Cheapest is to lease a virtual private server of some sort -- for example, DreamHost PS, where they start at $15/month (plus a required fee of about $10/month as a shared hosting customer, where you can get a $50 discount on the first year when using the discount code "L33TN3SS").Another approach is to buy a few residential routers, a few development/test PCs, and one server PC. Then build your own little network, where the development PCs connect to the development server through one NAT router each, and then "punch through" your NAT routers to talk to each other. The nice part about that is that you can sniff the traffic at the upstream of the routers, to debug things. You can also plug in different routers to test specific equipment/firmware behavior.    Cable/DSL/Whatever |  NAT Router |Ethernet Switch  /   |   \\  /    |    \\ Router A   |  Router B  |   |   |  |    Dev Server   |  |  |Test PC ATest PC BDon't say I didn't warn you :-)   ;  Thanks for the reply, I'll probably end up going with the second option as I have most of the hardware.   ;Quote:Original post by hplus0603In general, NAT punch-through is a really annoying thing to develop, up there with graphics card compatibility in requiring access to lots of different kinds of hardware, device drivers, host machines, etc. It's not something you can really do a good job of on your own in your basement (unless you happen to be very rich and very determined).What's the alternative to rolling your own?  The only thing I was able to find in the forum FAQ was a reference to this website:http://www.mindcontrol.org/~hplus/nat-punch.htmlwhich only gives info about how you could implement your own nat punch-through.   ;Quote:Original post by venzonWhat's the alternative to rolling your own?Work for a company that has shown a business case that needs NAT punchthrough and can fund the development, or purchase of a third-party solution that is actively maintained.Or just avoid it altogether and implement UPnP or require users to open ports.   ;Quote:just avoid it altogether and implement UPnP UPnP is just a fundamentally broken concept. Please do not depend on UPnP. For example, if two players behind the same firewall want to play the same game (happens all the time in my household), UPnP will have real trouble.;  Check out logmein.com The basic concept is that they construct a vpn among a group of users,and their server transparently negotiates punch-through to addressesin your vpn.;Quote:Original post by hplus0603Quote:just avoid it altogether and implement UPnP UPnP is just a fundamentally broken concept. Please do not depend on UPnP. For example, if two players behind the same firewall want to play the same game (happens all the time in my household), UPnP will have real trouble.Does this statement apply to using just the Internet Gateway Device protocol portion of UPnP?   ;  Yes; for at least two reasons.First, if you're serving a game, you often need a specific port; forwarding the same port to two different machines won't work.Second, as far as I know, there is no good way of detecting and resolving conflict; you pretty much has a "one random user wins" policy, which can be very confusing to users, depending on situation.