Project Proposal: Link
Week 1:
At the start of our game development, we decided to tackle homing mechanism as it is one of the most important aspect of the game. We were able to successfully create the homing mechanism by passing the coordinates of the diamond and the enemies into a function that calculates the distance between the two object, direction at which the enemy have to face to reach the diamond, and update the enemy's position for every frame.
Week 2:
Following up from last week, we made the enemies push the diamond. We accomplished this by creating a case statement for when the enemy's radius and the diamond's radius collide with each other, it adds a pixel to the diamond's movement with respect to the diamond's direction. To stop the enemies from moving the diamond we implemented a method of clicking onto the enemies that will kill the enemies and remove them from the map. The construction of the game map was accomplished by using two concepts, spritesheet and tilemap. A tilemap is a method of drawing the maps by using multiples of m x n pixel drawings (spritesheet). A spritesheet is an image that consists of several smaller images, that can be utilized to create a bigger picture. We made these choices because we wanted to have the flexibility of being able to change the course of the map.
Week 3:
By the end of this week, we were able to successfully get the tilemap and spritesheet to work. The spritesheet was also used to create the visuals for the enemies and diamond. After getting the spritesheet sorted out, we set up a feedback display showing the numbers of enemies killed, numbers of miss hits, and current wave. In addition to this week's progress, we created a case where if the diamond reached the end of the map, the game is officially over, pausing motions and freezing the counters.
Week 4:
For the final week, we made several final touches to the game. One of the minor improvements we made was texturing the tilemap to increase the aesthetic. One major bug, among several minor ones, was concurrent modifications, by having enable and disable factors. To increase the difficulty, we adjusted the spawn rate and speed of the enemies as more enemies were killed. Lastly, we displayed a leaderboard in the game over screen. This was accomplished by creating and using a Firebase's database, that adds new scores to the database, retrieves the values from database, and display the top 10 scores.