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.
Enemies are designed with unique abilities and movement. Currently there are 8 enemies in the game:
Players have access to a number of abilities and gain more through upgrade stations found throughout the area:
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.
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.
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.