Garry’s Mod Weapon Systems

Over the past decade, I have dedicated countless hours into creating a wide variety of content for Garry’s Mod. My work falls into a few categories:

  • Hosting and developing multiplayer community servers of 24-64 players with varying game modes:
    • Roleplay experiences where players play as citizens, cops or criminals in a city;
    • Day-Z inspired open world zombie survival;
    • RPG shooters where players scavenge loot, fight monsters and each other, inspired by STALKER and Escape From Tarkov;
    • Battlefield-like team-based PvP shooters, etc.
  • Developing features and fixing issues for various “weapon bases”, including:
  • Developing, balancing, and writing description and trivia for various weapon packs based on the above bases, including:
  • Standalone tools, systems and gamemodes to enhance sandbox gameplay, such as:

In this piece, I will focus on talking about my experience with the various weapons I’ve worked on, my findings and lessons learned.

What’s a “Weapon Base”, Anyways?

Now THIS is peak gaming.

Ever seen one of those absolutely ridiculous mashups where things from five different video games are interacting with each other? It’s probably made in Garry’s Mod, a sandbox game where people have ported and implemented things from almost any video game imaginable. Mods for the game come in the form of “addons”, standalone pieces of content players and server hosts can pick and choose to install.

Garry’s Mod is built with the same Source Engine behind Half Life 2 and Team Fortress 2, among other first-person Valve games. As a result, a popular genre of content you can find on its Steam Workshop are guns to shoot things with. Without any additional effort, your guns will function just like they do in Half-Life 2, with behavior to fire and reload. However, as first person shooters evolve, demand grew for modern affordances like aiming down sights, wet/dry reload variations, and of course, weapon attachments. Thus gave birth to the concept of “weapon bases“, a codebase containing features that developers can build for instead of writing their own aim behavior every time.

Some weapon bases are general purpose, like ArcCW, ARC9 and TFA. They make no assumptions about what the weapons’ assets will look like, and contain a wide set of features for whatever a developer may want to create.

ARC9 supports mind boggling customization effects.
Look at that nasty pink gun with boykisser stickers. Brings a tear to my eye.

Their counterpart are specialized weapon bases, like Modern Warfare Base and TacRP. They are built to support a specific set of assets and behaviors, and isn’t always intended for third-party additions.

As its name implies, Modern Warfare Base is built to support the intricate weapon from, and replicate the weapon feel of, Call of Duty: Modern Warfare (2019).

In both cases, weapon bases act as dependencies for weapon addons and weapon packs, individual or sets of weapons that utilize a specific weapon base’s features.

Designing a weapon base presents unique challenges not present in traditional FPS weapon design and development:

  1. You are not only creating for the player using the weapon, but also creating them for the developer of weapon packs to adjust.
  2. You do not know which other weapons or systems your weapon base will be used together with.
  3. You most likely do not even know what kind of gameplay your weapons will be used for (?!).

As I became more experienced as both a programmer and game designer, these design challenges I had been unconsciously addressing became more apparent to me, and it allowed me to identify and improve upon my works.

Made for players and creators alike

A weapon base has to be made for players and for other addon developers. A weapon base’s success hinges on not only is suite of features and quality of content, but also how easy it is to expand upon. Even if you have an amazing feature, it would be moot if no developer made use of it, as it also meant players don’t get to use it.

For example, one of ArcCW’s design goals was to streamline the process of supporting weapon attachments. Before its existence, the only weapon base that supported attachments, CW 2.0, had a tedious process. Each weapon must specify the exact attachments it supported, and set a unique position and angle for every single attachment. There was no way to future proof a weapon or add new attachments to a gun without changing its code. As a result, most CW 2.0 weapons only supported the tiny set of default attachments.

Back in the day, on a typical CW 2.0 weapon, you’d be lucky to see more than 10 attachments.

To address this, ArcCW pioneered the concept of attachment categories and slots. Instead of defining which individual attachment belongs on the gun, developers defined several slots on the weapon, and gave one or more tags for what attachments go on it, such as “optic” or “suppressor”. They only need to define one offset per slot, instead of one per attachment. Then, the attachment separately defines which tags it has, as well as its own offset. ArcCW will match the slot with all attachments loaded into it, and automatically calculate the correct position and angle the attachment should have. The creator of the weapon and the creator of the attachment may never even know each other exist, but their creations will still work with each other flawlessly.

A wide variety of addons exist for ArcCW with varying theme and scope (sometimes literally).

This innovation drastically reduced the effort on developers to support attachments. As a result, ArcCW and its successor ARC9 both fostered rich addon ecosystems that have great support with each other, giving players more things to play with and cementing ArcCW’s legacy on the game’s Workshop pages.

