Get the latest Education e-news
  • How to Become a Great Network Programmer: Part I

    - Adam Martin
  •  Network programmers, sometimes also called network engineers, are the people behind the technical stuff of any online multiplayer game. Just think for a moment about how complex a big MMOG is, from the ever-changing world, to the hacker sensibilities of some of the players, to the incoming credit card payments of thousands of people worldwide.

    Network programmers need to know not only all the minute details of traditional game programmer, but also low-level network protocols (such as TCP-over-UDP), distributed-state management (lockstep), lag-compensation techniques (dead-reckoning), client/server architecture, and more. Additionally, they're usually responsible for all the planning, design, and implementation of the game server.

    In theory, there are substantial differences between server development and client-and-protocol development, but in game development, these two jobs often are merged and handled by one person or team. It's easy enough to move between the two that I treat them as a combined subject for most of this article.

    Because network programmers need to be such heavy-lifters, they're often paid handsomely. And there's more demand for network programmers now than ever.

    Challenging A Network Programmer

    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.

    "Blow For Blow": Lineage II


    Like all programming jobs, network programming requires a degree. Computer science is the most straightforward department in which to study, but it's feasible to take some other path as long as it's still rooted in computer science at its heart and is at an institution with a strong traditional computer science department.

    It's possible to still be a good programmer without a degree, but a mainstream computer science course will teach you so much that will be directly useful to you that life is much harder without it. A game development course at an institution that does not have a computer science department probably won't give you enough traditional material to prepare for a career in game programming.
    For those of you currently in college, you still almost certainly have a choice about which modules or courses to take. However, there are a few key classes you should consider, which I'll list below along with some of the major take-away ideas you'll want to get out of them.

    At each university or institution, these courses might go by different titles, but you should be able to find a comparable class by reading the "What to learn" part and matching it with a course description or syllabus.

    If you've already been to university and want a refresher, or just want to cover the course material without attending, you could try MIT's Open Course Ware.


comments powered by Disqus