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 … [Continue reading]
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 … [Continue reading]
Your new() is not my new()
One of the problems I've experienced using third-party DLLs is the way that they handle new and delete for C++ classes, which can lead to memory leaks or even memory corruption. This was a particular problem when developing the Guild Wars model and … [Continue reading]
Using transaction rate-limiting to improve service reliability
I develop and publish multiplayer games for a living, and have discovered some useful solutions for running reliable online services. The one I'm writing about today is how to implement reasonable usage limits so that services are less likely to be … [Continue reading]
A better way to update SQL stored procedures
A common pattern to manage SQL stored procedures is to drop the current procedure and recreate it. Unfortunately, this doesn't work if you're trying to run a high-availability service. Here's the (broken) drop+create pattern: -- Delete the stored … [Continue reading]