Game design, game programming and more

Marketing yourself as a programmer

A number of readers asked questions about programming careers, both about getting into game-development as well as staying employed in software engineering. I started writing a comment to JM about age-discrimination but it turned into this blog post about getting a great software engineering job. JM asked: How did you manage to stay in this […]

The making of Warcraft part 1

Back before the dawn of time, which is to say when PC games were written for the DOS operating system, I got to work on a game called Warcraft. I get to lead a project! While I had developed several PC games, a couple of Mac games, and seven console titles for the Super Nintendo […]

Scaling Guild Wars for massive concurrency

TL;DR: Server-side game recording is awesome for performing scalability testing, as well as reproducing game bugs and enabling players to replay their game experiences. How to load-test game servers In anticipation of the launch of Guild Wars 2 in August I thought it would be interesting to talk about some of the techniques we used […]

Detect client disconnects using named pipes in C#

TL;DR: Solved – after several failed attempts I discovered how to detect client disconnects when using named pipes in C# — the article below includes relevant code snippets from my CSNamedPipes GitHub project. In my spare time — of which there’s not much since I have four kids — I’ve been helping someone solve a […]

Error handling using forever-loop

One of the biggest hassles in programming is handling error conditions. It’s also one of the most important parts to get right because improperly handled errors lead to security defects and general unhappiness of your users. Error-handling code sucks because it complicates the flow of the code that does real work. Consequently, most programming articles […]

Building Linux virtual machines on Windows

TL;DR: Want to build Linux virtual machines to run on your Windows computer? Check out linux-vm, which contains everything you’ll need. Edit: The original scripts (“build-linux-vm”) no longer work. I’ve rewritten the project and created a new GitHub repository (“linux-vm”) that *does* work, and changed the links in this article to point to the new […]

Reducing perceived latency

Before Instagram was a billion dollar company, Mike Krieger posted a presentation called Secrets to Lightning Fast Mobile Design about how his team made the Instagram photo-sharing application feel so responsive, which is one of the key reasons their company has garnered so many users so quickly. This slide caught my attention because the same […]

Choosing a game network library

Since I’ve been developing online games since 1991, many folks have asked me to recommend a 3rd-party network library for their game project. Unfortunately, I can’t! At least I can’t recommend one from personal experience because the projects I’ve worked on — Warcraft, Diablo, Starcraft, battle.net and Guild Wars – were all built on proprietary, […]

Writing Server and Network Code for Your Online Game

I spoke this year at the Game Developers Conference (GDC 2012) on “Writing Server and Network Code for Your Online Game”. Since I tend to talk quickly, to say the least, I thought it only fair to post my presentation slides for those who attended but didn’t manage to take notes fast enough. I find […]

Installing firewall exception rules programmatically

Writing installers for applications requires a substantial effort, even when using tools like InstallShield. My challenge for today was to write as little code as possible (because I’m lazy) to configure Windows Firewall exception rules so that the game I’m working on wouldn’t “pop” a dialog box asking the user to configure firewall settings — […]