Our Project: TowAR Defense

Project Description

We are making a tower defense game that utilizes the Hololens 2's surface detection to turn the environments people play in into interactive tower defense levels.

>

Important Links

Weekly Snippets

Week 1

Cameron: talked over project ideas with the team and started looking into Unity shaders. Also skimmed over a Brackey's tutorial on navmeshes.
Terry: Discussed project ideas with the team and looked for ways to utilize spatial mapping.
Andy: Offered and discussed potential project ideas in lecture time. Worked on personal demo to test unity features. Created project pitch slides
Sergio: Discussed project ideas with the team in the interest of creating an educational experience for the user. Created a rough draft of the team website.

New Implented Features

NA

Files to be Reviewed

NA

Blocking Issues and Needed Help

NA

Week 2

Sergio: Discussed PDR with Cameron about the game aspect of TowAR Defense. Collaborated with Cameron on what the enemies should be and how the difficulty curve should be structured.
Andy: Created the PDR with the team. Set up my unity environment. Started exploring how to work with Spatial Awareness meshes. Reformatted website
Terry: Write up PRD. Went through documentations about spatial awareness. Tried to help Andy in Lab to develop spatial awareness. Start working on UI and audio for AR.
Cameron: Created a temp monument model and added a health bar to it so the monument can now take damage.

New Implented Features

Figured out how to extract mesh data generated by spatial mapping
Added health bars to the temporary monument model

Files to be Reviewed

NA

Blocking Issues and Needed Help

Generating a new mesh from the existing meshes generated by spatial mapping. How can we take a subsection of the mesh and display it?

Week 3

Sergio: Experimented and implemented an enemy spawning system that targets a specified monument which upon impact, the enemies are deleted from the scene to show that they've attacked. Currently colloborating with Cameron to combine our scenes so the enemy and defensive towers interact according to plan.
Andy: Added a spatial observer (and static object mesh observers for testing) which creates meshes for the the monument object to scan and create a play area with. Added keypad logic to spawn a monument, scan the surrounding meshes, generate a new mesh, disable the existing spatial meshes, and drop the monument on the new play area. Also created some test shaders to gracefully spawn in the play area in AR. Oversaw each team member's parts to ensure we all agreed upon a design for towers, menus, and monuments to make sure the pieces fit when we combine them next week.
Terry: Implemented main menu, in-game menu, their related visual cues, interactions, scenes. Added towers placeholders and wrote most of their corresponding behaviors. Successfully merged all my codes with Andy's project and solved all emerged problems. Currently trying to add more details to menu and make prefab spawn correctly. commit history
Cameron: Added the tower dropping and activating after a duration of time. Started on the monument manager commit history

New Implented Features

  • Hand Menu
  • Monument Prefab
  • Tower Prefab
  • Enemy Spawning
  • Procedurally Generated Meshes using spatial mapping
  • Probably more random stuff?

Files to be Reviewed

  • Prefab origin position update functionality (Terry)

Blocking Issues and Needed Help

  • Enemies bounce off of each other, but shouldn't be a problem as long as they are spawned in a single file line towards the monument. (Sergio)
  • Making a shader that fades the mesh into visibility from the center outwards (Andy)
  • prefab origin position update functionality. Not easy to find the best solution. (Terry)

Week 4

Sergio: Collaborated with cameron to push the Cameron branch into master. I restructured the random enemy spawner to work with real-world coordinates intead of Unity's coordinates. Worked with the AR team to combine branches and create a Demo of the game.
Andy: Worked on getting the parts of the project into the same scene. Added Water mesh and shader. Worked on getting the in game shop working.
Terry: Adding audio and visual cues for better user interactions. Worked with the team to merge all branches. Fixing persistent bugs and new bugs that emerged during merge. commit history
Cameron: Added towers that shoot and kill enemies, currently using a temp model for the towers. Made it so that the monument can take damage from the enemies now. Helped Sergio with debugging the enemy spawner. commit history

