top of page

Vac-Attack

Vac-Attack is a wave-based shooter where you use a vacuum to suck up objects and shoot them at your enemies.

This game was created by implementing 1 feature per day over the course of December 2020, then published on January 1st.

#GameDevember

In November 2020, a friend of mine proposed a "Game Devember" idea:

"Artists draw a piece every day for October, so I'd like to propose game devs make a project and add one feature every day for December and release the result on New Year's."

Read his post about it here

Systems Design

Gameplay Design

The core game loop is to suck up items in your vacuum and shoot them at enemies.

This is inspired by Blinx The Time Sweeper.

I really wanted to see how a "find your own ammo" resource would work in an FPS, and the result was promising.

Gameplay UX - Power Scaling

Enemies are scaled to make new weapons feel powerful.

Before a wave introduces harder enemies, it throws previous wave enemies at players to showcase how much stronger the new weapon feels.

Gameplay UI - Ability Info

The game is fast paced, so I had to make sure information was relayed to the player intuitively.

1. "OUT OF AMMO"

2. Ability Cooldown

3. Thruster Cooldown

Skills and Abilities

Vac-Attack_SkillTree3.png

Vac-Attack has a few ways players can approach each round.

I broke up the skill tree into three different branches to allow players to choose skills that fit towards their playstyles.

Offensive Skills

Critical Strike

More Damage

Rage

Even More Damage

Bigger Capacity

Rage+

Rage ability increases damage

Defensive Skills

More Armor

More Gold

Solid

Even More Armor

More EXP

Solid+

Solid ability negates damage but slows player.

Utility Skills

Thruster

More Health

Improved Thruster

Double Jump

Even More Health

Health Regen

Thruster boosts the player in desired direction

Additional UX

When a wave ends, there is a pause before the player can initiate the next round.

Additionally, a prompt appears if the player doesn't enter the shop AND skill tree.

This was to prevent the player from starting a new round without new equipment.

Weapon Design

Suck Blaster

Regular Vacuum with no gimmicks.

For players who want a basic experience.

Play Style: Standard Play

Fire

Deals damage over time.

For players who want to shoot an enemy and let them die while they fight others.

Play Style: Damage Over Time

Ice

Freezes enemies in place.

For players who want to limit enemy movement for better positioning.

Play Style: Tactical/Placement

Retrospective: Ice would be a better utility if the player had two weapons to swap from.

Double Shooter

Fires two projectiles

For players who want to hit multiple enemies at once.

Play Style: Trick Shots

Rapid Shooter

Fires projectiles rapidly

For players who like to rapidly click and see damage ticks.

Play Style: Quick Damage

Heavy

Hits HARD but fires slowly

For players who want strong attacks and save resources.

Play Style: One-Hitters

Combat Design

Designing the combat system was a huge challenge in this project. Taking up just about 1/3 of the total time I worked on it, lots of math and numbers were handled to "perfect" the system.

Total System

The expected values of my systems. Each wave is broken up into Wave Power, Player Power, Skill Points, Gold. These numbers helped gauge the difficulty curve of each wave and how much Gold/Points the player is awarded.

Total.png

Player Power

Calculated by how much Attack, Armor, and HP the player has.

PlayerPower.png

This chart helped me identify how strong the player was expected to be at the start of each Wave.

It's not a perfect calculation as it is very dependent on if the player chooses specific skill boosts.

Example:
HP Average is calculated by taking the base health, 100, and averaging it between that between the boosts (200 HP or 300HP) to give me an "expected health" value to calculate against.

Weapon Power

Basic calculation of Damage Per Second

I get the DPS of each weapon at their base strength, along with if the player has the Damage Boost Skills. I then average all three of those powers to calculate the Average Power.

The Expected Value (EV) takes the average between all the new weapons that are available in the that wave, and that is the number I use to calculate Player Power.

Weapons.png

Wave Power

Total power of the enemies in a given wave.

Waves.png

Enemies are broken up by Ranged and Melee and each have 6 different tiers of power.

Wave Power Calculation:
(((AtkR + HpR) * QuantityR) + ((AtkM + HpM) * QuantityM)) / ((QuantityR + QuantityM))

R = Ranged Enemies
M = Melee Enemies

This formula calculates the power of Ranged enemies and Melee enemies by adding their Attack and HP together then multiplying it by how many will spawn. That number is then divided by the total number of enemies.


Retrospective:
This formula is a little clunky and would've been more clear if I calculated the individual powers of each enemies then calculated that against the number of enemies, rather than doing ALL of that calculation in a single formula.

Gold is also calculated here as each tier of enemy drops a specific range of gold per death.

Economy Design

Distribution of Gold and Skill Points

Gold and Skill Points.png

Gold became an arbitrary number to calculate. I let the enemies judge how much gold the player earns. I had to play around with a few numbers to ensure all gold earn felt good. Once I found a good number for how much gold enemies dropped, it came down to how much players earn at the end of each round to calculate how much each weapon costs.

TD;LR: Gold calculation was more influenced by Game Feel rather than System Design

Gold.png

This chart displayed the expected gold to receive from every enemy type.

The range is calculated between base earning and earning with the More Gold Skill acquired together to get the EVs.

Skill points were alsof arbitrary. EXP earned is a fixed number per enemy tier so it came down to a bunch of basic addition to calculate how much the player would earn each wave. This helped me create the pace in which skills can be unlocked in the game.

Daily Updates

Every day I posted my new feature

GameDevember

Day 1 - Movement

Day 1 - Movement
Day 1 - Movement

Day 1 - Movement

00:11
Day 2

Day 2

00:12
Day 3

Day 3

00:11
Day 4

Day 4

00:25

Note: Day 20 did not have a video because it was purely systems design with no visual change. Days 27-31 were playtest and iteration on playtests.

image.psd(1).png
image.psd.png
linkedin.jpg
bottom of page