Game Development (Task 3 & Final)

Week 9 - Week 14  [18/6/2025 - 3/8/2025]
Kong Ga Wai 0359692
Bachelor in Design Creative Media  
DST61104 - Game Development


INSTRUCTIONS

TASK 3 & FINAL TASK -  Playable Game

I decide to combine both Task 3 and Final Task into one blog. We have to finalise and make the game playable.

Contributions:

Due to my groupmates either not being able to run Unity or not being able to run the up-to-date Unity, I was tasked to do the coding for the finalised game. My main contribution:

  • Character design and sprites
  • Finding sound effects and music for the game
  • Doing the game's layout (with the background and enemy assets from groupmates)
  • Mini story interactions
  • Game mechanics
  • Overall, most of the final touch ups

For the first few weeks, it was only me working on the game until I asked my groupmate for assistance on testing out the code for the game. Though it did help but due to the different version of Unity we are using, I had to alter some of the scripts or find a new one. 

Below are the features we have implemented in the game, along with how they are implemented:


GAME UI

  • Title Screen
  • Pause Menu
  • Player HP
  • Enemy Counter (Objectives)
  • Tutorial

For the Title Screen it was straightforward. I made a new scene for the player to start at, and will lead to the actual game. There are the buttons for Play, Credit, and Quit.

Game's Title Screen

Credit Screen

For the Pause Menu I decided to not put the UI pause button in the actual game for a cleaner look, but had set the Escape Key when pressed open the Pause Menu and pause the game.

Pause Menu

The layout for the Player HP and Objectives are forward, HP at the top left and objectives at the top right. The tutorials that teach the player on how to play are in the level itself so that the player can learn while exploring. 

In Game UI

Player HP - Goes down by one hp whenever hit by an enemy, and will immediately go to zero hp if the player falls into the void.

Objectives - The number of enemies will go up every time the player fully renders an enemy. 

The scripts for these two are provided by Tracy, while I did some adjustments to fix it so it work in my version of Unity. The HP script works fine but I had to find a different script for the enemy counter. 

PLAYER

For the project, I am using the 2D platformer template from Unity. The player already has the basic controls included, where I have to adjust, such as the jumping and walking. I added some new additional controls for the player:

  • Dashing - Player presses Right Shift to dash, which can assist them on platforming, where they can jump and dash across the platforms. 
  • Attack - Player presses F to attack the enemies. When enemy is hit it will  change their state.

While working on the Player's script, I separated them into multiple scripts due to the fear of the whole script suddenly stop working and I have to redo it all over again. 

 Attached scripts on player (1)

Attached scripts on player (2)

The one part I found difficult for the Player was their animator, where I have to connect the triggers while everything there looks like... a mess... 

Player's Animator

ENEMIES

Out of everything in the game, the enemies are the ones that took me the longest. Especially Enemy 1. The feature of them is that they have 3 states: Sketch State, Line State, and Colour State. They all start from the sketch state, when they are hit by the player, it will change to the line state, then the final hit changes them into colour state. In the colour state they are considered as "rendered".

Enemy 1 - All Around Helper

Enemy 1 is the one where I struggle most when writing its script. The mechanics of Enemy 1 are that when it detects the player, it still goes to its transform state and then charges towards the player, damaging the player.

The main struggle I had was making the transition between the states smoothly. I had tried 2 scripts. The first script has the enemy AI working, it detects the player and charges at them, but when hit it has to finish its attack phase and goes to its idle, only then it change. While the second script has the transitioning working, but the attack AI doesn't not.

In the end I settled on using the first script and added a colour tint on the enemy when it is hit as the indicator. 

Enemy 2 - Fire Bird

Unlike Enemy 1, I have little to no problem with Enemy 2. The mechanic of Enemy 2 is when it detects the player, it flies away from the player, and they have to chase it to render it. 

When working on the script for Enemy 2 everything works fine, didn't encounter many problems. It is probably because the enemy AI is simpler. The transition states are triggered and changed in the script for a smoother transition. 

GENERATORS (puzzle)

Our puzzle of the game is presented as fixing generators, it is a simple click and match. Player have to match the buttons in the panel to activate the collision on some platforms. If the player clicks one wrong button, the puzzle panel will reset, and they have to match it again.

There are multiple scripts for the generators. Each has to be placed in the right game object, such as the one that resets the puzzle located in the Puzzle panel UI, along with the script that sets which button will or will not trigger the reset. 




STORY SCENE & NPCs

In the game, there is a minor story. The original plan for presenting the story was by a visual novel style, but due to the limited time we had, I decided to have them be shown in simplified illustrations instead.

Introduction Story:

This is shown to the player at the start of the game, telling them the overall plot and objective of the player.

NPCs:

When the player gets close to them, a pop-up will appear, telling the player to interact by pressing the E key. It will then show the story dialogue, which is displayed when the player interacts with the following NPCs: Mao and Sildrate. Interacting with them will also show the objective panel at the top right.



Ending:

This is shown at the end when the player completes the final generator and finishes the game. Here they can either go back to the Title Screen, Replay, or Quit the game.


FINAL GAME:

https://drive.google.com/drive/folders/1T2bYFZqJ_OIYJPNpB6kbJNQnWrMiDmwU?usp=drive_link 

FINAL GAME PRESENTATION:

https://youtu.be/C2U0wIARng0 


REFLECTION

Overall, it was fun and painful, especially since this was my first time actually attempting to make a game with (what I personally think) interesting and hard to work with features (the enemies). 

It was stressful because I could spend a whole day attempting to fix a script, only for it to still not work, and waste my time when I could have been working on other parts of the game.