NEON DEFENSE
Status
Start Year
Duration
Team Composition
Development Platform
Technologies / Concepts
Complete
2022
3 Months
5 Computer Science Students
Unity
Weighted A*, C#
OVERVIEW
Back in my Undergrad, I worked with a few other Computer Science students to create a Grid-Based Tower Defense game.
Having no Art or Production department, we decided to go with a game that was mainly mechanically focused, with bright colors and post-processing effects to make a quick style.
However, many of the other developers, although familiar with C#, had no experience in Game Development. This created a knowledge barrier for completing this project.
Neon Defense Main Menu
WHAT I DID
My chief technical contribution was the enemy pathing algorithm.
Enemies needed to path around walls constructed by the player or break through the walls depending on the type of enemy and the how much the wall diverts the given enemy. Some enemies needed to be aggressive and break any wall that was in their way, while others were fine to take a long way around.
By modifying the A* algorithm to use different weights for walls based
Example of A* Pathing Algorithm
I was able to accomplish this desired behavior by replacing the default A* behavior of having walls non-traversable, by instead giving the walls a “penalty” that increases the cost of traversing them.
Different enemy behavior could then be created simply by changing the weight of the walls in that enemies pathing. Enemies with higher penalty values would be willing to travel further to avoid player walls.
Some enemies were even given a slightly negative penalty value to have them actively target player constructs. However, steps were taken to prevent infinite calculation.
Different pathing based on Enemy Type
My other main contribution to this project was serving as the lead for the group.
The team I was working with were 4 Computer Science students who had little to no experience in Game Development. This meant that many were still learning Unity’s interface and almost all were not aware of many of the standards for Game Development.
Much of my work as lead in this project involved mentoring the other developers in Unity as well as helping to teach them the best practices for making a game. I regularly held tutorials on how to use much of the functionality of Unity and the Object Oriented Programming methodologies.
This allowed for even an unexperienced team to put together a quality project. Even more importantly, it allowed the other developers on the project an opportunity to get an introduction to making Video Games.
WHAT I LEARNED
The first major thing that I learned in this project was my interest in AI and pathfinding algorithms specifically. Finding a way to modify an existing algorithm to achieve a specific enemy movement and behavior is something that I find super cool and are pursuing further.
The second major thing that I learned form this project is how much I enjoy teaching others about Game Development. It was amazing to see how eager the team was to learn about the project and filled me with a great sense of accomplishment to be able to share my passion with them.