Finally, we have to complete our prototype to a
fully functional and playable game. The
required submission are:
Unity Project files and Folders
Video Capture and Presentation of the
gameplay walkthrough
Game WebGL Build
Blog post for your reflective studies
As I mentioned in my last blog post, the
remaining tasks are:
Background boundaries / Looping
Opening scrolls
Key in symbols password - will be drag and
drop method
Sprout Guardian spawning
Polishing - UI
Also I added some neglected tasks:
Hit and die animation
Eryndor and Gravelock health bar
Level 3 Gameplay
A. Background Boundaries
I have tried to add a boundary to the
background by using collider but it doesn't
work. Therefore I tried to achieve that by
restricting the camera.
Fig 1.1. Camera Boundary
The minX, maxX, minY, and maxY values set the
limits for how far the camera can move
horizontally and vertically. In the LateUpdate
method, the script calculates the camera's
position based on the player's position but
clamps it within the allowed range using
Mathf.Clamp. This prevents the camera from going
outside the set boundaries, keeping the player
and scene within view.
For this part, I planned to display the four
scrolls collected in the centre of the screen,
and player can click on which they want to
check.
Fig 2.1. Panel fading in after collect
four scrolls
Then, I want user to click on the four scrolls
and the opened scroll with riddle will pop out.
First I edited the opened scroll design to
ensure style consistency, as the characters are
using a 3D method.
Fig 2.2. Opened Scrolls - Before (above)
and After (below)
I fixed the sequence of the scrolls to the
following order: sun, moon, rose, and star. To
implement this, I first added a button component
to each scroll and then assigned the
corresponding scroll game objects along with
their respective target game
objects.
Fig 2.3. Scroll Button Settings
I also made adjustments to the Player
Controller script to enhance the gameplay
experience. The script now includes
functionality to detect when the player collects
all four scrolls and safely lands on the ground.
Once both conditions are met, the panel will
appear on the screen, providing visual feedback
to the player.
Fig 2.4. Checking player is on the ground
and collected four scrolls
Additionally I added an exit button to the
opened scroll.
I plan to use a drag-and-drop method for
players to input the passcode. To support this,
I designed a board where players must drag the
symbols into the correct sequence to unlock
it.
Fig 3.1. Board
I also added a "Next" button on the panel,
allowing the player to proceed to the passcode
board.
Fig 3.2. Next Button
In Unity, I positioned the symbols at the
bottom of the board, where players can easily
select them. I also assigned a target box for
each symbol. The password mechanic works by
allowing players to drag the symbols to the
corresponding boxes. If the symbol collides with
the correct target box, it will be placed in
that position. If the symbol is placed in the
wrong box, it will return to its original
position, providing a simple and interactive way
for players to solve the puzzle.
Fig 3.3. Dragging symbols to their target
boxes
Next, I designed instructional text and added a
button to proceed to the next level. I
implemented a game logic system to check if all
the target boxes are filled correctly. Once the
player successfully places all the symbols in
their correct boxes, the system triggers the
appearance of the instructional text and the
button, allowing the player to move on to the
next level.
In Level 1, the Sprout Guardian will spawn
similarly to the Power of Shadow. I imported the
Sprout Guardian asset from the Unity Asset Store
and created both a Sprout and Spawner Script to
control its behavior.
Fig 4.1. Slime Guardian Movement Script
Fig 4.2. Slime Spawner
Then I added a collider to the sword to detect
the enemy. Once it hits the slime, the slime
will dissapear, representing Eryndor has defeat
the Sprout Guardian.
Fig 4.3. Sword Collider
In the script, I control the sword collider by
enabling it only when the attack animation is
triggered. Once the animation ends, the collider
is disabled. This approach ensures that the
sword's collider is active only during the
attack animation, preventing the Sprout
Guardians from being detected by the sword while
the player is in other states, such as idle or
running. This helps avoid unintended collisions
and improves the accuracy of the combat
mechanics.
This section focuses on implementing the hit
and die animation alongside the health bar
system. I initially neglected this animation in
the prototype because the system hadn't been
implemented yet. In both Level 1 and Level 2, I
want Eryndor to play a hit animation whenever
she collides with an enemy, and the same should
apply to the enemy when it is attacked by
Eryndor. This will help enhance the combat
interaction and visual feedback for both the
player and the enemy.
I created the animation directly in Unity, as
it is much easier than importing a GIF while
achieving the same visual effect.
Fig 5.1. Hit Animation in Unity
Next, I assigned an "Enemy" tag to both the
Sprout Guardian and the Power of Shadow. This
tag allows the game to identify these objects as
enemies during gameplay. I also implemented
functionality where, upon collision between the
player and any of these tagged enemies, the hit
animation is triggered.
Fig 5.2. Hit Animation
Similar to the scroll bar panel, I added a
health panel at the top left of the screen.
The player has three hearts, and every time
the player takes three hit, one heart will
decrease. Once all three hearts are gone, the
player will die, and the player will fade out
to indicate the end of the game. This health
system helps provide feedback on the player's
performance and adds an element of challenge
to the gameplay.
I finalized the gameplay for Level 3 in this
section. To enhance the challenge, I reused
the Power of Shadow as an ongoing obstacle and
placed Gravelock at the end of the scene to
serve as the guardian and the final boss. This
setup creates a climactic end to the level,
emphasizing the player's progression and
culminating in a significant encounter.
Fig 6.1. Level 3 Scene Setting
There is an invisible box collider in front
of Gravelock. Once player collides with the
box collider, Gravelock will perform attack
animation.
Fig 6.2. Invisible Box Collider
Next, I added an HP bar above Gravelock, with
a total of 15 HP. Each hit from Eryndor deals
3 damage. With the addition of the HP bar, I
decided to remove the hit animation, as it
created repetitive visual feedback that I felt
was unnecessary for the gameplay
experience.
Finally I started the interface part, including
the instruction, start menu and end screen. In
this section, I will be working on the music and
sound effect too.
1. End Screen
I started with the end screen first because it
continued from Level 3. Once the player defeat
Gravelock successfully, it will proceed to the
end screen, which display the Crystal of
Balance.
Fig 7.1. End Screen
Outcome
Fig 7.2. End Screen Outcome
2. Start Menu
I created a start button using Adobe
Illustrator, ensuring it aligns with the overall
aesthetic of the game. Once the design was
finalized, I integrated the button into the home
scene within Unity. Positioned prominently, the
button serves as the primary gateway for players
to begin their journey. When clicked, it
seamlessly transitions the player to Level 1,
marking the start of their adventure in the
enchanting world of Eryndor.
Fig 7.3. Start Scene
Outcome
Fig 7.4. Start Menu Outcome
3. Instruction Board
I created a separate scene for the
instructional board of each level to ensure
easier scripting.
Throughout this project, I
encountered countless issues, errors,
and obstacles, but I’m truly grateful
that I was able to overcome them on my
own. This experience taught me so much
more than just game design; I’ve
developed problem-solving skills,
learned how to ask the right questions
to find information, and gained a
deeper understanding of gameplay
mechanics. While I acknowledge that
there’s still plenty of room for
improvement, I’m genuinely satisfied
with the amount of knowledge I’ve
gained and the hard work I’ve put into
this project.
I’ve observed that the hardest part
of this process wasn’t just about
drawing and designing—it was solving
all the intricate details that
brought the game to life. From
debugging scripts to fine-tuning
interactions, these challenges
required focus and persistence. Each
step pushed me beyond my comfort
zone and gave me a greater
appreciation for the complexity of
game development. Looking back, I
feel proud of the progress I’ve made
and excited about how I can continue
to improve in the future.
Comments
Post a Comment