Walkthrough VideoComing Soon
TowAR Defense is a mobile AR Tower Defense game made in Unity developed during the Fall semester of 2018 at Cogswell College where players use physical cards to move their towers around the level to defend their base. Timing tower placements and buffs at the right time is key to victory against the invading aliens.
For this project, I fulfilled both the roles of a Designer and an Engineer on a team of 10 individuals. Due to the heavy audio composition of the team (4 members of the team were Digital Audio Technology majors), the project originally aimed to have a focus on musical elements. However, due to many complications during development, much of the audio focus was dropped and the scope was vastly narrowed in order to have a deliverable product by the end of the semester.
Game Design Document
During the first couple of weeks of the project, I worked with the other designers, Joey Smith and Galen Sipes, on the early design of the game and creating our Game Design Document.TowAR Defense GDD
Each of us then began working on designing a separate level, an introductory level, an intermediate level, and a hard level, the latter of which I designed.
I began creating a level map based on the dimensions of the modular path pieces the Art team was making and some assumed tower ranges.
I then proceeded to whitebox the map that I had designed.
However, after this point in the project we began to encounter issues with Perforce not saving references/metadata correctly. With the amount of time it took to bugfix and solve these issues, the second and third levels were eventually dropped to focus on creating a singular – but complete – level.
During development, I was responsible for creating and implementing the ability for towers to upgrade.
First, I created an experience points system that would activate the ability to upgrade a tower when certain thresholds were met. Enemies would grant a customizable amount of experience on their death which was kept track of by a GameObject. In addition to tracking the current amount of earned experience, this GameObject would also let the thresholds be modified for when tower upgrades would be granted to the player.
To let the player upgrade a tower, I created an Upgrade Station that would activate once the required amount of experience had been earned. To upgrade the tower, the player simply had to place a tower inside of the station for three seconds and then the station would replace the tower with an upgraded version.
Video Example Coming Soon
While the level 2 towers only increased stats such as damage or range, the level 3 tower for each type had special functionality that I had to program. The ‘minigun’ tower gained dual targeting ability, the ‘rifle’ tower gained a damage over time effect, the ‘cannon’ tower gained an area of effect slow, and the ‘sniper’ tower gained a second, reduced-damage shot every time it fired.
Video Example Coming Soon
Though ultimately unnecessary due to only using one level, I also programmed functionality for the tower prefabs to pass the materials for each tower to their upgraded versions. This would allow for different textures for different level themes to be used without creating redundant prefabs.
Since I had dealt the most with handling and spawning tower instances, when the Tower Selection menu was created, I was responsible for creating the functionality that would activate the selected towers in the actual level. In order to do so, I stored information for which towers the player chose on the menu in a static class. When the level was loading, it would access that information and instantiate the appropriate towers, attaching them to the corresponding cards. I also assisted Galen with adding the tower preview, using a second camera along with a render material to display the 3D objects on the 2D canvas.
FMOD, Unity, and Perforce Struggles
While bugfixing is a necessary part of any project, we ran into insurmountable issues when it came to using FMOD with Unity while using Perforce. I ended up spending weeks working with the Audio team trying to get the programs to work together. Though we were met with some success – I was eventually able to get FMOD to integrate with Unity properly and the Audio team implemented some sound effects through it – for some reason Perforce wasn’t allowing FMOD to update its banks correctly, prohibiting any new audio from being added to the project. The Audio team even sought help from teachers and professionals who used the programs regularly, but no one could solve the issue. Eventually, late into the semester, we dropped using FMOD and quickly switched to implementing audio through Unity’s own system with what time we had left.
Back to top