Not A Drill
Not A Drill
2D Action
My contribution to Not A Drill
Day 1 - Monday
After setting our plans for the day, we all headed home and started working on our respective tasks. Unfortunately, we ran into some issues with Unity Collab. The user was listed as a Guest, which prevented them from accessing or opening the project. Despite having the Manager role, they were still unable to access it. After troubleshooting and searching for solutions online, we couldn't find a resolution. We decided to focus on our individual tasks and plan to merge them later either through Unity Collab or through packages.
My objective was to develop a proof of concept that evaluates the game's entertainment value based on its primary mechanics, rather than its art and sound components. However, I faced some challenges in establishing a foundation for the spawn system. Therefore, I opted to create the game visually. Initially, I searched for the game console to frame the actual game, which we planned to incorporate later. This would enhance the user's immersive experience. Instead of creating my own assets from scratch, I traced them from a YouTube screenshot to give the game a more professional look.
I incorporated UI elements into my game to assist with positioning during development. To guarantee precision, I superimposed a screenshot image of the game in Unity and made adjustments to sprite placement using opacity. Despite my inability to locate the game's original font, I extensively researched various platforms for a font that was similar to a calculator and ultimately settled on Digital 7 due to its close resemblance. When it came to the "miss" text, I utilized the original font provided by the TextMeshPro Component.
Finally, I created a simplistic main menu and game over system, since UI is my speciality this was very easy to do, I also added multiple audio sliders in a settings menu allowing users to easily adjust the music and sound effects individually.
Day 2 - Tuesday
To start coding the mechanics of the game I started off by creating a simple movement script as the player only needs to move in two directions, a lot of tweaks were made to the values to make sure the player was not too slow or fast, which would affect the experience of the game.
I successfully tackled the most challenging part of the game - the object spawning system. Despite the numerous issues that arose during the creation process, I was able to overcome them all. My first task was to instantiate an object at various locations, which I accomplished by creating a list and placing empty game objects on each level of the balconies. Next, I added forces to these objects by referencing their rigid body, enabling them to move around with ease. I also made sure that the objects could bounce on the firemen's net by adding a bouncy material to the player, launching them upwards effortlessly. Lastly, I set up a timer to decide how long it would take for an object to be instantiated. To control the score and lives, I placed two box colliders on empty game objects that had triggers.
After implementing the object spawning system, I proceeded to develop a 3 life/strike system. This system involved multiple scenarios that would activate or deactivate specific sprites based on the number of times an object hit an invisible 2D Box Collider trigger below the player's feet. The Game Over panel was set to appear once the last scenario was triggered, which I transformed into a panel instead of a separate scene.
Finally, I added the scoring system to the game, where a point is earned for placing an object in the ambulance trigger and a point is deducted for hitting the ground trigger. The score and high score will now be displayed at the end of the game. While I initially considered giving users the option to clear their high score, I ultimately decided to remove the button as it didn't fit with the overall design.
Day 3 - Wednesday
In order to enhance the object spawning system, I decided to introduce a delay between the spawning and the object being pushed. However, this caused some issues like the object not receiving a push or floating horizontally across the screen. To resolve this, I created a separate layer for the objects and made sure that they wouldn't collide. This fixed the issue of objects spawning inside each other and pushing them down. To add a delay, I used a coroutine that not only applied the force but also switched the object's Rigidbody to be affected by physics. This required changing the original Rigidbody to be kinematic so that it would remain stationary at its spawn point. Additionally, I wanted to spawn multiple objects, so I created a list to store the objects that I wanted to be spawned. However, this meant that other scripts had to check for the tag to apply different values to the score/strikes. Lastly, I made sure that the game always ended with a gameover. To achieve this, I decreased the time it took for objects to despawn as time went on, eventually making the game unplayable and forcing a gameover.
After finishing one task, I proceeded to connect all the menus. This would allow me to move from the Pause or Game Over Menu back to the Main Menu with ease. The process was straightforward as I only needed to assign scripts to the buttons' click method.
In order to enhance the game's quality, I incorporated assets created by the group's artists. Additionally, I replaced the real-life Game & Watch screenshot with the new game frame, which resulted in a consistent art style and a larger gameplay screen for better visibility. As a result, I had to modify the size of all elements to match the new frame.
Our team of sound designers provided us with SFX and music files. Implementing the music in the game was a straightforward process, so I promptly added it to both the main menu and the gameplay scene.
I utilized the logos designed by our artists for both our game and studio and developed a splash screen that displays every time the game exe is launched.
Day 4 - Thursday
I incorporated assets created by our talented artists into the menus, adhering to the established guidelines for the desired look. After receiving feedback for the pause menu, I added the requested text. During the conceptualization phase, various fonts were experimented with, and I particularly enjoyed the appearance of several. Ultimately, I chose Rounded Vale for its compatibility with the accompanying icons, lending a playful aesthetic.
To give the game a vintage feel, I incorporated some grain using Unity's PostProcessing. To avoid making it too overwhelming, I limited the effect. However, we eventually opted for a more realistic approach and designed a grainy overlay to use instead.
Afterwards, I created the panel for the main menu. Although it was initially planned to be on the game scene, I realized that having the pause menu and game over menu on the same scene could cause unnecessary complications. Therefore, I decided to take a screenshot of the game view and used it as the background for the main menu after all the art assets were placed in the game.
To enhance the background, we incorporated moving clouds. Our team of artists designed four unique cloud types, with the original plan of applying a parallax effect. However, as the camera remained stationary, I opted to create a spawner similar to the object spawner. Two points on opposite ends were designated for the cloud's spawn and movement. Additionally, we included customizable settings for the clouds' size, speed, and y-axis, ensuring they meet the game's requirements.
Afterwards, I created the panel for the main menu. Although it was initially planned to be on the game scene, I realized that having the pause menu and game over menu on the same scene could cause unnecessary complications. Therefore, I decided to take a screenshot of the game view and used it as the background for the main menu after all the art assets were placed in the game.
To enhance the background, we incorporated moving clouds. Our team of artists designed four unique cloud types, with the original plan of applying a parallax effect. However, as the camera remained stationary, I opted to create a spawner similar to the object spawner. Two points on opposite ends were designated for the cloud's spawn and movement. Additionally, we included customizable settings for the clouds' size, speed, and y-axis, ensuring they meet the game's requirements.
I tried using a sprite as the fire instead of squares by repurposing the play button sprite, but I ultimately didn't like the result and reverted back to the original design.
I added a short animation to the ambulance to make it more dynamic. Initially, the animation included the sirens turning on, which could have been useful for our siren sound effects. However, I later realized that it was too distracting. Consequently, I modified the animation to play only when an object was placed inside the ambulance.
I also finally added sprites to the objects so they were no longer squares and circles, which made it all come together nicely.
During the art asset implementation process, we had to work on the player animations. Since our player's movements were uncomplicated, creating the animations was relatively easy. We just had to ensure that the animation frames didn't transition too fast. However, we discovered that there was a problem with the player and the background blending together near the building. To solve this, we made slight adjustments to the background colours.
Day 5 - Friday
On Friday, when I reached the studio, I faced another issue with Unity. The PCs in the room couldn't download projects from the collab and showed empty files. I attempted to log in to another PC but faced the same problem. Finally, we went downstairs and luckily managed to download the project to fix some issues.
Yesterday afternoon during my playtesting of the game, I noticed an issue. Whenever I pressed the retry button on the pause or game over menu or went back to the main menu and pressed play, the game remained paused. I realized that I had forgotten to include the Resume function in the other voids in the script. I promptly added the function to all necessary areas to fix the issue.
Next, I simply switched the sprite around for the cat so it was no longer backflipping off of the roof, it just made more sense to me. I also made it so that objects landing on the ground would now freeze any other objects currently in the scene, this would allow the player to reposition themselves so that they wouldn't instantly miss another object again.
After some of my team members had seen the game in action (pretty much fully completed) they gave me some suggestions on how I could improve the game:
• Slowing down clouds
• Slowing down cat animation
• Fixing bush animation
I received some more improvements from my team to slow down the clouds and cat animation so that for the cat you could see the individual frames better and for the clouds so that they were more realistically and didn't distract the player.
There also was an issue with one frame of the bush animation that made it so it didn't loop smoothly, so I had to go into the animation of the bush and find out which frame was causing it and delete it. I also messed around with some of the sprites, increasing the size of the bushes and decreasing the sizes of the TV, so that they looked better in the game.
Finally, I then added all the SFX to the game which just required me to input one line of code in a multitude of scripts to play then, as I had set up an audio manager script to store all the sounds I was going to be using. With these last changes done I then recorded gameplay so that the video on the presentation was the most up to date, getting one of my team members to crop the video for me after changing the video files format so that it worked in their editor, then I uploaded the build as well as the project as a package and folder as a backup just in case something happened with Unity as well as being able to use the scripts and systems in the future.
My role in the presentation was to change the slides during the presentation, and then to play and talk through the game showcasing different elements of the game.
Afterwards, we were given some feedback to improve the game:
• Have the strike system work the other way around
• Add animation to the UI
• Add multiple difficulties
There were also some other additions that I wanted to add:
• Make the cat land on their feet when they hit the ground
• Make it so the items hitting the ground couldn't collide with the player
• Stop the TVs from freezing other objects
Over the weekend, I worked on making some changes to the game and I'm happy to say that they were all easy to implement. Now, the game is available for the public to play!