Challenges of Weapon Customization

In games, players often get the opportunity to augment their capabilities.

For example, the rougelite action game Hades has a set of verbs for combat, like attacking, casting and dashing, but it also has a set of verbs in-between combat, like choosing a boon. The boon will affect what happens when the player uses their verb.

More damage? Yes please! But which choice gives me the most damage…

These choices lets players express their agency. For the choice to feel good, it should have a visible impact and the player should understand the consequences of the choice. This may seem obvious, but both of these requires the player to have an internalized understanding of the game.

Going back to the Hades example, Pressure Points only has a 3% chance to be Critical, as opposed to 15% and 10% on the other options. An inexperienced player may think this option is simply worse; but as their understanding of the game grows, they may realize that because Pressure Points affects all sources of damage, it is far more powerful if combined with rapid damage sources from other boons like Zeus’s lighting strikes or Dionysus’s hangover damage over time. Gaining that understanding of how boons interact, and exploiting it to assemble insane synergistic combos, is a greatly rewarding moment that keeps Hades so fun to play and replay. However, if the effect is difficult to understand, the decision will not feel good.

No, I don’t know what it does either.

Consider this weapon effect from Fire Emblem Heroes. How do you decide whether to use this weapon over another similarly verbose weapon? If you just pick randomly or by asking online, you don’t get sense that you were in control anymore.

Weapon customization, in the form of attachments, is a common fixture in all contemporary weapon bases in Garry’s Mod. Players enjoy tweaking the visual and functional details of a gun to their specific liking, creating optimized killing machines or cursed abominations. Because customization is such an integral part of each weapon, balancing attributes for attachments becomes just as important as balancing the weapons themselves.

There are many like it, but this one is mine. It also runs DOOM.

Design wise, there are good and bad news. Good news: Gun attachments typically have very simple numeric changes, and no complex interdependent synergy. Bad news: You will have to change many numbers, and what the number actually means may not be intuitive.

The weapon bases will automatically lists each changed attribute in an attachment, saving designers the hassle of writing it down manually. In the beginning, this was great! The stats were simple and players can immediately understand what happens when they put on the attachment. Here’s an example of a complex attachment from the earliest ArcCW weapon packs.

Okay, it’s a suppressor that improves accuracy and range, but it shoots and handles slower, and it’s a bit worse when not aiming. Sweet.

As more weapon mechanics like overheating and jamming are introduced, and as the amount of attachments increase, more variables needed to be fine tuned to achieve the desired feel. As the person responsible for balancing most major ArcCW weapon packs, I slowly crept into verbose territory. Behold one of my less finer balancing acts:

An ArcCW attachment from Urban Coalition. Try to time how long it takes for you to understand what this does.

Long tables of stats like this one tests the limits of what a player is willing to read, but also creates a burden for the person creating and balancing the weapons and attachments, who in many cases is just an average modder with little to no game design experience. The more levers you can tweak, the more you have to tweak. As my responsibilities of being the “weapon balance guy” grew, so too did my realization that this is an unsustainable trend.

Unfortunately, ARC9 only served to prove my fears true. It boasts a two-layer conditional attribute system, meaning each attribute can now be modified a dozen or so ways. You can multiply the damage, but you can also multiply the damage while mid-air, or while crouching, or if the shot is odd-numbered… This introduced an exponential amount of adjectives, most of which are useless to a designer. This was a design decision I disagreed with, but by then it was way too late to change.

Worse still, many new features are confusingly named and properly explained. ARC9 added “bloom”, effectively increased weapon spread under continuous automatic fire, a popular mechanic seen in many modern shooters. However, its relevant attributes are named “recoil”, which previously in ArcCW only referred to how much the point of aim moves after firing. There is also a third independent “Recoil Control”, which is a new mechanic that reduces the aforementioned movement of the point of aim over sustained automatic fire. And don’t get me started on “Recoil Spread” or “Visual Recoil”…

This absolute design and naming mess frequently results in multiple “recoil” attributes on one attachment affecting unrelated things. Here are some criminally dense lists of attributes I have made for some attachments. Despite their looks, they actually feel great to use, but good luck finding that out from reading alone.

Yo dawg, I heard you like recoil, so I put recoil in your recoil, so you can recoil while you recoil…?
So this stock reduces Recoil, increases Recoil Control, and reduces Recoil per Shot? What even is the difference? Why is Sway in Sights both -1 and -15%?

