
CARLOS GUTIERREZ | Game Designer
Fire Sale

Platform:
PC
Tools Used:
Duration:
~12 weeks (2014)
Role:
Technical Designer,
Sound Designer
Team:
Dylan Goff
Adam Zemany
Hunter Gray
Johnathan O'Malia
Kevin Wheaton
Contributions:
Towers &
Tower behaviors,
Level music,
Gameplay sounds


Overview
Fire Sale is a third person action tower defense game. Players take control of a technomancer in the midst of the largest cyber terrorist attack in history. You must take the battle to the net with your sword and antivirus cannons in order to save the world!
Detailed Info
When I joined the Fire Sale team I was tasked with scripting the behaviors for the antivirus towers. Along with building and scripting the towers I also lead audio direction and sound design of the game. I wanted to make sure the towers were easy to use and understand to the other designers. With that in mind I created some universal tower behaviors that included variables the team could edit as we iterated on gameplay.
Base Behaviors
![]() Awaken Turrent BehaviorThe turret is in a sleep state until an enemy comes into sight. Once the enemy is in the trigger region the turret will face the enemy and enable its shooting behavior. |
---|
![]() Bullet BehaviorAll projectiles follow this behavior of going towards a target when fired and destroying itself when it hits the target or the floor. |

I modified a behavior from a previous project (Killer-T) for turret activation. All turrets start out asleep until an enemy enters its awakening radius. Every enemy that enters the radius is sent into a list of enemies to fire at in first-come-first-kill priority. Through proper prefab composition and use of the built-in looking behavior I was able to achieve simple and immersive animations for the towers. The shoot behavior was made to be universal enough that it could be applied to all turrets then modified in the inspector to create new tower types.
Shooting
![]() Shoot BehaviorThis script tells the turret to fire an assigned projectile at the target after a duration of time set in the editor. |
---|
![]() Shoot Behavior InspectorThe editor allows for designers to make different turrets through the projectile, bulletSpawn, instant damage, and max time variables. It also allows for myself and other programmers to debug via the shot timer and target parameters. |
![]() Single Shot Cannon |
---|
![]() Rapid Fire Turret |
The shooting behavior I wrote was later used to make the two lower costing towers in our game. Through manipulation of values in the inspector we were able to create a slow firing cannon and a rapid fire turret. I made sure to leave variables important to gameplay open to editing. This would allow us to make future edits based on QA feedback.
Grenades
![]() Grenade BehaviorSimilar to the shoot behavior, the grenade behavior instead asks for an explosive projectile and triggers a secondary behavior upon contact. This behavior is used on both the grenade launcher and stasis towers. |
---|
![]() Explosion BehaviorThe explosion behavior creates a sphere (explosion radius) that increases over time. Enemies that make contact with the explosion radius are damaged. The explosion radius destroys itself when the maximum size is reached. |
![]() Explosion Behavior InspectorHere the designers can set how quickly/large they want the explosion radius to grow and how much damage it does to enemies. |
![]() Stasis Explosion BehaviorThe stasis explosion acts differently from the grenade in that the explosion radius grows, stays max size for a period of time, then shrinks before it destroys itself. This was added after feedback from testing sessions. |
![]() Stasis Explosion Behavior InspectorI gave designers the ability to set how quickly/large they wanted the explosion to be as well as how much it slowed the enemy, how long it held maximum size, and how quickly it shrunk before destroying itself. |
![]() Grenade Launcher |
---|
![]() Stasis Cannon |
Grenade behaviors were handle with enter trigger and stay-in-trigger functions to handle the slowing and/or damaging of enemies. The trickier part of the grenade was the explosion. We needed to create a visible explosion for player feedback. To accomplish this I created a scaling vector with a grow rate. The stasis grenade demanded the explosion stay at max size then shrink. After creating a hold for max size and reversed the scaling vector I made several values tweakable for quicker gameplay interation. The speed of growing/shrinking, maximum size of the explosion, how long the explosion stayed, how slow it made enemies, and how much damage it delivered can all be manipulated through the grenade and stasis grenade inspectors.
Post-Mortem
We accomplished a good amount of what we set out to do at the start of this project, but we also fell victim to overscoping. The combat system pitched was one that would be as clean as Legend of Zelda's. It ended up taking way too much time to create. AI pathing and making the map generation work with constructing towers also proved to be a daunting task that worked as planned, but took all of our one programmer's time.
If I could go back in time and work on this project with the knowledge I have now I'd have us simplify the melee combat much more. Since a major part of my time was making/editing tower behaviors, I'd communicate more with our designer to make sure he could edit the variables he needed to without my assistance. That would allow me to assist with player feedback and GUI scripting.