Posted on May 14, 2023
by Jack Kelly
I was lucky enough to grow up through the early 2000’s, during the
golden age of Half-Life mods. Industry classics like Counter-Strike
(CS) had just been invented, every month brought new mods to try, and
files were too big to download on a dial-up connection so you’d leech
them off a server at a big local LAN party. One of my personal
favourites was Natural
Selection (NS), a sci-fi marines-vs-aliens deal where one of the
marine players had to command the others, RTS-style, from a command
chair. If you’ve never heard of it before, this 2022 video review of
NS will give you a sense of what it was like.



As Half-Life modding matured, some really interesting inventions
appeared. MetaMod was a C++ framework
that interposed itself between the server binary and the actual mod DLL,
allowing you to inject custom behaviour into an existing mod. I didn’t
understand enough C++ to write MetaMod plugins, but that didn’t matter:
AMX Mod and later AMX Mod X let you write
custom plugins using a simpler C-style language called Pawn (known back
then as “Small”). This enabled an explosion of ways for operators to
tweak their game servers: quality-of-life improvements for players,
reserved player slots for members, and delightfully bonkers gameplay
changes. I remember having my mind blown the first time I stumbled upon
a game of CS with a
class-based perks system, inspired by Warcraft 3, and that was just
one instance of the creativity that came from the AMX(X) modding
scenes.
And with the Half-Life-specific background covered, we are now ready
to talk about NS: Combat and my gloriously dumb contribution to the AMXX
world.
The original release of NS was hard to enjoy at low player counts. It
was balanced for 6v6, so confining one marine to the command chair hurt
the marine team a lot. This was also before the era of server-side
match-making, so if nobody was around you’d join your local (often
ISP-provided) game server and hang out, hoping enough people would come
online to get a good game going.
To address these problems, the NS team added a simpler alternative
mode called “combat” as part of the mod’s 2.0 release. Combat maps were
much smaller and removed the resource-gathering and RTS elements in
favour of a much simpler goal: the marines had to destroy the alien
hive, and the aliens had to destroy the (unoccupied) command chair. With
the resource system removed, players instead earned XP and levels for
kills and assists, and could spend those levels on upgrades, advanced
morphs (aliens), or weapons and equipment (marines).
Combat was perhaps too successful: it was designed as a lightweight
substitute for the real game, for when you didn’t have a lot of players.
But it quickly overtook classic NS in popularity and stayed that way for
the rest of the mod’s lifespan. Of course, AMXX modders extended the
combat mode in all kinds of broken ways; the main one raised the level
cap beyond 10 and added additional upgrades to spend those levels on. It
was colloquially known as “xmenu”, because it added a
/xmenu
player command, opening a menu of new upgrades to
spend those additional levels on.
But I liked NS for the buildings! To me, that was what made NS
special. Since I could code well enough to write AMXX plugins, I added
them to the combat game mode. The Combat Buildings plugin gave players a
new /buildmenu
command that let them spend their levels to
place structures.
The release was surprisingly controversial. Some people rather liked
it, but the people who hated it really hated it. One of the
ModNS forum moderators (in a long-deleted post, sadly) called it “the
most ridiculous concept I have ever seen on these fora”. And here is the
maddest
my code has ever made anyone:
But as absolutely terrible as /xmenu is, /buildmenu is the god
damned devil. Buildmenu is an abomination upon the lord that is
causing the universe to unravel and all heretics who follow the
terribleness that is buildmenu shall perish in hell. I’d like to give a
big thanks to whoever created /buildmenu for making THE WORST COMBAT
PLUGIN EVER.
You’re welcome.
I was very taken aback when I first saw this comment, but these days
I cherish it. It reminds me one of the first times my code had a big
impact on a community. Enough people liked it that I made the final
versions of Combat Buildings integrate with other plugins, allowing
servers where the aliens could build on walls and ceilings, or allowing
players to build in the custom marine vs. marine and alien vs. alien
game modes. I loved the feeling of making a game play by my rules, of
building on others’ work, of being part of a community and swapping
knowledge, and of making cool (dumb) stuff happen just because I willed
it. Those feelings don’t ever get old, and are a big reason why I still
love hacking on things.