New Implented Features

  • Game now works in AR
  • Water mesh and shader
  • Shop has full functionality
  • Audio and visual cues for UI
  • Random enemy spawner with real-world coordinates
  • Towers that shoot and kill enemies
  • Monument now takes damage
  • Probably more random stuff?

Files to be Reviewed

  • None for now

Blocking Issues and Needed Help

  • None for now

Week 5

Cameron: Made the monument health bar into a hit system so it will be easier to see exactly how much health the monument has in game. Added enemy death animation though hasn't been pushed due to the demo this week. Helped Sergio fix the enemies spawning the walls issue. Managed to build the appx file for the demo after trying many of the suggestions from online resources and it only ended up working when building from my laptop. Need to investigate this further as I have a few ideas to fix it. commit history
Terry: Added tutorial dialogue, in game right hand menu with proper help and home functionality. Implemented audio placeholders such as "monument on fire", "tower firing" and "enemy death". Smoothed user interactions. Worked with the team to demo and receive feedback from other teams. Planning to fix bugs that emerged during playtesting and improving user interactions. commit history
Andy: Fixed shader fade in, set collisions to only work in the play area, stopped line renderer from working on non play area, changed tower drop logic to be instant, added logic to start and stop tower script when grabbing, moved folder and project into new project, added user settings to gitignore, fixed landing line to not render for items in shop, add shake to gold display when not enough money, set tower color on buy, set gold at start, prevent towers from dropping near monument by adding shader to sphere around monument, added logic to pause game, fixed wave generataing system.
Sergio: Worked w/ the team to demo and recieve feedback on our PRD version of the game. Looked at spawning of enemies and brainstormed ideas for a better user experience. At the moment, users almost don't have to do anything when playing the game and can leave it in the background. We're going to focus on increasing the difficulty and give users more time to start.

New Implented Features

NA

Files to be Reviewed

NA

Blocking Issues and Needed Help

  • Audio Mixers configuration. Audio Playbacks. Codes related to audios.
  • Unusual configuration notification pops and Unity crushes when open the project for the first time.
  • Cannot seem to build a working appx file - Cameron could but we don't know why.

Week 6

Cameron: Partially fixed tower shooting (need to change back to using the rigidbody), implemented the game manager, sorted out the hand menu, fixed the intermission starting before all the enemies were dead, added the restart game button, added the start next wave button. commit history
Terry: Trying to fix the audio issue. Starting to work on NavMesh.
Andy: Spent most of the week bugfixing things (Tower in shop activating, onCollision registering for monument in shop, creating a line renderer for Tower in shop) added and removed canvas indicator, added directional indicator, fixed water material not being duplicated, fixed monument sizing, added portal prefab
Sergio: Made a Menu Manager that worked with Cameron's Game Manager to keep track of the states. Used Radial texts instead of the canvas to display messages to the user. Tried to figure out what was causing the enemy counter to be less than 0.

New Implented Features

NA

Files to be Reviewed

NA

Blocking Issues and Needed Help

  • Audio

Week 7

Cameron: Fixed tower shooting by using rigidbodies and making all the movement use rigidbodies in the fixed update loop instead of transform. Potentially fixed the tower targeting issue but that still needs to be tested more. Fixed enemy death audio/particles as well as the negative enemies alive glitch that happened because we didn't immediately destroy dead enemies. Added a shotgun tower but currently need to fix the direction that the bullets shoot towards. commit history
Terry: Implemented and tested the first version of NavMesh with the help from Evan. Tried to find audio bug that causes audio glitches.
Andy: Added prefab population to the play area, fixed a bunch of small bugs, added a directional indicator instead of onscreen indicator for enemies, added textures for the play area and created a stylized shader for particle effects. Refactored the spawn system to create portal prefabs which will exist and spawn enemies for multiple waves. Also worked on getting nav meshes to work properly. + other random stuff for aesthetics.
Sergio: Changed the the text from appearing in the user's face to hovering over the monument w/o movement. That was then changed by Andy to use radial text. Working on making the new text update with the current game state.

New Implented Features

  • New shotgun tower
  • Text prompt above monument with radial view
  • New prefab populates the play area
  • Directional indicator
  • Improved textures for playarea
  • New stylized shader for paticle effects
  • NevMesh

