Incoming Threat

About

Incoming Threat was made by me in Unity/C# as a side project. Fight a number of unique enemies in this pseudo boss rush.

It taught me the basics of FPS mechanics and how to design enemies and player abilities alike. I also learned the basics of multiplayer and game networking.

I designed and developed this entire project.

Important Points

  • The goal of the game is to survive as long as possible
  • This game is like a mini boss rush with enemies that have different abilities
  • Players can get new abilities throughout the game which allows for more gameplay variety
  • An earlier version of the game had basic, functioning multiplayer

Details

Enemy Design

Enemies are designed with unique abilities and movement. Currently there are 8 enemies in the game:

  1. A hovering cube with a ranged slice and area of effect melee
  2. A cannon that fires cannonballs and lunges
  3. A 2D enemy on the screen. Player needs to fight it in a 2D platformer
  4. A large floating fortress that fires arrows and drags a spiked ball
  5. A humanoid with a rifle
  6. A floating sphere that fires projectiles and deploys a field that manipulates movement
  7. A fast humanoid with pike. Closing the distance will force them to switch to a knife
  8. A floating, hidden, low poly sphere that darkens the area around the player. Only reveals itself when preparing to attack, player must counterattack in time to stun and damage it

Player Abilities

Players have access to a number of abilities and gain more through upgrade stations found throughout the area:

  1. A rocket launcher launcher on a cooldown. (With rocket jumping of course)
  2. An ability which makes the player invulnerable for a small time
  3. A throwable jar that applies a status effect
  4. A short range teleport

Status Effects

I created a status effect system in the game. Enemies can be inflicted with these effects. There are 4 base elements and can combine with one another to create a total of 6 combined elements.

Player Weapons

This was one of my first projects that has multiple, switchable weapons. This allowed me to learn how to construct a flexible weapon system. It involves a central universal weapon script that changes depending on what weapon is active. This is the basics that helped me develop the other project I have: Weapons in a Cube.

Biggest Challenges

A problem that was really confusing for me was that when I played the game hitboxes would seemingly randomly start to become inconsistent. After extensive troubleshooting I found out that projectiles flying off into empty space caused this. In Unity, if an object flies too far from the world origin then it causes colliders to break. This problem was especially hard since the cause and effect are not very closely related.

Getting a working weapon/ability system was a little hard, but the centralized approach that I took allowed it to be very flexible. The abilities are bound to 1-4 on the keyboard, with the centralized system it allows for the abilities to be placed in any of those keys in any order.

Working with multiplayer was complex and took a while to understand the basics of. While not in the current build, it was working in an earlier version and I learned a lot of networking from it. I’ve worked with the system of server communication, RPCs, network objects, and more.