Game Development - Final Project

Name : Ivy Chung Ai Shin

Student ID : 0358429

Course : Bsc Of Computer Science (Hons) 

(Week 9 - Week 15)

Weekly Plan : 

  • Improve G.D (25/7) 
    - Testing
  • Improve G.D (24/7)
     - Finalize Game Audio
     - Fix Bugs
  • Improve G.D (23/7)
    - Improve Visual Cues
    - Add in Game Audio
  • Improvement (22/7)
     - Game Audio
  • Improvement (21/7)
    - Redesign Forest
    - Cave
    - Menu/Settings
  • Improve Prototype (29/6)
    - Colliders around
    - Collectibles
    - Health system (Final Boss , Enemy)
    - Dino Sprite 
  • Improve Prototype (11/7)
    - Dialogue System
    - Added Rocks
    -Fix Bugs
    -Added GUI 
  • 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]
Gem 
  • Gem [Manages gem value]
  • GemCollectible [Allow to open portal]
UI
  • Ending [Display victory panel]
  • GameMenuManager [Display game menu]
  • ObManager [Display collected gems]
  • RestartManager [Display restart panel]
  • GemDisplayManager [Display gem-to-be-collected frames]
Effect
  • GemSparkle [Enable sparkle animation]
  • HitEffect  [Enable hit animation]
  • ParallaxEffect  [Allow background parallax effect]
  • PowerUpEffect [Enable powerup animation]
  • SmokeEffect  [Enable smoke animation]
Traps
  • ArrowTrap [Projects arrow + injure player]
  • BearTrap [Closes + injure player]
  • FireTrap [Projects fire + injure player]
  • CeilingTrap [Falls Downwards + injure player]
  • PlantTrap [Whip + injure player]
  • SandWormTrap [Projects upwards + injure player]

Dialogue/Tutorial
  • Dialogue [Set textarea and number of senteces]
  • DialogueManager [Manages StartDialogue , DisplayDialogue , EndDialogue , StartTutorial]
  • DialogueTrigger [Trigger StartDialogue]
  • TutorialManager [Manages tutorial sequence]
Audio 
  • SFXManager [Plays sound effects]
  • MusicManager [Plays background music]
Core 
  • CameraController [Follows player]
  • Door [Opens portal + direct player to next scene]
  • 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

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 :)

Full GamePlay  : 



Game Site :

  1. Netlify site - https://ivy-dinoadventure.netlify.app/
  2. Itch.io - https://icas03.itch.io/dinos-adventure
Note : 
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

Popular posts from this blog