Spark Defense

My Role

For Spark Defense my role was Unity Developer 1. While I realize the name is quite broad, the main areas I focused on was creating the pickup and deposit systems, adding mesh baking, and creating a scriptable object based sound system!

The Project

Comments

I worked on this project for about 8 months, from June of 2022 through February of 2023, and we started off with 3 programmers before being expanded to include 3 artists and 2 designers making for a total of 8 people working directly on the game. The game itself was a fast paced tower defense/MOBA mashup where the player got to choose their hero at the start of the game and based on their hero would get to build defenses for their harvester. Each hero’s defenses would be customized based on the chosen hero so if you were playing as the ice based hero your defenses would have a cold and icy look to them where as if you choose the plant based character they would have more of a jungle style to them.

For this particular game the largest chunk of my time was spent implementing a pseudo inventory system for picking up and depositing items. The way I chose to accomplish this was by using scriptable objects to create a base class that was extended out into the different kinds of items that the player would be picking up. For the most part this split out into 3 categories, healing, powerups, and depositable items. Each pickup would have a timer to determine how long it would take to pickup and (when necessary) deposit the item, what the item would do, and how many of that item the play could pickup/carry at one time.

On top of the pseudo inventory system, I also worked on creating the camera system that was used in-game. I accomplished this via Cinemachine and by making use of it via code. The overall goal of the camera system was to have something that kept the player in the center view while still keeping all the the important information displayed and legible. This resulted in experimenting with multiple different camera angles until we eventually settled on an isometric camera view rather than just top down or over the shoulder.

In addition to the aforementioned systems I also got to work on creating the in-game message/alert system that would show up on screen when different events would occur. For example, if something import was happening, such as your harvester taking damage, it would pop up a notification dead center of the screen and it would flash red. But if it was something less important such as your defenses being attacked, it would pop up off to the side and be a smaller, less intrusive notification. I should mention that all parts of each notification was customizable and created as scriptable objects so all you’d have to do is create a new “Popup Message” item and then just select what kind of popup it was from a drop down of types, and then you could customize the text, color, how long it stayed on screen, and a few other options.

One of the coolest things I got to add to the game was the Unity Analytics and development tools. This allowed us to track how many players we had along with player retention and even let us setup things like an in-game announcements system! This was by far the coolest system in my opinion because I’ve never really had the chance to work on something like that and creating an in-game display for the announcements that could be sent new messages in real time was just a really nice feature to have. This was especially handy when we needed to quickly broadcast information to the players such as when the playtimes were, when servers would be shutting down, etc.

The final system I worked on for the game that unfortunately (as far as I’m aware) never made it into any builds of the game was a mesh baking system to improve performance. The reason this was being added was because one of the biggest issues we saw people constantly complaining about in the game was experiencing large frame drops when a lot of enemies would be on screen and the game just generally not running well on older hardware. In order to address this issue we decided to add mesh baking to the game along with some options for running at lower resolutions. While the mesh baking system I was creating was based on a Unity add on called “Mesh Baker by Ian Deane”, due to running into funding problems, I was unfortunately let go before I could finish the system.

Overall I would call this job a phenomenal learning experience for myself because not only did I get a chance to really learn about scriptable objects in Unity, I really got to work on things I’ve never had the chance to work on before and I even got to work with some very well versed Unity Developers who were kind enough to teach me while we all worked.

You can check out the Steam page for Spark Defense by clicking here!

Scroll to Top