DOOM: The Dark Ages
In 2022 I joined id Software for their latest project - Dark Ages. In my nearly three years on the title I worked on a multitude of different gameplay, combat and AI related features, and moved across the studio as necessary to fill gaps. I had the pleasure of designing aspects for multiple different key game mechanics and AI behavior, all directly connected to the game’s overall combat.
Associate Combat Designer
Scripted AI combat across 6 different levels. (Intro, Hebeth, Holy City, Forge, Siege, Hell)
Blocked out and clipped various exploration and combat spaces.
Set up checkpoints, objectives, and other level progression related tasks.
Associate Gameplay/AI Designer
Designed, Engineered and iterated on AI behavior against all playable characters.
This includes but is not limited to the following characters: Tyrant, Mancubus, Soldier, Revenant, Pinky, Arachnotron, Cacodemon, Zombie, Imp, Hellknight, Playable Dragon, Hell Carrier ship, Titan.
Spec’d and implemented core behavior for Kreed Maykr and Mecha Cthulhu bosses
Designed and Balanced bespoke systems for AI related to pain/death, attack frequency, group behavior, and character variation.
Implemented AI Pain systems, death reactions, ragdolls, etc.
Balanced token system for group attack selection
Designed AI Variant behavior (Nightmare Imp, Leader/Champion AI Variants, AI Buff systems)
Spearheaded unique gameplay sequences using skills from both Level and AI Design.
Scripted mission related challenges and milestones tracked for Steam, PSN, Xbox.
Designed the weapons and mechanics for a playable character. (Playable Turret Character)
Created and maintained dozens of test maps for debugging AI behavior, QA Tests, Game Assets.
Kreed Maykr
Kreed Maykr is a series first for DOOM, utilizing multiple forms of script shenanagans to create a multi-layered boss unlike any other seen in an id game before.
For this AI, I designed a roster of attacks which all asked for separate player actions in order to survive, be it dodge, shield throw, shoot, or a combination of any of those things. Kreed Maykr does this by combining idTech’s main AI Driver (Finite State Machines), with a logic based system of nodes and actions communicating to and from the FSM. By doing this, Kreed is able to layer together multiple different types of attacks, best shown in phase 2 of this fight.
To accomplish this feat, i worked closely with both the AI Engineering team and the Tech Art Design team as a bridge point to keep both sides of this AI’s complex behavior in line with the intended design. Thanks to this bridging, i was also able to hop in and make necessary changes as needed to either the FSM or Logic Graph to create a truly unique and challenging boss!
Kreed’s charging green laser attack was also a major turning point in the project. After it’s initial implementation, it was requested to be added to other AI in the game! In the final product, you can see similar attacks on the cacodemon, giant cacodemon, pinky rider, and revenant.
Mecha Cthulhu
Mecha Cthulhu, the second boss I had dominion over during Dark Ages Development, is by far the biggest boss in any DOOM game ever! The scale is real, and so is his ferocity!
I had the pleasure of doing the on-the-ground work for all of his various features such as his core behavior selection, teleportation/clone summoning, and my personal favorite: A finely tuned web of combo attacks which seamlessly weaves into his other behaviors. From swinging a mace, to surprise tentacle summons, to a massive ground slam - working closely with animation was essential to ensure all of these actions blended together for a kickass 50-Story cage match.
QUAKE II (2023 Remaster)
While working on Dark Ages full time, I took on extra work to assist Kevin Mcloud and his team working on the Quake II remaster. As a huge fan of the series, and especially the first two Quake games, it was an amazing opportunity to get hands-on and contribute to a project originally released four years before I was born!
I mostly helped out with updated light placement across the various campaign levels, Quake II more than anything was just an opportunity to have some fun with Radiant, which in comparison to the cutting-edge idTech 8, resulted in some pretty crazy whiplash between working on the two titles.
idStudio (PC Mod Preview)
Before and after being hired by id, I created and maintained a discord server built for teaching players how to create their own third-party mods for DOOM Eternal without official support. This server, the DOOM Eternal Modding Hub, is still active to this day, albeit now pivoted towards “official” mods.
While working with id, our now retired CTO Robert Duffy was hard at work at bringing idStudio to the public, a team was formed to begin porting a branch of idTech 7 for public use, and an idStudio port of KaiserCampaign was used for internal testing. The saying was “if Kaiser can work, we can get anything to work”.
Being an early pioneer of the modding scene for DOOM Eternal, I was beyond hyped to contribute to this project. Giving the tools to the people and exposing a new generation to my passion of game creation was what id was all about from the very beginning.
Thanks to my connections via the Modding Hub, I was used to recruit and train talented members of the DOOM Eternal community to test idStudio before it’s official release under NDA. These NDA modders went on to create the first ever “official” mods, and made history by making DOOM Eternal, well, Eternal.
Shadow Badger is my newest project, a retro “Boomer Shooter” FPS game which takes notes from both old and new titles, combining fast-paced, physics based movement with a formidable roster of Unique AI and powerful player weaponry. Shadow Badger is an intentionally over the top and sometimes silly game which takes a ridiculous concept and executes on it with honesty to deliver an experience not currently provided by any game before it.
In this game, you play as a badger sacrificed to an “Outer God” by a race of technologically advanced bees. In your last moments before death, this God offers you a deal - he will lend you his strength, but in exchange you must feed him. What is it he hungers for? The total annihilation of bee society. You will absorb their life essence, and level their civilization as revenge for the state of undeath you must survive in.
Something that stuck with me from my time with id is knowing when to “Get Stupid”. Making a game with a unique identity that doesn’t take itself too seriously while putting full effort into the gameplay and experience is what this project is about.
NOTE: As this game is in progress and currently pre-alpha, some visuals may be heavily indev or not finished. My current goal for Shadow Badger is a “Vertical Chunk” build, which consists of three full levels from start to finish, 6-10 AI, 6 player weapons, and various movement/combat abilities.
The vertical slice build for Shadow Badger has been completed as of January 2025 and can be found here: https://kaiser-will.itch.io/shadow-badger
Shadow Badger
Player Abilities
Absorb
Absorb is the player’s main way of interacting with objects of importance in the environment. It serves as a multi-use input which can grab objects, use switches, or consume entities or weakened AI. Absorb is the player’s main way of refilling their health and "hunger” which is essential for staying in the thick of combat.
The player is rewarded for consistent use of Absorb by restoring more health the lower their current health percentage is, as well as gaining more hunger if your health is completely full. This means the ability is always a useful option, no matter the situation.
Aura Aura
By filling the hunger meter, the player will be able to use various different types of ultimate abilities. For the Vertical Slice build of Shadow Badger, the current ultimate is called “Aura Aura”. A flurry of shadowy fists which pummel anything in front of you to shreds, rewarding you ammo for successful kills, promoting a “rich get richer” style of play. The punches are so fast, the .gif format does not do it justice.
The player will be able to swap out different types of ultimates, allowing varied loadouts to suit different styles of combat.
Slide, Sprint & Air Dash
These are the player’s main movement tools to navigate through combat arenas and traverse the levels. Slide is a momentum-based movement option which will increase your speed depending on the slope of the surface you’re sliding down, encouraging the player to take advantage of the “Skatepark” style of arenas I’m experienced at building.
Sprint and Air Dash use the same input, but the outcome is contextual. While moving on the ground, the player will sprint as long as they hold the key. However, when used in-air, the player will be sent flying in the direction of their last input. There is only a single dash, however it immediately recharges when the player lands on the ground, reducing the need for HUD bloat to communicate it’s recharge rate.
Weapons
Shotgun
The player’s go-to default bread and butter weapon. It’s primary fire shoots a slug, providing accurate and consistent damage at close to medium range.
The secondary fire explodes the slug inside of the barrel, creating a high-damage but short range blast. It’s knockback can be used as a traversal tool, able to quickly launch yourself backwards to disengage from an AI, or as an additional jump to reach high-up places at the cost of additional ammo.
The Hivekicker is a punchy Minigun/Railgun hybrid weapon which goes all-in on offence. It’s primary fire shoots ballistic barbed missiles which explode on impact.
The secondary fire, charged by shooting the gun normally, expels the giant stinger located in the center of the gun’s muzzle, acting as an extremely high damage railgun which can pierce through multiple enemies.
HiveKicker
The FreezeThrower is a utility weapon built to be complementary to the player’s other weapons and abilities.
By spraying the primary fire at the ground, the gun creates large swathes of ice, allowing the player to frozone their way around the play space at increased speed. Because this ice reduces the player’s friction, it also allows them to slide for an indefinite amount of time.
The primary fire is also capable of freezing enemies, which temporarily decreases their animation play rate, movement speed, and increases damage taken.
FreezeThrower
AI Characters
The MawZombie is a standard fodder enemy, spawned in large groups. To accomplish that, I created group maneuvering behavior to ensure that pods of zombies don’t get in each others way while chasing the player. They’re also capable of forcibly pushing other zombies out of the way while sprinting.
Mawzombies utilize a token system for both their attacks and movement. When a movement token is freed, one or more zombies will begin to sprint at the player. When this sprint action completes, the zombies have a chance to either perform a roll, or fall flat on their face.
The Zombies are capable of attacking the player with this roll, but also can perform a stationary melee attack and a medium range extendo-tongue attack to poke the player.
When not killed by high-powered explosive weapons or by absorption, the zombie will gib, but their torso will continue to live, growing teeth-legs and once again chasing the player in a constant sprinting action as a TorsoCrab.
MawZombie / TorsoCrab
Another fodder enemy, the hive gunner is capable of spawning in two different variants (A hitscan shotgun unit, and a shielded projectile unit).
NOTE: in the animation preview gifs shown for the character, it does not show their arm attachment or other props. This is shown in-game depending on the variant
The Hive Gunner has circle-strafe behavior to maneuver around the player while within range, and can throw their shield or launch grenades. Depending on if the variant has a shield or if it is broken, they can hit the player with it, or use a kick melee attack.
Hive Gunner
The final fodder enemy introduced in the first level, security droids are an intentionally simple flying unit which shoot, reposition, and repeat.
During movement, if a droid is too high up or too far below the player, they are capable of performing a quick vertical movement to re-adjust themselves. The goal for the enemy is to have a common unit which forces the player to look up, but not often enough or at a degree which makes them overly distracting.
While somewhat evasive, droids are capable of performing a quick and damaging melee spin if the player gets too close.
Security Droid
Initially a boss enemy, the Hive Warrior appears as the final hurdle at the end of level one (the eventual vertical slice build of Shadow Badger).
The Warrior is capable of performing quick teleports around the player, either in the air or on the ground, before following up with a contextual attack based on it’s location. If in the air, it will use a quick slam which is capable of tracking the player’s movement. If it’s on the ground, it will perform a straightforward lunge.
The goal of the Hive Warrior, like with similar boss enemies in other games (Marauder from DOOM Eternal, etc.) is to create a combatant which can “dance” with the player unlike other AI. While characters shown beforehand are more reactive to player action, the Warrior is proactive, forcing movement or aggression from the player inbetween teleports which reset the dance.
Hive Warrior
Level Design
For Shadow Badger, my goal is to effectively fuse the following types of environments:
- Setpiece driven exploration areas with an emphasis on incidental combat. (Main inspiration being taken from 90’s titles such as the classic DOOM/Quake games.)
- High octane arena spaces which allow the player to make use of the physics-based movement in a locked-in area. I have extensive experience creating these types of spaces, combat arenas which are fun to move around in are my favorite type of level space to build.
- Liminal Spaces and Non-Euclidian environments. For years, after reading House of Leaves I have wanted to work into a game the feeling of unease and fear stemming from the vast emptiness of an environment with architecture that makes little conventional sense. Because these environments are intentionally dark, for some of the images I have turned off lighting to better show the geometry.
Below are some examples of the spaces I have built for the current build of the game. All of the materials and assets have been pre-made for this project, with the exception of some rock/mound models. I’m not a huge fan of games which utilize heavy use of pre-made unreal store assets, so for the sake of consistency I’ve been and will continue to build level spaces using basic shapes.
KaiserCampaign
KaiserCampaign is an extensive overhaul mod for DOOM: Eternal, developed over a period of three years.
With the purpose of furthering advancements in third-party modding for the game, KaiserCampaign was made entirely in Notepad++ by reverse-engineering idTech 7 without any modding tools or engine access.
The mod contains over a hundred hand-scripted encounters over 18 levels, 5 of which being new secret levels utilizing BATTLEMODE (Multiplayer) maps already installed with the game, but normally disabled for singleplayer gameplay. It also implements multiple custom AI, various gameplay and progression tweaks, custom powerups, and upgraded bossfights.
KaiserCampaign exists to further extend the lifespan of DOOM: Eternal for high skill players who have conquered both the base campaign and the two DLC expansions, utilizing assets from all three to craft a fresh and challenging experience.
Custom AI
Without any form of code injection or (for the better part of the mod’s lifespan), being able to add any new assets at all, I had to get creative with how I twisted the already existing knobs for DOOM: Eternal to create a dangerous new roster of AI variants. Below are a few examples of what I created for the mod.
Cyber Cacodemon
Cyber Cacos are larger, slower and bulkier versions of Cacodemons who spit out volleys of parabolic bile projectiles, which create massive swathes of toxic area denial upon landing.
By selectively pulling these specific AI knobs, the Cyber Cacodemon became an ideal “chess piece” in arena combat by being the only area denial unit capable of reaching the player and maintaining line of sight from anywhere, thanks to it’s utilization of flight nav.
Thrash Knight
Thrash Knights, like the Cyber Cacodemons, start out as slower, larger versions of the normal “Hell Knight” pressure unit seen around the base game, with the caveat that if one manages to hit the player, it will stun them for a brief duration.
The main method of killing a Thrash Knight is by using the player abilities “Sentinel Hammer” and “Blood Punch”, both gameplay tools charged via different methods of killing other AI, requiring that the player deal with other characters first while avoiding the Knight’s slow but deadly swipes.
However, once the Thrash Knight reaches half health, it becomes engulfed in flames, and triples it’s running speed. This turns the weakened enemy into an extremely high priority target, unable to be ignored, only able to be reliably killed by close range melee options.
By utilizing these different interactions, the Thrash Knight becomes a unique enemy which lives up to it’s namesake by “thrashing” the player for not properly prioritizing targets, one of the most important gameplay aspects of vanilla DOOM: Eternal which KaiserCampaign seeks to re-ignite for experienced players.
Projector & Projection
Projectors are variations of the Carcass AI, capable of summoning both a shield of increased size, and a “projection” companion AI Tyrant made out of shield material. This companion AI, like plasma shielding elsewhere in the game takes increased damage from the plasma rifle weapon.
This AI was originally implemented via a custom scripting setup in each instance of it appearing, however once modding for DOOM: Eternal advanced to a point where I could implement more than custom script, I re-did the AI to have the summoning behavior worked into it’s normal behavior tree.
Gold Bosses
Shipped with the Vanilla game were unfinished variants of the Gladiator and Doom Hunter boss fights with increased difficulty and new attacks, dubbed “Golden Bosses” by the Lead Boss designer Daniel Young, who I went on to work directly with on DOOM: The Dark Ages.
For KaiserCampaign, I resurrected and finished these previously inaccessible fights, and with them created “Gold” variants of all the other bosses in the game, including the Marauder, Khan Maykr, and Icon of Sin.
These bosses have all sorts of new behavior, anywhere from summoning clones to becoming invisible. Anything to turn the original boss on it’s head and give the player a fight to remember.
Encounter Design
By breaking apart the launch version of DOOM: Eternal into it’s base files, I was able to reverse engineer the syntax language packaged by the engine for scripting encounters. Using this raw text method of scripting, I reworked every encounter in the game. A specific style of encounter I leaned into for this project was layering waves, or pinpointing high-priority targets in encounters and basing the next wave spawns on branching player decision.
Ex. In a difficult encounter, the player can either trigger the next wave by taking out one very strong AI, or three weaker AI. A simple concept on paper, but most of the encounters shipped with the base game were intentionally rigid, or waiting until the player has killed nearly every enemy before spawning more. This results in encounters that put consistent pressure on the player, but also encourages proper target prioritization.
In addition to this, I took inspiration from classic shooter games, such as DOOM II, Quake, and Blood. Specifically, the playful antagonism between the player and the dev. By making KaiserCampaign have a high barrier of entry, I could subvert the expectations of players who have sunk hundreds or even thousands of hours into the game with unique, and sometimes ridiculous encounters. Setting traps, monster closets, spawning guys behind the player, dropping boss enemies from the celling, all great ways to experiment with the DOOM: Eternal framework.
I’m capable of making highly complex layered encounters, accounting for every possible player action, or toning it down when necessary for the average player. Workshopping encounters with player/dev feedback is half the fun!
Over 100 unique encounters, and thousands of entities were hand placed for KaiserCampaign using the syntax method above.
Misc. mod work
In addition to the heavy hitters like KaiserCampaign, I have also made a number of different mods for DOOM Eternal and Skyrim. Too many to list individually here.
Most were small projects made for fun, but show my proficiency to work fast, efficiently and my passion for what I do. If that means anything to you, feel free to check out my Nexus Mods page where you can find everything I’ve made over a period of 5+ years.