Games Development - Final Prototype (Task 4)
16/12/2024 - 12/1/2025 (Week 13 - Week 15)
Katelyn Tan Kye Ling (0354148)
Bachelor Of Design In Creative Media (Games Development)
Task 4 - Final Project
LECTURES
WEEK 13 - 17/12/2024
There wasn't any class today as sir said we could stay home to continue with our assignments at home and if we needed to meet him online we could do so. So I stayed home to complete my assignments.
HOLIDAY WEEK
Scheduled an online consultation with Mr. Razif on 24/12/2024. (Feedback below)
WEEK 14 - 1/1/2025
Continue to work on the game at home.
INSTRUCTIONS
PROGRESS
Week 13:
I started with completing the rest of my animations that I had left. The first one I continued with was Sally's mother's idle animation.
Fig 1.1 Sally's Mother Animation
After that I did the jumping with sword animation for Sally which was just one frame.
Fig 1.2 Sally's Jumping with Sword Animation
Lastly, I completed the death animation. The last part has a cut and goes straight to the skull because I plan to edit the skull with a rising up and fading in transition after Sally falls down in unity.
Fig 1.3 Sally's Death
Holiday Week:
Design Message Pop up + Scripting it in Unity
Fig 1.4 Message 1 - Attempt 1
After some thought, I felt like the message wasn't scary enough and sounded weird. So I changed the message's tone.
New Message: I have your father. You have until dawn to find him, or he becomes my feast. I doubt you'll make it in time... but by all means, try. Watching you fail will be delightful.
After that, I worked on the message pop up in the game. Making the message destroy when the player collides with it and triggering an image to appear and then disappear on mouse click. However, I noticed a few issues after coding this.
Issues:
1. Player has no guidance on how to close the image.
2. Once message has been destroyed, player cannot read the message again.
3. On mouse click to close the message would trigger the attack animation.
After going through all the issues, I made it that the message to collide with will not be destroy but instead it will play a sound effect. I also redesigned the message as shown in Fig 1.5's third picture which the enter sign. Therefore to close this image will be on enter button pressed instead of on mouse click. After making sure everything works well, I added some extra things like the floating animation for the message to lure the player to it and also fade in and out transition for the image appearing and disappearing.
Fig 1.5 Clue 1 - All Attempts
Fig 1.6 Final message 1 collection
2. Design dialogue with Sally's mother
Fig 1.7 Dialogue 1
3. Fixing A Small Issues:
Issue: Cannot fall through bridge
After knowing that the reason the player cannot fall through the bridge is because of the collider I chose to make the gap of the bridge wider instead as I cannot change the player's collider because when the player runs, the hand extends very far out.
Fig 1.8 Player can fall through the bridge
Now that this has been solved, I tested and made the player respawn at spawn point when she falls into the water.
Week 14:
1. Adding animation for sinking through water before respawning
After making sure that when the player touches the water it will respawn during week 13, I decided to start week 14 by making the player sink through the water first before respawning. Then after that, I also made an Object Reset script so that the objects will return to its original position when the player respawns.
Fig 1.9 Sinking animation + Objects resets when player respawns
2. Die Animation in Unity
Next, I worked on Sally's dying animation in Unity. It took me a while to figure out how to work with the keyframes of the positions and the opacity. But after playing around doing trial and error, I did it. I wasn't very satisfied, but it was something I guess.
Fig. 1.10 Sally's Die Animation in Unity
After that, my player suddenly couldn't move left and right at all and was stuck in one place. I tried to figure out the issue, I thought it was my script but it wasn't. I asked Mr. Razif and he said that if my animation has "position" I have to delete it or the player will be stuck there. So due to time constraint, I did the animation with just the opacity.
Fig. 1.11 NEW Sally's Die Animation in Unity
3. Sally & Serephina's (Sally's Mother) Dialogue Pop up
After completing the design of the dialogue in week 13, I continued to do the dialogue pop up this week. I also added "Click 'E' to continue" in the dialogue's design so players would know how to continue reading the dialogue. I made the sword appear during the 3rd image of the dialogue where Serephina talks about giving Sally the sword. I also made the sword appear only when interacting with Serephina for the first time (as that is when the player collects the sword), if the player interacts the second time or more, the sword will not pop up again. After I made sure those worked, I added the fade in transition when the sword appears, sound effects when the sword appears and when the sword is collected, and also and ambience audio when Sally is near her mother.
After that, I noticed that there wasn't any guidance for users to know what to click to interact with an NPC, so I the sign beside the NPC with a floating animation.
Fig. 1.13 Interact Message
4. Enemy & Player fight
I made the enemy pace left and right and attacking when player is gets near. It took me a few tries to get this right. There were a few glitches here and there, but after editing the exit time in the enemy's animator, it was slightly better. I wasn't a 100% satisfied but it was the best I could do. I also added an attack sound effect when the enemy attacks.
Fig. 1.14 Player and enemy fight
5. Playing Sally's death animation
Initially I wasn't going to put this in my blog as it was just simple coding to play an animation. However, I noticed that my player became really small when the death animation played. I didn't know what was the cause so I asked Mr. Razif. He asked me to check the sprite's size. I felt weird because I remember using the same base for all of my character sprites. I tried to find ways to change the sprite size directly in unity but I wasn't able to. After comparing this death animation's sprite with another sprite, I noticed the sizing difference and changed it immediately. I learnt here that I should really check more carefully or situations like this could happen and would cause me to waste time and redo my work.
Fig. 1.15 Wrong Sprite Size
6. Loosing Pop Up
Next, I made the loosing pop up screen when the player died. It also had a try again button where the player respawns when the button is clicked. This part was surprisingly really hard to do, the loosing page kept glitching and wouldn't close. Another thing that really frustrated me was that I couldn't get the sword to reappear again to collect the sword when interacting with the NPC after respawning. I only could reset the obstacles and my health.
Fig. 1.16 Loosing Pop Up Screen
Week 15:
1. Switch main character's sprite when sword is collected.
This week I started off with switching the player's sprites when it collides with the sword. This was surprisingly easy to do. I just had to create a new layer in the animator with the sprites that has the sword. And then I added a code in my player controller script for when the player collides with sword, the base layer of the disables and then enables the new animator layer.
Fig 1.17 New Layer in Animator
Fig 1.18 Player Equip Sword
2. Design Clue 1: Sally's dad's card information.
Next I made a clue so the player can collect and get a hint of which dad to choose at the end of the game. I made an ID card stating the name, gender, height and date of birth. The main thing here to notice is the ID picture where the dad's hair is brown and where the ID card is ripped, there is a slight green shirt showing hinting that the dad has that shirt. Another thing to notice is the height of the dad, he is extremely tall making him stand out from the rest.
Fig 1.19 Clue 1 - ID Card
After that, I made the pop up for this as well when the player collides with the floating clue. At first when I duplicated the first floating clue, the second floating clue disappeared when I started the game. I asked Mr. Razif what the issue was and he noticed that the second floating clue moved positions. He asked me to apply root motion if there was any animation and that did the trick!
Fig 1.20 Clue 1 - Pop Up
3. Dialogue Pop ip (NPC - Roger)
Next, I added another dialogue with a new NPC. This NPC gives a small hint about the bracelet Sally's dad wears.
Fig 1.21 NPC Dialogue 2
Fig 1.21 NPC Dialogue 2 In Unity
4. Player damage Animation+ Knock back
I added the player's visual feedback when it gets hit and also the knock back effect from our in class exercise.
Fig 1.22 Player damage Animation+ Knock back
5. New Scene + Change Scene + Dialogue when enter house
First I did the new scene for when the player enters the house. It was a bit tricky because my background was quite different and my flooring wasn't in tiles. So I had to slice the floor into tiles myself.
After that, I added a collider to the house in scene 1 so that when the player enters that collider, the scene will change. It was really really really tricky to make the player transition scenes. I wasn't sure if I was supposed to add the player to the second scene or not and also how to keep the animator layer the same when the scene changes. There were also a few other issues where the sound was playing but the player wasn't visible. However after a few tries and also asking Chatgpt to help edit my code, I eventually did it. I decided to allow the health to reach full bar again when the player reached the house as I was scared that the player would die too quickly if the player reached the house with very little health.
And then after that, I added the dialogue where the final enemy is talking but he cannot be seen that's why the dialogue has a "?".
Fig 1.23 Dialogue when enter house
Fig 1.24 New Scene - Level 2
6. Pick dad + Dialogue
First, I made a new canvas for the 3 dads and made them as buttons. Since they had animation, I also added a sprite renderer as well as animator to them. Then this was how I wanted the game to go like:
Picks RIGHT one: (when click on the correct dad, the other 2 disappear + Dialogue pop up)
Dad: I knew I could count on you Sally! Now let's get out of here!
OR
Picks WRONG one: (when click on the wrong dad all 3 of them disappear + Dialogue pop up)
?: HAHAHA! Of course you got it wrong!
Fig 1.25 After Pick Dad Dialogue
I first made the animations for each dad. And then I made a script to make the plan I had written above. However, it didn't work. So for 4 hours straight, I tried to make the button work. I thought that maybe it was because I had the animations for buttons? Or maybe I did something wrong with the script? Or maybe because I had onclick for attack function? I tried different ways to make the button work. Like having a new layer so that the onclick would work in that area/layer for the buttons. I tried to disable the attack function when entering scene 2 and enabling it after picking the dad.
Changing from on mouse click to press key 1,2, or 3 to select dad:
However... none of that worked. I was about to give up until I thought that maybe it really was because the onclick was assigned to the attack function. So I made the player choose the dad with number keys from 1-3 instead. AND IT WORKED! I was so happy.
Fig 1.26 Pick Dad - Wrong
Fig 1.26 Pick Dad - Correct
After making sure all of the key buttons worked, I decided to go with this instead of onclick and made a instruction note so players will know how to pick the dad. I also made numberings to put on top of each dad's head to clearer number which number belongs to which dad.
Fig 1.27 Instructions to pick dad
I made this instructions appear when the player hits an invisible collider, and once the player presses key 1,2, or 3, this instruction dissappears along with the numbering on top of each dad's head.
Fig 1.28 Appearance and disappearance of images
7. Dialogue after picking dad + appearance of final enemy
After that, I added the continuation which is the dialogue of the final enemy and the appearance of the final enemy.
Fig 1.29 Wrong Dad Picked
Fig 1.30 Correct Dad Picked
8. Final Enemy & Player Fight + Respawn
I was able to get the enemy to appear and to have the patrolling around script to work. However, the enemy doesn't seem to attack the player. There were so many issues during this stage all of a sudden that I tried fixing till 5 in the morning and woke up to fix it the whole entire day again for it not to work. So I asked Mr. Razif for some help and he asked me to send my issues video along with my ZIP file. Issues video: Click here.
9. Main menu + Key Controls + Storyline
Since I couldn't fix it, I worked on other things first. I made the main menu and storyline, and coded them to link to scene 1 (Forest scene).
Fig 1.31 Main Menu
Fig 1.32 Key Controls
Fig 1.33 Story Line
10. UI Toggle buttons
I already designed the sound on and off toggle during my prototyping stage, so I just scripted it into my game. I didn't have a pause pop up screen so I made one.
Fig 1.34 Main Menu & UI Toggle Buttons
11. Fixing My Issues
ISSUES:
1. Sword doesn't appear again when interact with NPC after player respawns. However when player respawns, on click the sword sound will be heard.
Solution by Mr Razif: https://www.youtube.com/watch?v=WW3h9j2pnYU
2. Fight with final enemy is very weird. The enemy doesn't attack the player and it's a bit hard to kill the enemy. (Not sure is it because cannot detect player since player is brought in from scene 1 and scene 2 has no player.)
Solution: Change the attack range of final enemy
12. Finalising the game
After trying to fix the other issues here and there, some of them really couldn't be fixed. I couldn't find the root cause of it and due to the time constraint, I had to upload my game and submit my work already. I then uploaded the game onto netlify with Mr. Razif's tutorial. Uploading tutorial: Here.
FINAL SUBMISSION
Google Drive Link Submission:
https://drive.google.com/drive/folders/1QR22qkS1IzjPkHbs24a1IeLLynVUVwlp?usp=sharing
Playable Game Link:
https://katelyns-finalproject-gamedev.netlify.app/
Video Presentation:
Final Game Dev Presentation by Katelyn Tan
Updated Art Asset Document:
https://docs.google.com/document/d/111v3kMaJ4RQxnt8eyxKvjbn6bSkTb_IB_0S-335I1Bw/edit?usp=sharing
FEEDBACK
HOLIDAY WEEK (24/12/2024):
I had a consultation with Mr. Razif and asked him to help me with a few issues I have.
- Player cannot fall through bridge due to the player's collider being very big. Either make the player's collider smaller, or make the gap of the bridge wider.
WEEK 15 (8/1/2025):
Mr. Razif fixed sword respawn issue 1: Click here.
REFLECTION
Experience
At the start of the assignment, I was pretty scared to start this project. I was scared that I couldn't accomplish the game I wanted to create. At the same time, I was excited as well to make my first very own game! Week 13 was steady and productive, but as time passed the initial excitement was replaced by frustration, it finally hit me how much work I have to complete. Simple features like message pop-ups turned into unexpectedly challenging tasks. When things broke, I felt lost and overwhelmed. Once one thing was fixed another issue would pop up.I truly think that this module was the hardest and the most challenging one amongst the rest, juggling 5 modules at once wasn't easy as the other assignments also required us to create something from scratch. There were moments when I genuinely wanted to give up during the last 1-2 weeks of the assignment, I stayed up till 3-5am everyday. But seeing even the smallest fixes work reignited my drive. Submitting the game felt like crossing a marathon's finish line—not perfect, but deeply rewarding.
Observation
Throughout the process, I noticed how my mood fluctuated based on progress. Small wins, like getting animations to flow smoothly or fixing the sinking animation, gave me a sense of pride and confidence. On the other hand, repeated failures—like the sword not reappearing after respawning—chipped away at my self-esteem. I also observed that I tend to dive into problems head-on, often forgetting to step back and analyze. This was especially true during the later stages when I spent hours trying the same fixes repeatedly instead of looking for alternative solutions or reaching out for help sooner.I observed that organisation is very important when working on a project like this. I would say that mine was slightly messy in terms of organising the script names in unity due to this being my first time. I observed that it is better to get familiarised with the platform first before really using it. However, I would like to give a bit of credits to Mr. Razif for helping me with some of my issues too.
Findings
Lastly, I really think that game developers are such hard workers. From planning, to doing the animations of the characters and designing all the UI elements then to making the whole app work with lots and lots of coding. I find myself so much more amazed at games now, even the simplest one because it truly takes lots of time and effort to be a game developer and my respect goes out for them.
Comments
Post a Comment