Introduction (early days of game programming)

Gamers all the way back in the Counter-Strike 1.6 (CS1.6) days all know what I’m talking about when I say “Zombie Mod.”  Zombie Mod (ZM) is a server-side modification to the widely popular multiplayer first-person shooter CS1.6.  To summarize the core concept of ZM in a few simple words: “Humans vs. Zombies.”

The existing terrorist versus counter-terrorist teams are transformed into Zombies vs. Humans.  A  run-through of a typical ZM round:

 

The round starts and everyone is human… for now.  Everyone frantically buys their weapons from the game weapon menu and chooses a fellow human to group up with, praying that they chose the right group.  Together, you run, searching for a place to hide or higher ground.

We’re about 45 seconds into the round and you luckily found a nice perch high enough to be out of reach of any humans.. when you hear a screaching in the distances followed by overlapping gun shots varying from pump shotguns to automatic rifles. You see a human – the one you almost decided to follow at round start – run into view from around a corner being closely tailed by a fast, bloody, scary creature quickly gaining ground.  He continues to shoot the beast away when all the sudden – *click, click click* – his clip is empty.  He’s trapped in a corner and the creature claws him as you watch him transform into one of them, a zombie.

Almost instinctually you begin emptying your clip into the once-human from your perch along with your group of human friends.  They run away, overwhelmed by the storm of bullets coming from your group.  You hear more screams and gunshots in the distance.  The bullet sounds are slowly, yet so quickly, substituted with screams and moans.  The gunfire ceases after another screach.  Your group waits.  They are ready – well, as ready as they can be.  No one is ever ready for what comes next.

You hear the several sets of footsteps approaching you – too many steps to count – coupled with moans that leave no room for silence.  A zombie comes into view, you and your teammates confidently empty bullets into its head, pushing him back.  Another zombie comes into range.  Another, and yet another.  The horde is getting closer as your team struggles to reload and continue pushing them back.  They reach your perch and begin making their way up by jumping onto objects surrounding it.  Your team mate empties a shotgun round into it’s head and it falls limp on the ground.  One down.  Many more to go.

The horde continues to grow, there are 7 or 8 zombies running toward you while 3 are making their way up to you.  One of your teammates gets too close to the ledge as a zombie jumps up and infects him right in front of your eyes.  With quick reflexes and good aim you’re able to shoot the mindless monster off your ledge.  Your teammates don’t even realize what happened in the heat of battle as they continue pushing the horde back.  There are 3 of you left and your ammo supplies are dwindling.  It’s hopeless.

Some youtube videos of gameplay: http://www.youtube.com/results?search_query=css+zombie+reloaded

As you may gather from this dramatization, this mod offers a creative, suspenseful, and dark  twist to the game that a lot of gamers enjoyed playing.  In fact, this gameplay became so popular that thousands of gamers were playing it daily.  This mod carried into the next version of CS, known as Counter-Strike: Source (CS:S).  A new developer came in to play and created a new version of ZombieMod for CS:S.  This version, not surprisingly, became extremely popular very quickly.  Unfortunately, the developer kept the source code to himself, wasn’t responsive to user suggestions, and even made the mod exclusive to only people who would pay for it.  This didn’t sit right with me.

I began making server mods when I was 15 years old.  I started slow with simple scripts that had limited effect on game play.  But as I got the hang of programming I moved on to a more powerful framwork known as MetaMod/SourceMod.  (These frameworks provided a layer of abstraction between server plugins and the game engine.  This was extremely beneficial because when big changes were made to the engine, the SourceMod guys would crank out a new version that would fix any problems between my server plugin and the engine.)

As an avid fan of ZombieMod, I was quite upset when I heard that the new version of ZM had to be bought.  Especially because the older versions had all been broken by an update to the Source engine.  Being the programming superhero that I was, I cranked out a playable Zombie Mod known as “Zombie:Reloaded” (ZR) on the SourceMod framework in a couple weeks and hastily released it.  The code was a mess, there were missing features, and a bunch of bugs.  After weeks of patching (which were more like bandaids than solutions) I scratched the first version of the plugin and started fresh.  I had a better feel for the gameplay mechanics and intricacies that I didn’t account for on my first go.  (I also had no concept of plan first, code later, I was young).  Zombie:Reloaded v2.0.0 was released and it was better, but not great.  As I tried expanding the plugin to add new features the code became very polluted and messy.  The problem was no longer about the features of the mod itself, it was about the structure of how these features were implemented.

At this point, about a year and half after my very first release of the plugin, I was getting busier with school and my social life.  I abandoned the project for months.  When I returned, I was surprised to see another programmer had taken up the project and fixed several issues that had arisen during my period of absence.  At first I was threatened by this new programmer, but later on we teamed up to continue development.  For the next 2 years we developed Zombie:Reloaded v3.0.0.  By now we had a solid base of users who switched from the old ZM to ZR.  During the development of the latest version, a huge update to the game and engine was released which broke everything.  The SourceMod team prompty released a patch which fixed our plugin, but unfortunately the original ZM didn’t have that luxury.  The developer, who is still keeping the source to himself, disappeared.  My plugin was now being picked up by hundreds of server owners and installed on their server.  I was bombarded with hate, praise, friend requests, feature requests, bug reports, you name it.

The thing people loved most about my plugin is the configurability.  ZM was very static as opposed to my version where you could configure just about any component you could think of.  Version 3.0.0 was released in 2010 followed by a few patch updates to fix a couple minor issues.  That version is still being used on hundreds of game servers today.

After years of trial-and-error, I finally released a full-feature, popular server plugin enjoyed by 1000’s of people every day, all for free.  The entertainment provided by my work to all those people along with the invaluable project development and teamworking experience was payment enough.