Fire Sale

Acting as anti-virus software, defend the system mainframe from wave after wave of malware attackers.

Role
Lead Designer
Team Size
6
Platform
PC
Tools Used
Unity Engine 4.3.4
Adobe Illustrator CS6
Duration
4 Months, 2014


Overview

Fire Sale is a third-person action tower defense game featuring an anti-virus avatar that is controlled by the player. A cyber terrorist attack befalls the systems of a city and the player is tasked with defending it. The player must elevate platforms, to create pathways and build turrets on a hexagonal grid to destroy invading malware. In tandem with the turrets, the player swings an energy sword to aid in defeating the attackers. Destroying the enemies provides the player with data bits that can be used to create new turrets.

The game features two phases: The build phase where the player can spend bits to elevate hexagonal tiles, potentially altering the enemies' path. Atop these raised platforms, players can build a variety of turrets that damage or hinder the progress of malware. The combat phase occurs when the player has prepared their defenses; a predetermined set of enemies is spawned and they begin their march through the player's gauntlet. Should enough malware reach the system's mainframe, the entire system shuts down and the cyber terrorists would be victorious. 

Intent

Fire Sale was meant to be an intense sci-fi experience. Our art features characters and environments composed of simple geometry with colored edges, akin to the Tron, as our game takes place inside of a computer. In addition to the neon hues and rigid models, the game featured pulsating cubes that squashed and stretched to the music. These elements are meant to inspire the sensation of entering a personified computer world.

This is also the first project I worked on with a team for longer than a few months. The time inspired us to design and create much more than we feasibly could.

Iterative Design

I was the Lead Designer on the project. However, system design is my passion and I could not resist having my hand in the code itself.

  • Initial prototyping
  • Animation system creation & implementation
  • Melee combat systems
  • Tower conceptualization
  • Economy implementation
    • Scripting the economy system
    • Tower tooltip image creation
    • Scripted tower tooltip display system
  • Initial gameplay conceptualization
  • Maintaining project vision
    • Scope adjustment
    • Team morale

Animation System

Before I begin, I want to note that this system was created because our sole artist was being overworked. In addition, he had little Unity experience and did not animate. I, myself, had no experience with implementing animations either, so I built this from the ground up.  At this point, we had begun crisis mode and, while he came up with clever ways to reduce his workload, he still needed help. To that end, I created this system over the course of about 6 hours. While the script works, it is rough; it was a proof of concept that our game could feasibly be done with animations with a single artist. Since we, at this point, shifted to creating a vertical slice, I did not revisit the system during this project.

The system itself is fairly straightforward. In the example to the left, we have the player character and his sword. By clicking, the player swings the weapon. This is done by the player carrying around a collection of empty GameObjects. These objects were originally duplicates of the sword that later had every component removed except for their transforms. By using an input (like clicking a mouse, but any activator would work), the subject lerps and slerps its transform to match the presets.

After tweaking the speed and delay values, presentable animation can be achieved. In order to utilize this system, every character in Fire Sale was made with each movable piece being separate from the whole, similar to Rayman.

Click here to see the script.
Note that the frame array is of type GameObject.


Combat System

Simple and elegant are the primary components of my design philosophy. Similar to a puzzle, the more simple the pieces, the easier they are to place. In the case of game design, simple pieces can easily be altered and reformed, but still be made to fit into the larger whole.

This particular script was put on the animated sword mentioned above. On colliding with an enemy, health is deducted, a hit is called (causing audio and particle effects) and the enemy is knocked back.

Due to path-finding bugs and time constraints, however, the knock back effect was removed. 


Tower Conceptualization

As lead designer, one of my roles was to maintain a cohesive vision for the project. With my other designers, we created 5 basic arch-types for our towers to fit whatever theme we came up with. Eventually, we unanimously agreed on a cyber-space setting to experiment with aesthetic polish and music options we knew we could develop. The following towers were a direct result of us designers collaborating with the artist to create aesthetically pleasing towers with different gameplay flavors to allow for strategy and differing play styles.

. From left to right: Security Basic, Nortonfelt Repeater, McAffie's Cannon, Code Scrambler and VipRe DoubleStriker.

Once we had our theme, we gave our arch-typed towers names that referenced real life anti-virus software and weaponry

The Peashooter, Security Basic,  fired at a slow pace, but dealt high damage. This was our most basic tower to allow for players to better get acquainted with how to play.

The Assault Cannon, Nortonfelt Repeater, fired much faster and was more adept at destroying low health, but quick moving targets. Because of this tower, we designed it such that the player could dictate how to prioritize targets (such as by speed or amount of remaining health). This system was one of the first to be cut, however.

The Commando, McAffie's Cannon, fired as slowly as the Security Basic, but its rounds detonated, causing area damage all around. The projectile would follow a target until it reached it and detonated. Any object within its sphere of influence took damage that diminished with distance from the epicenter. With clever use of enemy laning and tower synergy, this tower was a favorite among testers.

