“Guard Dog” Fanmade Overwatch Hero Unity Prototype | Dev Diary 1

A little while ago, I decided to up my credentials and get certified for Unity programming. My actual programming skills have always been a sore spot of mine compared to the design or art aspects of game development, but as I try to advance my career, I decided that I wouldn’t let that stop me from progressing toward roles I want. So, in an effort to refine my skills and have something new and impressive to add to my resume, I underwent an online course and am now a Certified User level programmer in C# for use in Unity game development. There are further levels to this certification that I will also look into achieving in the future.

But now that I have this certification, I want to create something with it. I already spruced up and released an endless runner game I made using the assets provided by the course (found here on itch.io, and elsewhere in my portfolio!), but the lack of interactivity that is inherent to the genre makes me feel a little unsatisfied with it. Not that I think my work on it was bad, quite the opposite, but I want to design something built for combat gameplay. And with Marvel Rivals being gaming’s current flavor of the week, I’ve been thinking more about my history with the hero/class-based shooter genre, and something deep within my memory suddenly came to mind.

Team Fortress 2 is one of my favorite games of all time, and I have fond memories not just of playing it, but of interacting with and participating as a member of the game’s community. TF2’s fans were raised uniquely compared to today’s hero shooter players, as not only was the game a haven for fanmade content like gamemodes and maps, their ideas has a chance to actually be incorporated into the game in an official capacity. The steam workshop get tons of entries to this day of cosmetics, weapons, paint jobs, and maps made by fans with the hopes that they will be formally accepted by VALVe and integrated into the game as official content. But one thing that never changed across the game’s decades-worth of updates was the number of classes, no matter what was offered by the community. To be fair, the game’s nine playable classes and the way they interact is nearly perfect; each one has his niche in the game’s design, with what little room for improvement exists usually being filled by one of the game’s unlockable weapons. Still, that didn’t stop certain people from dreaming.

Sometime in September of 2009, less than a year after the game’s release, a rumor began to circulate in the TF2 community of a new class being added to the game, called the “Guard Dog”. This rumor was substantiated by a website detailing this new class, a playable german shepherd with twin mounted guns around its torso and a few unique mechanics. While the Guard Dog was quickly figured out to be a hoax, it was popular enough to garner a response from VALVe on the official TF2 website a few days later. To this day, the Guard Dog remains as one of TF2’s more beloved pieces of fan content, even holding a page on the game’s official wiki. Now, fourteen years later (holy crap), the Guard Dog comes back to mind. Hero shooters, the genre descendant of Team Fortress 2 and its peers, maintain their fanbases’ attention not by adding new weapons for existing classes like TF2 did, but by adding entire new characters to play as. I can’t help but wonder if, had Team Fortress 2 come out in today’s gaming space, would it have done the same? Could the Guard Dog, or something similar, become an official reality?

…So I’m making the Guard Dog.

Okay, not quite. While I like the idea of making a playable version of the Guard Dog hoax, I also want whatever I make to be something I can call my own, built from my own ideas. Plus, there are other hero shooter games out there that have the whole “adding new heroes” thing down pat, and I can use those as a better jumping-off point than TF2’s more weapon-based combat design philosophies. With that in mind, I landed on making a combat prototype of the Guard Dog using the gameplay of Overwatch as a blueprint, where heroes typically have one main weapon and a slew of unique abilities to call on during battle. With that as my design basis, I got to work in Unity.

Before I got started with more complex design work, I wanted to at least have a semi-playable prototype ready for the character’s basic controls, and with the help of a few online tutorials, I’ve managed to accomplish just that. At of the time of writing, I have a Unity project that allows the player to move, jump, sprint, crouch, and shoot projectiles that destroy targets. Movement functions well, and even includes slope movement, which involves turning off the character’s gravity while on a slope and calculates the amount of force to exert on the character to make them move at an accurate speed in relation to the angle of the slope. As for shooting, one thing that I want to keep from the Guard Dog hoax - more on that in a minute - is his twin guns, so I put together some placeholders for guns and a shooting function that alternates between the two guns when called on. The shooting function is also set to two-round burst fire, making it so that each gun fires at least once when the fire button is pressed. This is done using a coroutine that calls on the shoot function twice per button press with a slight time delay between calls. Getting the guns to alternate which one fires is done in the shoot function as well, literally by detecting which gun fired most recently and switching to the next one each time you shoot.