So this all begs the question: Why not just not use the complex features and stick to simple changes? Do we really need to adjust “Recoil from Recoil”, whatever that does? Tweaking fewer attributes will result in an easier to understand attachment, but the new features do provide interesting effects that make a gun feel good to use.

  • “Recoil per Shot” affects how many shots it takes for a weapon to reach its maximum bloom. I use this value to allow long barreled guns to stay accurate for longer while in a burst.
  • “Recoil from Recoil” actually increases the recoil “kick” of the weapon under sustained fire. This can create the feel of a weapon that is uncontrollable in automatic fire, like a high caliber battle rifle.
  • The recoil pattern of each weapon is fixed a-la CS:GO/CS2, so adjusting “Recoil Spread” is meaningfully different from adjusting “Recoil” as it is truly random, whereas increasing “Recoil’ simply makes the pattern bigger.

Another way to tackle this may be to stop listing every stat and just manually summarize it. This seems to solve everything, but now players who do want to see every particular stat is stumped. Plus, this introduces even more work to the designer, and I would have to retroactively change thousands of lines of text.

In the end, I resigned myself to only focusing on the game feel these attributes create, and not the descriptions. The ship has long sailed and it was too much effort to turn the tide. However, I took this lesson to heart when developing and balancing TacRP.

TacRP – A Weapon Base Case Study

You tactical?

Tactical RP Weapons is a niche, specialized weapon base using assets from a long-defunct shooter Tactical Intervention (2013). It was a stepping stone between ArcCW and ARC9, never reaching the popularity of either. However, what it presented was an opportunity for me to apply the lessons I’ve learned onto a fresh canvas. With Arctic’s permission, I took over as the lead developer and got to work together with speedonerd and other contributors.

Design Goal and Tone

I had a blank check to do what I wanted with these assets, but I also recognized that Tactical Intervention had a distinct visual and gameplay identity. It was the 2010s idea of “Tactical”, a far cry from the tactical shooters of today. It had fun but impractical mechanics like blindfiring, holding hostages, and functioning vehicles you had to drive around and chase enemies in. Thanks to the work of the animator behind Counter: Strike 1.6 and Source, Minh “Gooseman” Le, TacInt’s weapons had a distinct, exaggerated animation style. It takes great strides to you details like visible bullets entering chambers while also being completely inaccurate to real firearms on account of every weapon being flipped horizontally – a quirk shared by the guns in CS:S and CS 1.6.

Pretty gangster.

These factors, combined with my general distaste for the visual and design trend behind modern tactical shooters, formed the basis of TacRP’s identity: It was to be a satire of “tactical realism” and its fetishization of military gear and operators, and a love letter to the campy FPS games inspired by action cinema. On a more practical note, I also wanted for TacRP to be a visually consistent and well-balanced set of weapons with great diversity in both weapon class and quality, able to serve as foundation for many different modes of play, such as sandbox, roleplay, or the social deception of Trouble in Terrorist Town.

In first-person shooters, your weapons are the main characters, and the behavior of weapons communicates a lot about the game’s tone. As an addon that isn’t self-serious in the slightest, TacRP includes gimmick mechanics that rarely give you an advantage, completely unrealistic mobility tools, wacky projectiles, and impractical small caliber weapons. In a competitive environment, these would be infuriating additions; but when playing with friends in a sandbox setting, it creates chaotic and funny shenanigans.

I recorded the clip simply because it was funny, not realizing until later that it perfectly showcased what TacRP intended to achieve.

This short clip of me and my friends in a sandbox game showcases this nicely. A few of us started to barricading a room impromptu, and some others naturally decided to attack. Using the mobility mechanics and explosive gadgets from TacRP, someone blasts open the barricade, charges into the room with a melee weapon Demoknight-style, runs over one person, and then gets gunned down by everyone else, resulting in an unscripted, memorable moment of fun.

User Experience

TacRP takes to heart the age old saying that “players do not read”, and strive to make players read as little as necessary to get the gist of things. Attachment modifiers are simplified into 2-5 short phrases with no numbers, each phrase representing one stat or a group of related stats. The Ratings tab that scores a weapon’s performance by letter grade, and also shows the impact the currently equipped attachment has on the grade. For players who wish to know the exact numbers, the Rating tab can be switched to a detailed Stats tab where the raw values used by the weapon base is revealed.

It takes only a second or two to get the gist of what an attachment does.
Highlighting a row will show a tooltip explaining what the stat does. Now, players can actually understand bloom!

Weapon Balance

TacRP features over two hundred firearms, and I was personally responsible for balancing all of them. This was a monumental task, not only because there is a lot of guns, but also because the different game modes I wish to use TacRP for have different expectations. Because of the social deception element in Trouble in Terrorist Town, weapons should not be able to kill a player quickly in order to discourage traitors from simply gunning down the innocents. In roleplay modes, guns are often sold for in game currency, so some guns need to be budget and some need to be premium. But neither of that matches the needs in sandbox, where you spawn everything freely and should be able to kill effectively regardless of weapon choice. And what about PvE modes, where shotguns and snipers become underpowered because DPS matters more than range or ease of use?

