Original Post
Ok, I know this topic is close to the other NAT thread, but I didn't want to steal his answers from him. [smile] So here's the deal. When I originally wrote my internet support, I was using DX8. Strangely enough, the NATResolver8 interface and the other NAT compatibility suggestions are only in the DX9 documentation, so I didn't follow the guidelines there. [rolleyes] Instead I went from my own network knowledge which told me, "If a NAT is in the way, you won't be able to connect to a sever without port forwarding. And you can't set up forwarding without a static port. QED, I should have a static port for my internet games." My game is set up as a two-player-only Peer-to-Peer connection, which uses a web server on the open internet to snag the list of addresses of running hosts. The game port is static (12345) and specified in a host enumeration using the address listed on the server (ie, the public address), which I originally just used to obtain ping before allowing the player to choose where to connect. Basically, each game runs both a client and a host DP8Peer, and depending on whether you get invited or you invite someone else, the unused Peer is closed. Now that I've seen the DX9 docs, I see that this should work pretty well. I can see on my own computer that DP opens up the port for my game on the windows firewall, and since I'm enumerating every host on the list, on some NAT servers they should be able to connect to me through the port that opens. I enumerate using the public address, which the webserver gets from the HTTP requests to add the servers to the list, and according to the docs, any UPnP NAT servers should automatically set up port forwarding to the private address when the server launches. Now here's the deal. The game works on the open internet. If you run a server behind NAT and set up port forwarding manually, that works too. But it seems that in all other cases, you can not connect to, or even enumerate the server. In my own personal case, my machine is behind a NAT being run by my crappy ISP, so it's no surprise that no one can connect to me. But when I added internet support to the free demo and started seeing thousands of people online, only a small percentage of them could be enumerated. The rest have to sit around and wait for someone to come online who they can connect to, then it's a race to see who can hit "invite" first. Currently, I don't have a public server with root access to run a NATResolver on. The question is, if I did, would that even help? (It's a major pain to put out a new version for a small, one-line addition to the code to connect to a NATResolver.) Are so many people behind non-UPnP NAT servers, or is there something else going on? The docs make it sound like the NATResolver only helps with SOME NAT devices anyway. What should I do?