Documentation
Documentation
The final implimention of Don't Die! compared to the initial concept and vision is almost a 1 to 1. I am very satisfied with how the game turned out and that I was able to bring the concept to life. The core mechanics of the game, the ricochet and maximum bounce features are exactly what I imagined them to be and I think the difficulty scaling is very close to the initial vision as well. The only differences are the lack of colours in the levels, some of the concept art was much more colourful than levels in Don't Die! I chose to limit the colours to the laser sight and menu screens as this made the laser a much more prominant feature of the game, especially due to the customization.
Feedback
As I mentioned in the previous devlog, I missed the group testing session but was able to get a fellow student to test the game and give me generalised feedback. I have implimented all of the their suggestions except for 1.
The first suggestion was that the bullet moves too fast making it difficult to understand what happened after the bullet was fired, I fixed this by simply slowing the bullet speed down from 80f to 50f. This made things much easier to understand, without being so slow that the levels are boring and take too long to reach 40 bounces.
The second suggestion was to add moving or rotating objects to the game as they would make for more unique and interesting gameplay. I agree with this suggestion but unfortunately did not have the time to implement it.
The third suggestion was that the levels with wall tiles on 45 degree angles dont meet up properly leaving small gaps, I provided an image of this in the previous devlog. This issue was due to me not making enough tiles in the tilesheet, I had noticed it but hadnt been motivated to fix it untill I recieved this feedback. In order to fix this I made a new set of tiles that would fill in these gaps and implemented them into all the affected levels, as you can see it looks much better:
The fourth suggestion was a simple UI adjustment of lowering the heading on the menu to make things look a little cleaner I implimented this straight away as it was a very simple fix:
The fifth suggestion was that it would be nice to have the option of changing the colour of the laser. This was a very good suggestion and has ended up one of my favorite features of the game, I implemented this by adding a dropdown menu in the settings page which allows you to pick from a number of colours:
The sixth suggestion was another UI change, this time on the success screen, the suggestion was to change the order of the buttons so that the next level button was on the right hand side. This suggestion is another simple but good one as level based games typically do have this button on the right side. It was easy to fix this and I just changed the order to be: Retry - Menu - Next Level:
The final suggestion was to make the level select page lock all unbeaten levels, this is another good suggestion as it adds a progression system to the game ensuring that players play the levels in the intended order, I implemented this in a script that tracks the highest beaten level, unlocking that level and all levels below it. As you can see here only level 1 is unlocked:
Asset List
Scripts:
All of the scripts implemented into Don't Die! are custom scripts or modified tutorial scripts:
AudioSettingsManager.cs - This script is used to set the volume initially when the game is started for the first time.
Bullet.cs - This script is applied to the bullet prefab and controls the logic for the maximum bounces feature along with the bounce counter and the audio for enemy death and player death.
DeathScreenUI.cs - This script controls the logic for the death, fail and success screens in terms of controlling the buttons that are available on these screens.
DetachFromParent.cs - This script is from the early tutorials and controls the pivot for the gun.
EndGameListener.cs - This is a heavily modified tutorial script that controls the different logic for the game ending - death, success or fail. It constantly checks if any of the conditions for these endings are met and changes to the appropriate scene if they are.
ExplosionOnDestroy.cs - This is another tutorial script that generates the explosion when an object is destroyed.
GlobalVolume.cs - This script ensures that the volume is consistent globally - across all scenes.
GunControl.cs - This is a modified version of the ShieldControl.cs script we used in tutorials and controls the logic behind the gun aiming towards the mouse.
LaserColourSettings.cs - This script controls saving the selected laser colour to PlayerPrefs ensuring that is persists across all levels.
LevelSelectManager.cs - This script is in charge of the logic behind the unlocking of levels as the player beats them.
LevelStart.cs - This script runs every time a level is started and sets the last level variable in the level tracker.
LevelTracker.cs - The level tracker script controls the logic behind the level system, where the player is at in the levels and loading previous or next levels.
MusicManager.cs - This script controls which songs are played in which scenes, the menu song must play on all menu screens and the level song must play across all levels.
PauseMenu.cs - This script controls the logic in the pause menu, primarily the functions of the 4 buttons that can be pressed.
PlayerShooting.cs This script does the bulk of the work, it links the gun, the bullet prefab, the laser and the gun audio together as well as drawing the laser line and housing its colour options. It also controls the logic behind firing the gun towards the mouse position.
SceneSwitcher.cs - This is another tutorial script that is used to load new scenes when buttons are pressed.
VolumeSettings.cs - This script controls the logic of the volume slider in the settings menu, it sets the volume to whatever the player puts it to on the slider.
Game Objects/Prefabs & Materials:
Bullet - The bullet prefab which is created when the player shoots, it is a simple circle game object that contains the Bullet.cs scripts along with the Rigidbody 2D (with the BulletBounce physics material), Circle Collider 2D and audio source components.
BulletBounce - This is a 2D physics material that I used to create the bouncing bullet mechanic.
Enemy - The enemy prefab is the enemy game object, it contains the ExplosionOnDestroy.cs script along with Box Collider 2D and Audio Source components.
ExplosionParticles - This prefab is a custom particle system that is used by the ExplosionOnDestroy.cs script when either the player or an enemy is destroyed.
GameManager - The GameManager prefab is present in all levels and is an empty game object that houses the EndGameListener.cs script as well as the LevelStart.cs script.
LaserMaterial - The LaserMaterial is a simple unlit colour material that is used by the Line Renderer component in the player prefab for the laser.
LevelTracker - This prefab is an empty game object that houses the level tracker script keeping track of the levels in the game.
MusicManager - The MusicManager is another empty game object that has the MusicManager.cs and GlobalVolume.cs scripts along with and Audio Source component.
PauseManager - This prefab is an empty game object that houses the PauseMenu.cs script, controlling the logic of the pause menu.
PauseMenuCanvas - This prefab is the actual graphic for the pause menu, containing a panel that houses all of the pause menu buttons which is activated by the player pressing the escape key.
Player - The Player prefab is the player game object, it is a circle sprite and has a circle collider along with the PlayerShooting.cs and ExplosionOnDestroy.cs scripts, it also has a Line Renderer component for the laser and an Audio Source component.
Sprites:
All of the sprites used in Don't Die! are entirely custom made using the free online photo editor: https://www.photopea.com/. I apologise for the poor naming conventions as it took me a LOT of trial and error to get the sprites to be correct.
BG - This sprite is a simple black rectangle that is used in the background of the different menus.
tiles (3) - This was the initial tileset that I created for the tilemap in the levels:
Unfortunatly this was not nearly enough tiles...
BG set 2 - This set of tiles was made after I realised that I had not covered all the bases that were needed to design the levels that I wanted to make:
new tiles (3) - This tileset was the final set I made and was in response to the feedback that I got about the angled walls not meeting in the corners properly:
Enemy sprite - This is a simple square with a cross in it that I made for the enemy:Audio:
Menu Song [1] - The song that plays in the different menus.
Level Song [2] - The song that plays across all the levels.
Gun Fire Sound [3] - The sound the gun makes when it fires.
Enemy Death Sound [4] - The sound the enemy makes when it is shot.
Player Death Sound [5] - The sound the player makes when they are shot.
Font:
Pixel Font - Tripfive [6] - The font that I used for all the text in the game.
References:
1. https://assetstore.unity.com/packages/audio/music/free-casual-music-pack-242591
2. https://assetstore.unity.com/packages/audio/music/free-casual-music-pack-242591
3. https://assetstore.unity.com/packages/audio/sound-fx/weapons/free-laser-weapons-...
4. https://assetstore.unity.com/packages/audio/sound-fx/bombs-and-explosions-220174
5.https://assetstore.unity.com/packages/audio/sound-fx/bombs-and-explosions-220174
6. https://assetstore.unity.com/packages/2d/fonts/pixel-font-tripfive-64734
Don't Die!
Status | Released |
Author | accountsbroke |
More posts
- Assignment 2 Progress Devlog #210 days ago
- Assignment 2 Progress Devlog11 days ago
- Assignment 2 — Game Concept Devlog53 days ago
Leave a comment
Log in with itch.io to leave a comment.