Files to be Reviewed

NA

Blocking Issues and Needed Help

  • Audio

Week 8

Cameron: Fixed the total enemy count by locking and making sure that the enemy would only be counted as dead once. Fixed the tower targeting again as well as the targeting of the ground enemies since they weren't correctly centered. Made a parent projectile class and general bugfixes for the projectile shooting and deleting. Added healthbars to enemies when they take damage and made it so it only takes one button to confirm and place the monument. commit history
Terry: Updated NavMesh so it updates when towers are placed or moved. Tested NavMesh to make sure enemies re-path immediatly when NavMesh updates. Fixed enemies blocked by unwanted objects.
Andy: Created TODO list for the final project deliverables - Fixed a ton of random bugs. Created inheritance structures for the Towers and Enemies, worked on creating the final enemy and tower prefabs, fixed sound bugs. Revamped shop to be workable with a hand menu. Reworked how the gameplay loop works by removing the monument from the shop and controlling rounds by the purchasing of monuments. Created ground enemy logic and helped refine the nav mesh code. Also worked on optimizing the project.
Sergio: Added Archer tower, made it so trees spawn as the child of an empty game object. Added a method so the monument gains health every round.

New Implented Features

  • Enemies healthbar
  • Towers and Enemies Prefab
  • Reworked shop
  • Reworked gameplay loop
  • New ground enemy logic
  • Archer tower
  • Monument new mechanic
  • A lot of random stuff?

Files to be Reviewed

NA

Blocking Issues and Needed Help

NA

Week 9

Cameron: Added the mortar tower with animations, particles, and mostly fixed shooting (slight over shooting apparently). Fixed the the right hand menu and changed the textures of all the ui components. Made the place monument a single button. Made the restart button have a confirm button. commit history
Terry: Gave main menu scene a new look that matches the game. Fixed main menu and hand tracking bugs. Updated game objects models and their collision boxes. Fixed bugs that prevent enemies from getting closer to monuments. Refactored game audio mixer groups and fixed several audio crackling.
Andy: Finalized tower targeting and animations, completely revamped shop, found new audio pack, changed indicator logic for spawners, changed gameplay loop to continue forever, finalized game to work for presentation. Added different play area environments, submitted demo day form, created video for project. Plus random bug fixing.
Sergio: Play tested game for Demo day by having users test it, adjusting tower damage, tower cost, enemy health, enemy gold drop, tweaked bank tower, used feedback to make the game beatable. Made the tower placement in between rounds less needed so users can enjoy the chaos.

New Implented Features

  • Mortar tower
  • Better UI
  • New shop interface
  • Improved game loop
  • New play area environments
  • Significant game balancing
  • New look for main menu
  • Updated model for game objects
  • Better audio mixer groups
  • A lot of random stuff?

Files to be Reviewed

NA

Blocking Issues and Needed Help

NA

About Us

Andy Danforth

I'm an undergraduate senior majoring in Computer Science and Applied and Computational Mathematical Sciences, and I work in the IoT branch of AWS. I have used Unity and computer vision in projects in the past, but I have never worked with XR in any capacity, so I am excited to test it out in this project! My hobbies include reading, working out, biking, and watching movies!

Terry Shen

I am a Computer Science undergraduate at UW. I have been interested in VR/AR technology for almost 10 years. I have experienced Oculus Quest Pro, Quest 2, HTC Vive, Nreal Air AR Glasses, Samsung VR, and Google Cardboard. Working with HoloLens is always my dream and I am thrilling to develop my first AR project with it!

Sergio Medina

I'm a Senior undergrad in CS. I have 0 experence in Unity, AR and VR. I'm looking to change that this quarter with our AR game. Some of my hobbies are bouldering, casually playing chess playing videogames and watching movies. I'm excited to learn about Unity and integrating it with AR for a fun experience!

Cameron Shokri

Hi! I am a computer science student at UW. I have made simple games in the past and I have been curious about AR games on a headset like the HoloLens for a while now. I am excited to be able to learn how to create an AR game for the first time.