Improvement (17/7) - Game Menu UI - Fix Final Boss
Final Task Progress
Image 1.0 - Final Boss Implementation
Image 1.1 - Final Boss Healthbar
After completing all the other previous scenes , I moved on to complete the last final scene which is where Dino will be competing with the final boss. Here , I have implemented the healthbar for the final boss. I created a separate healthbar system for the final boss as its full health is 100.
Image 1.2 - Side Colliders
I then proceed to make the side colliders for both top and side of the map for each map using the tilesets created initialy to prevent the player to fall off the map.
Image 1.3 - Rock Assets
I wanted to make the visual more appealing , thus I went on to add assets such as rocks into the map that was downloaded from free assets online.
Image 1.4 - Restart Canvas
Image 1.5 - Main Menu
Moving on , I implemented the restart UI into the game as soon as Dino dies. I created the restart management and system for the game. Player will be able to retry the level where they failed or choose to quit the game. The scene will be loaded where Dino will be spawned at the spawn point of the map or else it will lead the user to the main introduction scene of the game when user chooses to quit the game.
Image 1.6 - Menu Settings
I also developed the menu UI in which player can choose to continue the game , pause or exit the game. Player will just have to press "Esc" key to display the menu UI. From here , I created the "gameMenuManager" that consists of the logic to navigate the player based on what the player chooses to do.
Image 1.7 - Dialogue Assets
In the 'Desert' scene , I went on to implement a dialogue system where player will meet the NPC. Therefore , I have also employed the three dialogue assets as above to be used.
Image 1.8 - Dialogue System Implementation
As soon as Dino enters the scene , the NPC will approach the player and that it will guide the player on how to play the game. In developing the dialogue system , I had to create the dialogue manager , dialogue trigger and a dialogue scripts that will initiate the dialogue from the NPC.
Image 1.9 - Portal
I also implemented a portal together with a swirling animation that will act as the door where Dino will be transported into the different scene.
Image 2.0 - Orb Asset
Later , I found a free asset that can I thought can be implemented into the cave scene. Therefore , I proceed to download the asset and implement into the last cave scene that Dino will meet to open back the portal.
Image 2.1 - Reminder Panel
I continued to reassess the space scene as Dino will have to respawn each time it fails to get the gem before unloading to the next scene , because this is a run-gun concept where player will not be able to turn back and only move forward. Therefore , I created a reminder UI that will notify the player to collect the gem before reaching to the end.
Image 2.2 - SFX Manager
Image 2.3 - Audio Implementation
Near the end , I proceed to implement the game sound effects that includes walking , running , attack and more. The game sound effect will be based on each action of different maps. Following the tips provided by Mr Razif , I also followed the technique in creating a SFX Manager script that will contain all of the sound audio and assign the function to play into the action function.
Image 2.4 - Music Manager
I continued to implement the game music by creating a game music manager that will play the background music for each scene.
After receiving some advice and feedback from Mr Razif , I have taken his advice and tried to implement some extra visual cues into the game to enhance player experience. The list includes :
Collecting Gems : add sparkles
Tutorial Guide : show preview of the gems
Power-Up : add visual effects + sound when Dino collected all 3 of the meat
Meet the Ob : add glowing effect + show ending panel
Hit : add hit effect
Enemy die : add smoke effect
Show a gem panel when Dino collected the gem
Image 2.5 - Forest Background Redesign
I have also decided to redraw my forest map as the layers were quite messy. Therefore , this time , I redrew with a more arranged layering for a smoother background parallax effect. The result may not still look the best because I am not the best at drawing 😅
Image 2.6 - Portal Implementation
I switched the door by replacing it with a portal and managed it by allowing to only open when Dino has collected the gem in order to move to the next stage.
Image 2.7 - Sparkling Effect
Following the advice , I added sparkling effect when Dino were to collect the gem using a downloaded particle asset package. I implemented the animation first and proceed to develop the particle management system to load the sparkle when Dino has collected the gem.
Image 2.8 - Hit Effect
I then also added a hit effect on Dino when it gets attacked by the mob.
Image 2.9 - Smoke Effect On Enemy
Similarly, a smoke particle effect is also added onto the mob when it dies.
Image 3.0 - PowerUp Effect
Thirdly , I further added a power up effect on Dino when it has successfully collected all of the meat to unlock the second power. Therefore , all of the visual cues is to overall enhance the user experience.
In the end , all of the effects will look like this.
Image 3.1 - Live Animation
For the live collection , I decide to add animation as Dino collects the lives to addHealth.
Image 3.2 - Gem ShowCase Animation
Furthermore , I wanted to enhance the tutorial guide for the player. I wanted to show the 5 gems that they will be collecting throughout the game. Thus , I created a preview of the 5 gems with an animation for the tutorial.
Image 3.3 - Gem Frame
To add on , I implemented a gem indicator at the top that will allow the users to identify the gems to be collected on each map. Along the way , I have failed to find a way to display the gems when the next scene loads. Therefore , I have found an alternative instead to solve the problem.
Image 3.4 - Online Reference
I have found an inspiration that could be the alternative to the problem that I was facing. Therefore , instead of displaying all of the gems collected , I will be displaying an individual panel each time the gem is collected.
Image 3.5 - Individual Gem Frame
I also proceed to draw out the panel on my own on procreate and I arranged it on canva to see a preview.
Image 3.6 - Gem Frame Implementation
In the end , it will look like the above as listed under GemUICanvas. Thus , each time the player has collected the gem , this panel will pop up for 3 seconds verifying that the player has achieved collecting the gem.
Image 3.7 - Gem Frame Implementation In Space
I found that for the space theme , due to how it is a run-gun concept , I figured to move the panel onto the corner below so that it will not block the view as the user plays.
Image 3.8 - Victory Frame
Similarly , this is how I envision the victory panel would like using canva.
Image 3.9 - Victory Frame Implementation
As for the last scene , I also figured to add a victory panel as the player reaches till the end of the game.
Image 4.0 - Glowing Effect
Additionally , I added a glowing effect on the orb to add to overall enhance visual aspect.
As I found that I still had time and room for improvement , I decided to add in traps into the desert , forest and volcano map. I have went online and got my trap assets mainly from Trap Assets. I planned to implement two trap assets for each map as I wanted to be careful on the difficulty of the game. I also ensure the traps matches and aligns with the map theme. I had then created scripts for each of the trap as well as the animation control.
Image 4.1 - Sandworm Trap
Image 4.2 - Ceiling Trap
Image 4.3 - Trap Implementation In Desert Map
The sandworm and the ceiling traps are implemented into the desert scene.
Image 4.4 - Plant Trap
Image 4.5 - Bear Trap
Image 4.6 - Trap Implementation In Forest Map
The plant and bear traps are implemented into the forest map.
Image 4.7 - Arrow Trap
Image 4.8 - Fire Trap
Image 4.9 - Trap Implementation In Volcano Map
The fire and arrow traps are implemented into the volcano map.
As I continue to do play testing , I've come to realise that the tutorial lacks clarity and engagement, so I've decided to incorporate keyboard buttons to better guide users on how to play the game.
Image 5.0 - Mouse Asset
This is the mouse that I have drawn as I found it hard to get the source online so I decided to draw it myself.
Image 5.1 - Tutorial Mouse UI
Image 5.2 - Tutorial Keyboard UI
As a result , this is how how the tutorial and instructions will look like.
Image 5.3 - Skip Button
To enhance playability, I've decided to add a skip button for NPC dialogues. This feature will save players time and allow them to focus more on the gameplay, ensuring a smoother and more enjoyable experience. Additionally, it will give players the option to bypass repetitive or previously seen content, maintaining their engagement throughout the game.
Image 5.4 - Final Boss Fix
Moving on , I head back to the final boss scene to fix the bug and glitch that was facing earlier. One of the bug was that the laser projectile was not projecting downwards and that the movement of the final boss with the laser projection was not aligning. Thus , I have reviewed the code and fix the the logic behind the mechanism which resulted in a success.
Image 5.5 - Rain Particles
Image 5.6 - Snow Particles
Last but not least , I figure that I want to add some background effects onto the map. Hence , I applied particle system following this tutorial by DevDuck to add rain and snow effect as background effect to further enhance visuals.
Scripts
Default Player
PlayerController [Control to move and jump]
PlayerAttack [Player's LongRange and ShortRange Attack]
Projectile [Fireball Projection]
ShortRangeProjectile [FireBlash Projection]
*First Scene
OriPlayerController [Control to jump with forward movement]
CactusAttack [Deals Damage when player collides]
OriDoor [Opens portal + Direct player to new scene]
*Space
SpacePlayerController [Control up and down]
SpacePlayerAttack [Shoot Laser]
SpaceEnemyPatrol [Move towards player]
SpaceEnemyAttack [Bite player]
SpaceDoor [Opens portal + Direct player to new scene]
LaserProjectile [Laser Projection]
Enemy
EnemyAttack [Bite Player]
EnemyPatrol [Move back and forth]
EnemyHealth [Manages Enemy's Health]
Boss
FinalBossHealth [Managers final boss's health]
FinalBossAttack [Manager sequential attack]
FinalBossHealthBar [Display final boss health state]
LaserBeamProjectile [Laser Beam Projection]
Health
Health [Manages player's health ]
Healthbar [Display player health state]
HealthCollectible [Allow addHealth for player]
Meat
Meat [Manages the player's ability]
Meatbar [Display player ability state]
MeatCollectible [Allow player to unlock long range attack]
NPCController [ Allow NPC to move towards player + start dialogue]
MySceneManager [Manages loading scenes]
Game Scenes
Main Menu
Play Button
Image 6.0 - Main Menu
Dialogue/Tutorial
Dialogue
NPC
Image 6.1 - Dialogue Scene
Tutorial UI
Keys
Image 6.2 - Tutorial Scene
Settings Menu
Play Button
Exit Button
Pause Button
Image 6.3 - Menu UI
Restart Menu
Yes Button [Restart]
No Button [Return To Main Menu]
Image 6.4 - Restart UI
First Scene
Cactus
EndPortal
SpawnPoint
Image 6.5 - First Scene
Desert Scene
Desert Dino
Desert Mob
HealthCollectible
MeatCollectible
GemCollectible
Tilesets
SandWorm Traps
Ceiling Traps
EndPortal
SpawnPoint
Image 6.6 - Desert Scene
Volcano Scene
Volcano Dino
Volcano Mob
HealthCollectible
MeatCollectible
GemCollectible
Fire Traps
Arrow Traps
Tilesets
EndPortal
SpawnPoint
Image 6.7 - Volcano Scene
Forest Scene
Forest Dino
Forest Mob
HealthCollectible
MeatCollectible
GemCollectible
Bear Traps
Plant Traps
Tilesets
EndPortal
SpawnPoint
Image 6.8 - Forest Scene
Space Scene
Space Dino
Space Mob
GemCollectible
EndPortal
SpawnPoint
Image 6.9 - Space Scene
Snow Scene [Final Boss]
Snow Dino
Final Boss
GemCollectible
EndPortal
SpawnPoint
Image 7.0 - Snow Scene (Final Boss)
Cave Scene
Cave Dino
EndPortal
Orb
FullGemFrame
Image 7.1 - Cave Scene (Ending Scene)
Ending Panel
Exit Button [Return to main menu]
Image 7.2 - Victory UI
Gem Collected Frame
Image 7.3 - Gem Frame
Game Audio
Most of the game audio are downloaded free from online sources such as Epidemic Sound and Pixabay. I have collected an entire folder of game audio and tried to implement to see which sound would best match the game. As for the game background music , I had to search for musics that were matching the scene and also the game scenario.
Main Character - Dino
Running
Fire Blast
Fireball
Hit
Death
Jump
Collecting Food
Collecting Lives
Collecting Gem
Main Menu
Upbeat Music
Start Of The Game
No BGM
Jumping
Hit
“Getting portalled” sound effect
Dialogue Scene
BGM starts
Bird Flying
NPC sound - clicking to dialogue
Desert Map
Running on sand
Fire Blast
Mob grunt sound / Biting
Fireball
Jumping
Collected Gem sound
Hit
Death
Eating
Forest Map
Running on grass
Raining
Mob grunt sound / Biting
Fireball
Fire Blast
Jumping
Collected Gem sound
Hit
Death
Eating
“Getting portalled” sound effect
Volcano Map
Running on gravel
Volcanic bubbling / lava flowing sound
Mob grunt sound / Biting
Fireball
Fire Blast
Jumping
Collected Gem sound
Hit
Death
Eating
“Getting portalled” sound effect
Space Map
Hollow space sound
Laser Shooting Gun Effect
Collected Gem sound
Hit
Death
“Getting portalled” sound effect
Snow Map
New BGM (more intense)
Running on Snow
Claw clicking sound
Slash
Mob grunt sound
Whoosh
Laser Beam
Fireball
Jumping
Collected Gem sound
Eating
Hit
Death
“Getting portalled” sound effect
Cave Map
Glowing Gem sound
Opening Portal
Getting portalled
Victory music
UI
Notification sound
Click Button sound
Button Selection sound
I proceed to update my game design document by adding another section under "Game Updates". I noted down the changes that I have made as well as the additional improvements made into the game. I have added on the game GUI , game mechanics , game assets that were improved on.
Updated Game Design Document :
Final Presentation :
*Update : The bug mentioned in the video has been fixed :)
After deploying the game , I realise some size resolution issue. Therefore , there are some minor changes between the presentation video and the full gameplay.
Reflection :
Reflecting on my game development journey, I have encountered numerous ups and downs along the way. I'm happy to share my thoughts and opinions on the end result and potential future improvements. Overall, I consider the final product to be a success as the game provides a good play experience, incorporating challenges without becoming overly difficult to the point of frustration. However , there are improvements and more engaging game mechanics that I would want to incorporate into the map.
One area where I see potential for growth is in the hand-drawn map visuals. As someone who is not a professional designer, I acknowledge that these may not be the most polished aspect of the game. However, I take pride in having been able to create an acceptable outcome despite my limitations. Additionally, I'm proud of the effort I put into learning how to draw pixel art using Procreate. This learning experience allowed me to explore new creative avenues and contribute to the game's visual development. Moreover , I was not only able to apply my skills and knowledge in coding the game mechanics but also improve my coding skills through the development process. This I must say was also a challenge for me as I have faced many bugs and errors in my code and logic especially when it came to the final boss's attacking mechanism.
One of the biggest downfall that I have faced was when I had came across a huge issue in Unity. I had trouble opening Unity on my local computer as it was taking too much RAM and space in which my laptop had insufficient space to run the game. I have watched numerous videos and read online blogs to help fix the issue. I also cleared almost everything from my laptop and bought a RM400 worth of hard-disk to store my other files and documents but to no avail the issue was not resolved. Therefore , I had almost lost hope and was in fear that I will not be able to complete the project. I had contacted Mr Razif for advice and he was kind enough to have lent me his computer which I am very much grateful and thankful for. With that , I would like to give my special thanks to Mr Razif for the support he gave.
From this experience , I have learned so much about game development and that includes game designing which focuses strongly on playability , visual engagement , player experience , game difficulty , game storyline and more. I have come to realise that these aspects all play an important role in making a game fun. In addition , I was not only able to learn to overcome challenges but also remain resilient in the face of obstacles. This journey has taught me the importance of persistence, seeking help when needed, and continuously improving my skills. One important lesson I learned is the need for better planning, especially regarding game assets. In the future, I plan to allocate more time to properly plan and organize the assets to be used in the game. This will ensure a more streamlined development process and higher-quality results.
Moving forward, I plan to also further refine my game by improving the visual elements, optimizing performance, and enhancing the overall gameplay experience. I am excited about the future possibilities and look forward to continuing my journey in game development.
Comments
Post a Comment