Because I don’t know how a player or server admin will use TacRP, any choice I make will be incorrect for some people. Therefore, I simply gave the option to the users, and built a bevy of options to fine tune the performance of the weapons. These options are mostly toggles for certain features and multipliers for certain attributes, but weapon balance in particular required a more delicate touch.

Color coded for your convenience.

TacRP has three balance modes a user can switch between on the fly: The default Tiered mode, an Untiered mode, and the TTT mode. In Tiered mode, weapons are divided by rarity, which is an indicator of their general performance. The gap between rare and common guns are tangible, but not impossible to overcome by a savvy player. Untiered mode flattens this curve by buffing common guns and nerfing rare guns. TTT mode dramatically reduces weapon lethality to match the gamemode’s standard weapons, in many cases reducing firerate and capacity.

But wait, wouldn’t making 3 distinct set of stats for each weapon effectively triple the amount of work? To avoid this, I had wrote the system so that Tiered and TTT modes actually only make small changes to the default Untiered attributes, usually damage and range. Many variables, such as magazine capacity, movement speed and handling speed, remain unchanged for most weapons across balance modes.

Another challenge that occurs when you have that many weapons is to make them not feel identical to each other. Part of this is solved during the creation process – we would simply not add a weapon if we felt it was too similar to an existing one. The other half of the solution is the tier system, and the heuristic I established. Simply put, there is a baseline DPS and TTK value for each type and grade of a weapon. Starting from this standard set of attributes, I make the gun better at one or two things and worse at another one or two things. Some attributes are crucial to a weapon’s identity and I cannot tweak much, such as fire rate and damage. If this was an issue, I adjust less immutable attributes to balance it out.

BRRRRRRRRRRRRRT

For example, the MG 42 is an iconic machine gun with a blazing firerate and powerful rifle cartridge. Reducing its fire rate or lowering its damage below submachine guns would feel horribly wrong. Instead, I leaned into the extreme, giving the weapon atrocious recoil and weight, and limiting it to a small 50 round drum. The gun is absolutely impossible to use while held, but the player can deploy its bipod to re-enact the Saving Private Ryan D-Day scene wherever they please. Alternatively, by min-maxing attachments to minimize recoil, players can hip-fire the weapon Jin-Roh style. Either way, the player is rewarded with playing a weapon to its strengths.

Visual Identity

A TacInt gun (right) side by side with a gun from Modern Warfare 2019 (left). Not only is the polygon count on the AK higher, it also uses advanced rendering techniques (from 20 years ago) like phong.

An interesting issue TacRP faces that most weapon bases do not is that we have to worry about visual identity. Because Tactical Intervention is a decade-old game, its assets are not all that photorealistic or detailed. When we chose weapons to add, often we had to reject models on the basis that they looked too good, and would be out of place in TacRP. Our best models came from games from the same era as TacInt, as well as the many incredible models made for Counter Strike: Source on GameBanana. In some ways, TacRP is an excuse to bring as many of those models to life as possible in Garry’s Mod.

Besides porting models, I also had to create some custom animations in order to include more exotic weapons into this project. Tactical Intervention’s weapon animations are uniquely identifiable by its fast and exaggerated movement, eagerness to show off fine details like chambered bullets and magazine eject buttons, and the fact that the weapons are still flipped horizontally. I tried to emulate this to the best of my ability.

Closing Thoughts

If TacRP did not exist, or languished forever in its initial state, the world would not have been any different. It didn’t really need to exist. It did not innovate, did not address some burning need, nor did it have the most polished content.

But it was fun. It was fun to develop silly features only my newfound design and programming skills made possible. It was fun to mess about with friends, blowing things up and throwing shovels at each other. It was fun to learn viewmodel animation for the sole purpose of adding a break-action shotgun.

On days I was burnt out as a creator, my passion as a player sustained me. On days I felt aimless a player, my whims as a creator drove me. Over the span of 3 years, across 8 expansions and over two hundred weapons, TacRP grew from something only me and my friends used to becoming a noteworthy part of the Garry’s Mod Workshop.

Despite TacRP’s niche status even today, I am constantly surprised by friends and strangers alike telling me TacRP is their favorite addon on the Garry’s Mod Workshop. (This has happened to me a total of 0 times for ArcCW and ARC9 combined.) I am truly grateful for being in a position where I can change the shape of play in such an organic manner.