Alongside the shooting and movement, I added a handful of bonus features, like coyote time; for the uninitiated, “coyote time” is a mechanic a lot of platformers use to allow players to jump for a brief time after they leave the ground without jumping, such as by walking off the edge of a platform. I don’t believe Overwatch uses coyote time, but it was a fun exercise to try to get it working regardless. That said, it did cause me a bit of a hassle, I assume thanks to how my movement script detects that the player is on the ground. For some context, the raycast that casts from the player character toward the ground is just long enough to accurately detect if the player is close enough to be considered “grounded” and thus able to jump, and the jumping code involves a cooldown variable to prevent players from jumping again too soon after jumping the first time (and thus doubling up on jumping when the button is pressed). What was happening (again, I assume) was that when the player jumped, coyote time would begin to count down as the raycast no longer registered the player as grounded, but the cooldown that prevents you from jumping again would run out before the limit for coyote time did. So in order to not have to alter the grounded raycast, I tinkered with the cooldown variables for jumping and coyote time enough that they no longer had that overlap. Now coyote time works well enough for a first person game that players can understandably jump after leaving the ground, and I’m the proud creator of a coyote time function entirely of my own design.

Once I had all that functioning, I took a break from coding to start considering the direction I want to take this project in. Since I’d decided that this project would use Overwatch as the basis for its gameplay, I’d need to figure out a set of abilities for this character, including an Ultimate. This isn’t as simple as coming up with a handful of miscellaneous superpowers to give to a dog; they need to fit a nice that this character would fill in the cast of Overwatch and fulfill a gameplay fantasy that makes them all feel relevant to each other and to the character’s playstyle. With that in mind, it was time to decide what kind of character the new Guard Dog would be. The original Guard Dog hoax never said what kind of character he was between TF2’s categories of Offense, Defense, and Support, but from what information the update gave, it seems reasonable to assume he was a Support. While two of his proposed weapons were offensive - his guns and a pair of rockets to deal rocket-propelled bites - his secondary tool was just a pair of flippers that could carry pickups like health and ammo to deliver it to teammates. On top of that, the hoax claimed that the Guard Dog could sniff out enemies by smelling relevant items to them like bodies or dropped weapons, and even fill up the Sniper’s Jarate weapon. The Guard Dog was always envisioned as a class that would help and support their team more than as a powerful fighter, so it only feels right to take my design in a similar direction and make him a full-on healer.

These abilities specifically, though - delivering pickups and detecting far away enemies - didn’t sound worth keeping for an Overwatch-style character. If the character is designed to be a healer, having them run off to deliver health packs would take far too long and put teammates in the middle of a firefight at a major disadvantage. In Team Fortress 2, it would be more acceptable due to the game’s 12-player team sizes, but Overwatch 2’s 5-v-5 matches would make the loss of one teammate hurt far more. Overwatch also only has health packs, while TF2 incorporates ammo pickups as well, so the versatility of such an ability would be lessened in the environment of Overwatch, and what’s worse, it would create a hierarchy of which teammates should be picking up emergency healing. If the Guard Dog makes better use of health pickups, it would discourage teammates from using them, potentially risking their lives. As for detecting far away enemies, this ability already exists on two character in Overwatch: Widowmaker and Hanzo, the game’s premiere snipers. They were given these abilities to help them seek their targets at range, pivotal information for long-ranged assassins, but not so for healers. The Guard Dog, as a healer, would be able to detect teammates through walls anyway due to the game’s use of outlines and silhouettes, and even be able to tell if one was at critical health levels, which would be enough to tell players where their enemies are anyway. The more I thought about it, the less interested I was in pursuing these abilities in my design.