The Stasis Tower, Code Scrambler, was not actually based on an anti-virus, but, rather, an augmentation to the already in place security. By slowing down enemies, players could more efficiently use towers and prolong their ability to destroy all targets.

Finally, the Double Barrel Shotgun, VipRe DoubleStriker, was our current endgame weapon. High in cost, the weapon fired dual lasers and cut through enemies. Initially, this tower was created as an upgrade to the first tower mentioned above. Unfortunately, tower upgrades were another thing that had to be cut.

Though I helped design these towers, the actual scripting of their individual behaviors was delegated to one of the other game designers.


Game Economy

The economy in Fire Sale consists of bits of data that are collected from destroyed malware invaders. It's fairly simple to add and subtract numbers, so the creation of the economy was exceedingly easy (previously, towers could be placed infinitely). A few hours before testing, however, we realized that we forgot to include any sort of conveyance for what each tower actually costs or does. Before testing began, I created this.

My time was split between creating art, which amounted to tracing over stills in illustrator, and creating a system that would allow players to cycle through each available tower.

With those in place, the scripting of the system was incredibly straightforward. Because the data for each tower was located on the prefab, I simply pulled those into a GUI handler object, changed the values to strings and placed them so they lined up with the proper location on these tooltips. As the player hits the numbers 1 through 5, the displayed tower, and its data, are switched accordingly.

ToolTipGif.gif

Click to enlarge.

Testers were now able to see the values for each tower. Many of them greatly appreciated the addition and none seemed to realize it was created and implemented at the last minute. Because the values were drawn directly from the tower prefab themselves, the images themselves never had to be changed and would be updated with whatever changes we made. While the art could be improved by a legitimate artist, this system could be used for every tower.


Initial Gameplay Conceptualization

A few weeks into the project, my team grew from 4 to 6, gaining a new game designer and a producer. We soon had our first meeting and the first iteration of Fire Sale began to take shape in our heads. By the end of the meeting, what we were going for had an incredible array of systems that we wanted to implement. Unphased by the dangers of feature creep, our initial vision included the following.

  • 3D Player controls
    • Movement
    • Building Towers
    • Melee Attacks
  • Game economy
    • Gaining & spending 'Data Bits'
  • Tower Functions
    • Placing or selling
    • Specific functionalities
      • Damage, slowing, etc.
    • Enemy prioritization
      • Target fast enemies, low health enemies, etc.
  • Upgrade systems
    • Player upgrades
    • Tower upgrades
      • Per level and throughout the game
  • World systems
    • Zone activation and progression
    • Branching level progression
    • Enemy spawning and movement
      • Path detection
    • Hexagonal grid spawning
  • Immersive art
    • Full animations
    • Simple models/textures

A daunting list for what was now only 3 months left. I, however, was confident in the skills of my teammates and myself to attain this. Unfortunately, as I mentioned above, one teammate would run into serious problems and we would be set back significantly.


Maintaining Project Vision

Once we realized what kind of trouble we were in, we had to put the hammer down. No more features, features had to be cut and we had to make do with a simple vertical slice, a proof of concept. Morale was fairly low, but we suffered through it, gaining a second win in the last few weeks. In the end, the project was a mere shell of what we had initially wanted.

  • 3D Player controls
    • Movement
    • Building Towers
    • Melee Attacks
  • Game economy
    • Gaining & spending 'Data Bits'
  • Tower Functions
    • Placing or selling
    • Specific functionalities
      • Damage, slowing, etc.
  • World systems
    • Enemy spawning and movement
      • Path detection
    • Hexagonal grid spawning
  • Immersive art
    • Simple models/textures

While we did get these features in, they were not balanced by any stretch of the imagination. It has all the basic elements of a game, but the levels are unfinished and few in number. Though, since we were able to pull through against such trying odds, I would still call this project a success.


Postmortem

Unfortunately, some serious issues began to affect our sole programmer. Several events led for this teammate to, ultimately, sacrifice a lot of his working time on the project. These issues were not immediately known to the rest of us, and our project began to trip up. While he was able to move beyond that, and come back in more than full force, the damage was done and we were behind. From then on, we were struggling to get our concept presentable.

Despite the unforeseeable mishaps that occurred during the course of this project, reception was overwhelmingly positive. After we presented our final project, our executive producer reiterated what he had said from the very beginning "...scope, scope scope...." Every member of our project learned the harsh realities of feature creep and just how long it really takes to implement and balance systems. Having 4 months led us to believe we were immortal, but now we really know how fleeting that amount of time can be. We would take that lesson to heart in our future projects like Astrocyte or Hyper Syntax.

That was just for the team, however. I was commended specifically for my involvement in keeping the entire game on track through my leadership and coding expertise. To quote my executive producer: "I would say that you were one of the star members of your team and an excellent example of why a designer who is not afraid to dive into the tech is so valuable.  You helped keep your team afloat during the rocky moments. Nice work!"

Since this project, I have never been shy about exploring, altering, adding or removing code. Of course, I do this cautiously, but I am confident enough in my abilities to be able to solve major issues myself, without the need for others to take time to help.