Developing games is a full-time occupation, so it is no surprise that I’ve had less time for blogging as I’ve started creating a new game. After a two-year stint helping other folks publish their games I’m back to coding and game design full-time and having a wonderful time.
But for those of you who have enjoyed my blogging about the early years of Blizzard Entertainment and the development of Warcraft, StarCraft and Diablo, and want more, I’m glad to be able to share the news: there’s a book available today about those very subjects!
Back in January, 2011, an author named David Craddock contacted me to chat about my experiences in the game industry, and what caused Blizzard to go from an unassuming startup to the dominating presence it has today.
Over the past couple of years David interviewed me and many other folks who were there from the early years of Blizzard and Blizzard North, and his book provides an intimate look at their games and the people involved.
During those formative years of my career in the game industry — Blizzard was my first job coming out of college — I discovered joy and sorrow in large measures. I still have raw feelings from some events of those times, and I still look back with fondness on many others. This book is about our naivete and hopefulness as we undertook an adventure to reinvent the game industry.
I hope you’ll enjoy the book: Stay Awhile and Listen: How Two Blizzards Unleashed Diablo and Forged a Video-Game Empire
Game design, game programming and more
StarCraft: Orcs in space go down in flames
Dominion Storm game screenshot
In my previous article about StarCraft I talked about why we rebooted the project and changed it from a follow-on to Warcraft -- derisively called "Orcs in space" in 1996 -- into the award-winning game that we were finally able to deliver after two … [Continue reading]
Filed Under: Game design Tagged With: Starcraft
Avoiding game crashes related to linked lists
Diagram of memory layout for a doubly-linked list created using C++ STL library
In this post I'm going to talk about linked lists, a seemingly trivial subject that many programmers -- even good ones -- seem to get terribly wrong! Then I'm going to share techniques (with source code) to make your game engine code simpler, … [Continue reading]
Filed Under: Programming Tagged With: C
Tough times on the road to Starcraft
September 7, 2012 by Patrick Wyatt 161 Comments
Starcraft "Orcs in space" screenshot prior to the project reboot
I've been writing about the early development of Warcraft, but a recent blog post I read prompted me to start scribbling furiously, and the result is this three-part, twenty-plus page article about the development of StarCraft, along with my thoughts … [Continue reading]
Filed Under: Game design, Programming Tagged With: Starcraft
The making of Warcraft part 2
August 15, 2012 by Patrick Wyatt 41 Comments
In my previous article about Warcraft I talked about the beginnings of a series that would come to define Blizzard Entertainment and lead it to being one of the best-known and most-loved game companies in the world. But how did Warcraft go from an … [Continue reading]
Filed Under: Game design Tagged With: Warcraft
Debugging running server applications
This traffic jam shows what a programming deadlock looks like in real life
So you've written an awesome online game that works perfectly in the test environment, but when real users are playing the game server doesn't work properly. Now what?!? I was reading an article by Mike Perham called Debugging with Thread Dumps and … [Continue reading]
Filed Under: Programming Tagged With: debugging
About Me
I'm Patrick Wyatt, a longtime game developer, and this is my blog. [Read More …]
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 … [Continue reading]
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 … [Continue reading]
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 … [Continue reading]
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 … [Continue reading]
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 … [Continue reading]
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 … [Continue reading]
Instagram shows how uploading earlier in the photo-upload process increases UI responsiveness
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 … [Continue reading]
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 … [Continue reading]
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]
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]
I'm Patrick Wyatt, a longtime game developer, and this is my blog. [Read More …]
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]
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 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]