Cowboy Defense Force
Project Details
Role:
Tools Used:
Lead Designer
AI Lead
Time Frame:
Link to game:
September 14th - 21st 2023
"Many ideas grow better when transplanted into another mind than the one where they sprang up."
About the project
During our senior year, Adam Fahrer recruited three other team members and me to join Epic Mega Jam 2023. The prompt was “antiquated future,” which had us stumped. Someone would propose an idea, then two or three of us would er and um. After a bit of back and forth, I brought up an idea I’ve had for a long time: A cowboy who never reloads; his holsters do it for him.
Together, the team honed this idea into something satisfying for everyone. We changed it from a linear single-player design to a multiplayer wave-defense design. Since it was my original idea, I took on the responsibility of writing the design document. I created what I believed to be a well-descriptive document focusing on a few pieces: how shooting works, how reloading works, what guns were available, how players could work as a team, what AI did, and how the wave system worked. Looking back on it, there are some key pieces of information that I wish I expanded upon. I'll go into more details below.
Designing guns was my favorite part. My design restriction was that every gun must be a revolver. Do we want a grenade launcher? Widen the barrel and drill out the cylinder. A flame thrower? Tape a lighter on the end of the barrel and fuel up the cylinder. Seeing my ideas not only brought to life but enjoyed by the team was the highlight of this project. Working creatively with others is a great joy of mine.
How it works
AI Overview
Using Unreal's behavior trees I created a basic enemy inspired by Left 4 Dead zombies. Keeping track of a few variables I was able to make a simple horde-like enemy.
Sight and Damage Sense
Using Unreal's AI perception system, I set up the enemy's vision cone. I gave the enemies vision to the sides so they wouldn't lose track of the player while attacking.
Upon seeing a player, the enemy will set that player as the target actor and give chase. If the enemy sees another player, it runs a distance calculation. It calculates the vector from our enemies' location to the detected players' location. It then compares the distance from the newly seen player to the player it is currently chasing. Whichever distance is shorter is set as the target actor.
Damage sense is simple. Our bullets are programmed to know what they hit, and if a bullet hits an enemy and they have no target actor, we give that player chase.
Roaming/Idle Behavior
When an enemy does not have a target actor, it slowly wanders around the area. Upon either being damaged or seeing the player, the enemy transitions to the hostile branch.
Hostile Behavior
Upon entering this branch, the enemy will begin to chase the player. If more than one player is present, the enemy will chase the closest player.
Upon reaching a player within the enemy's melee range it will lash out with a random attack.
If the enemy loses sight of the target actor, it will search the nearby area before returning to the roaming/idle branch

Example of the vision cone. The green line is in the center of the cone, the red dot is the AI, and the black lines are the edges of the cone.


What I learned
Documentation is challenging
During this jam, I often found that what I write is limited to what I think. When developing games, we have a certain feeling we want to give the player. Being able to communicate effectively is key to leadership in any project.
Effectively communicating systems
I now use system diagrams, interaction flowcharts, and action maps to ensure all team members understand the relationships and dependencies between various systems.
Providing quantitative measurements
After this project, I started including numerical data and descriptive language to document the intended experience. Matching an idea is difficult, matching data is easy.
My brain is not a transferrable file
My primary takeaway from this project is the recognition that no matter how fantastic my ideas are in my head, they must be effectively communicated to others to bring the project to life.
Gallery



