   Networking Topics relating to games: Client-Server, Lobbies, Encryption, etc.
  Alright, just to give a little background, I've always been fascinated with networking but never fully delved into the area because I saw it as complicated and hidden behind a wall of "magic", per se. I spoke with one of my close friends, and programming buddy, yesterday for a short stint and we got into stuff called query servers, and port forwarding etc. To be honest, most of it flew right over my head but I felt like I was getting some of it.I've tried searching google, but the problem with my google-fu is that I honestly don't even know what I'm searching for. I'm hoping that someone here understands what I'm looking for, and can point me to some research, papers, or anything interesting relating to it.Now to specify exactly what I'm interested in learning. I would like to know more about how I personally would setup a server for a game, like what software is needed; furthermore, are there any places that tell about how to estimate the number of concurrent threads a certain server could handle (e.g. running multiple client-server games)? Is there any information on programming with the client-server methodology for games? My friend spoke about something called port forwarding for peer-to-peer and said it was a b***h, does anyone have any information on what he was talking about? Finally, what's difficult about making a sort of match-making service akin to Halo CE's online lobby?To calm your nerves, no, I am not interested in making an MMO. :P This is purely for in the future. I would like to at least be well versed enough to feel comfortable stepping into the shoes of a networking programmer. Thanks ahead of time guys.   
Quote:Original post by Halifax2I would like to know more about how I personally would setup a server for a game, like what software is needed; furthermore, are there any places that tell about how to estimate the number of concurrent threads a certain server could handle (e.g. running multiple client-server games)?Games don't tend to use a thread per connection so this question doesn't make much sense. Completion port programming tends to use a thread pool that exists inside the kernel. However if you just want to know the number threads normally you just do cores * 2 basically (hyperthreading essentially).Quote:Original post by Halifax2 Is there any information on programming with the client-server methodology for games? My friend spoke about something called port forwarding for peer-to-peer and said it was a b***h, does anyone have any information on what he was talking about? Finally, what's difficult about making a sort of match-making service akin to Halo CE's online lobby?Don't worry about peer to peer networking. It's just where every client connects to every other client. Port forwarding is a concept in routers. Basically if you host a server behind a router you might have multiple computers connected to that router. Without NAT punchthrough or port forwarding the router doesn't understand which computer to send the packet to when it receives a connection. All it has is a packet with an IP/Port and X computers. When you portforward you're saying to the router "hey send any packets addressed to port Y to this local LAN IP address which is your socket server.A matchmaking lobby is pretty "simple" (if you keep it simple). In it's most naive form you can just use PHP/ASP and a database to store lists of servers. Actually I'm not sure what Halo CE does. Is that like an automatic matchmaking service? I'd say worry about it later.Okay so to begin make sure you read the Forum FAQ. If you have questions about that stuff ask them. (I recommend using a library, unless you feel comfortable working at the lower level with Winsock (Windows) or Epoll (Linux). Might look at Raknet or Enet. I've heard good things).   ;  Thanks for the information Sirisian. The FAQ actually did help quite a bit. I will continue to read some of the links posted on it.   