In the latest feature for education site Game Career Guide, NCsoft Europe lead programmer Adam Martin presents the first part of a two part series on breaking in as a networking programmer, giving a run down for would be programmers on how to start and what to study
In this excerpt, Martin explains that networking is a field of programming in extremely high demand as more games work themselves online, and details precisely what the job entails:
"Depending on a game's design, networking can easily be one of the top three hardest coding challenges in a development project -- sometimes the hardest. Although hardware has become faster and better infrastructures have increased bandwidth, every year the two toughest problems of networking rarely get any easier: latency and distributed state.
The deciding factor in latency is the speed of electricity in a wire, a limit that we're already close to reaching in many places. The problem with distributed states is that computers in separate physical locations will never be 100 percent in sync (unless you magically reduce latency to zero), and for the same reason you can never know exactly how out-of-sync they are until after the fact.
Bearing these challenges in mind, network programmers have three core responsibilities: 1) using tricks to reduce latency; 2) helping the rest of the development team change its systems to work with those tricks; and 3) implementing a complete game server (completely different from the client development of most games).
As more and more games seek to take advantage of the internet, either for core gameplay (as in MMORPGs, fast-action multiplayer RTS games, or first-person shooters), or for secondary activities, such as community building or modding, the demand for network programmers is at its highest now and seems to only be increasing."
You can now read the complete feature
, with more from Martin, including a full list of recommended coursework for would be programmers (no registration required, please feel free to link to this feature from external websites).