So instead, I started writing down notes. I created a document where I can hash out ideas, assess Overwatch’s current design motifs and the trends seen in the gameplay of recent heroes, and start whittling down a new identity for this character. So far, I’ve decided on a pretty clear-cut aesthetic: that of an emergency rescue dog, like the keg-toting mountain dogs used to rescue survivors of avalanches. It seems like I’m in good company, too, as while a dog hero in Overwatch is quite a popular idea among fans, several proposed design concepts that have long having circulated online are also Support heroes, a few even referencing the aforementioned keg (several also offer abilities like pickup delivery and detecting enemies by scent, I noticed; hearkening back to the Guard dog hoax as well perhaps?). This aesthetic comes with a very clear gameplay fantasy to aspire to as well: diving into dangerous situations and rescuing teammates by providing emergency aid to the wounded or imperiled. To me, this would be something like a “dive healer”, who specializes in infiltrating teamfights to provide immediate assistance to single teammates at a time, but perhaps struggles in supporting their entire team at once and would need to be covered by a second, more generally helpful healer. In the context of Overwatch, this sounds very similar to Mercy, who is even seen in the game’s theatrical teaser back in the day providing disaster support like this character theoretically would. Mercy’s guardian angel-like playstyle is very single-target oriented, but her movement allows her to leap from teammate to teammate and provide healing as needed. With this in mind, I now know that most of this project will be building a character similar to Mercy, but fills a different relevant niche or plays distinctly enough to justify their existence.

So far, I at least have an idea of a method through which this character should do their healing that feels unique enough to them. Since the character is envisioned as a single-target healer akin to Mercy, I found it prudent to reuse the sort of “tether” mechanic she uses when healing with her staff, but remixed. This character would be able to select a nearby teammate to “partner” with, extending a healing tether to them from the a device around their neck similar in aesthetic to the mountain dog keg. This would create the appearance of the dog and their partnered hero attached with a “leash” of sorts, which I find very funny. This leash would come with a burst of healing when activated, allowing the dog to rescue a teammate at critical levels of health, and would then provide passive healing as long as the leash remains attached. Unlike Mercy, this leash will be entirely hands-off; once it is active, so long as the dog and their partner remain within range of one another and the dog does not cancel the ability, the leash will remain attached, allowing the dog to use their guns and other abilities in the meantime. I also envision this ability granting another sort of buff, such as enhanced movement speed. Mercy can switch between healing and a damage boost, so I want to avoid anything that enhances the partner’s combat capabilities; this dog’s main goal is to help people escape from sticky situations rather than turn said situations around. It also discourages the dog from playing as a “pocket medic” the way Mercy does, attaching to a teammate and refusing to let go. However, the Leash ability comes with one major downside, in that it is entirely close-ranged. Every other healer in the game either has some sort of healing they can provide at range or, on the rare occasion that they don’t, the ability to reliably close the gap and keep it closed. This means, moving forward, I’ll either have to give the dog a powerful movement ability that could allow them to reach characters as distant as a flying Pharah, or some sort of reliable ranged heal.

I’ve even gotten started on the leash in Unity. Right now, I have a Line Renderer that connects my player to a placeholder ally prefab, and I’ve been working on setting up the detection mechanics. After doing some studying into similar abilities in Overwatch (Mercy’s healing beam, Zenyatta’s orbs, abilities that are cast onto teammates depending on their proximity to your crosshair), I have an inkling on how I can make this work: the healer player will have to cast multiple cone-shaped hitboxes (or a spherecast that increases in radius as it moves away from the player) ahead of themself. The first is just a wide, long cone that spreads far forward, solely to detect if an ally is close enough to your crosshair that the ability could be cast on them. The second cone is much tighter, and is intended to help discern which ally is closest to the center of the screen if the healer detects multiple teammates. This cone could also be replaced with a calculation that judges a raycasts cast between the healer and their teammates against the direction of their crosshair, allowing the script to figure out who’s closest to the center of the screen by comparing the angles. Lastly, there would possibly be a third, short area in front of the healer to allow them to prioritize allies that are at point-blank distance.

I’ve already gotten to work on these spherecast mechanics, but I want to try both the cone method and the angle comparison method to see which feels better. Beyond that though, I’ll have three more abilities to figure out - an alt fire (which will probably be a secondary method of healing for allies at range), a shift ability (which will be a movement ability to allow the Guard Dog to close gaps between them and a teammate quickly), and an Ultimate ability. Once the leash is figured out, which I assume will be quite complex, I believe the Ult will be the hardest part of the character to finish, but I relish the challenge. After all this I’ll also have levels of polish to do, making and animating a model, creating VFX, et cetera. But eventually, I think this will turn out to be a really helpful and educational exercise for me! Look forward to further updates!

Previous
Previous

Horror Games Don’t Exist, Video Games Are Lying To You

Next
Next

“The Paldea Problem”: Pokemon Scarlet & Violet and the pitfalls of open-world design