Games Development - Final Project

⭐ 18/6/2024 - 23/7/2025 (Week 9 - Week 14)
🎀 Yan Zhi Xuan | 0369425 
💜 Games Development | Bachelor of Design (Hons) in Creative Media | Taylor's University 
📚 Final Project



TABLE OF CONTENTS  /ᐠ - ˕ •マ ⋆。°✩


Fig. 2.1 Module Information Booklet - Games Development.

Final Project & E-Portfolio (Week 09–14, 40%):
  • Final Game (30%): Combine all assets into a fully playable Unity game
  • E-Portfolio (10%): Reflect on teamwork and personal growth
  • Submit: Unity files, WebGL build, Gameplay video, Blog post



3. FINAL PROJECT ⊹ ࣪ ˖₊˚⋆˙⟡

Yan Zhi Xuan (me)

Sprite Sheet of Characters

Working on this project has been both challenging and rewarding. I dedicated a lot of time to developing the character designs and creating the full sprite sheet animations. From the initial sketches to the final rendered sprites, every character had to be carefully thought out — not just visually, but also how they would move, attack, and behave in-game. Each animation frame was manually drawn and aligned to make sure the movements looked smooth and consistent in Unity.

Fig. 3.9 Main Character - Subject #02.

This sheet features four core animations: Idle, Walk, Jump, and Attack. The character maintains a gentle, glowing aesthetic with soft pastel tones. The idle and walk cycles showcase subtle body movement, while the jump animation includes upward motion and floating effects. The attack sequence is more complex, transitioning from a casting pose to a projectile fireball effect—showcasing timing and magical energy buildup. Each frame is carefully constructed to reflect fluid motion and personality.


Fig. 3.10 Ghost.

This ghost character’s Idle, Walk, Attack, and Die actions are elegantly animated with a soft and eerie feel. The walk and attack animations subtly sway, matching its floating behavior. The dying sequence fades the ghost gradually, giving an ethereal vanishing effect that suits its spectral nature. The minimal yet expressive style enhances its haunting presence.


Fig. 3.11 Malfunctioning Machine.

This robot’s Idle, Walk, Attack, and Die animations reflect its artificial intelligence and corrupted nature. The attack frames highlight facial display shifts and static surges, while the death sequence shows the screen going dark and a reboot flicker. The motion is clean and mechanical, giving the robot a stiff yet threatening demeanor.


Fig. 3.12 Monster Born from Failed Experiment.

This character includes Idle, Walk, Attack, and Die animations. With a mischievous, hostile look, the idle and walk animations present twitchy, alert behavior. The attack frames show claw swipes with red slashes to emphasize danger. The death animation is dramatic—featuring expressive reactions, eye changes, and a crumpling collapse, capturing the essence of its villainous role.


Fig. 3.13 Final Boss - Dr. XX.

The final boss features Idle, Walk, Attack, and Die states with a heavy, mechanical presence. The design incorporates intricate details like moving robotic arms and a large trident. The attack animation includes a dramatic scythe swing, while the death sequence ends with a menacing drop. The animation style emphasizes weight and authority, fitting for a climactic boss character.


Research for Coding

Fig. 3.14 Unity 2D Platformer for Complete Beginners - #4 SHOOTING.

To support my teammates with the coding section, I actively searched for beginner-friendly Unity tutorials to understand character movement and shooting mechanics. One of the key resources I found was the YouTube series "Unity 2D Platformer for Complete Beginners," specifically Episode 4 which covers shooting functionality. I studied the video, then copied and organized essential scripts like PlayerMovement into our shared document. This helped streamline implementation for the programmers on our team. Although I wasn't the main coder, I played a supportive role in bridging technical knowledge by simplifying complex tutorials and helping source reliable code snippets that matched our game features.


In addition to movement coding, I also assisted in implementing the attack mechanism for our character. I found a Unity tutorial that explained how to create a shooting function using PlayerAttack scripts. I carefully followed the video and studied how the code managed cooldowns, animation triggers, and fireball instantiation. I documented this script and included it in our shared folder, making sure my teammates could easily copy and apply it to our Unity project. Although I wasn’t the main programmer, my role in collecting and organizing this essential code helped speed up the development process and ensured our gameplay mechanics worked smoothly.

I also assisted in understanding how the projectile system works, especially the fireball movement and explosion effect. I referred to another tutorial that demonstrated how to script the Projectile class in Unity. This script controls the fireball's speed, direction, and collision detection. I learned how to stop the projectile upon hitting an object and trigger an explosion animation by disabling the collider and calling anim.SetTrigger("explode"). I shared this code and explained how it works with my teammates to ensure the fireball animation and gameplay mechanics functioned correctly in our project.


Fig. 3.18 Animations and Animators in Unity.

In this project, I contributed to the animation system by organizing and implementing animation clips for multiple characters and game elements. I worked with Unity’s Animator Controller to set up transitions between different states—such as idle and attack—for the boss character, ensuring smooth and responsive combat animations. For the machine enemies, I added walk and hurt animations to reflect their behavior changes during gameplay. I also set up item animations like the access card breathing effect, which visually signals to players that it’s an interactive object. Using the override controller system, I ensured each character shared a common animation logic while still maintaining their unique visuals and movement patterns. Overall, these animations helped enhance player feedback, bring the world to life, and make interactions more immersive.


Final Stage of Game Development of Each Level (All of us)

Start Scene

Fig. 3.19 Start Scene Setup in Unity.

The Start Scene acts as the game’s main menu and first impression. We designed it with a themed background illustration, a clear title logo ("RE:SET"), and interactive UI buttons for starting the game. An AudioManager script controls background music transitions, assigning a unique BGM track for each level including the start screen. This ensures a smooth audio experience as the player progresses. The layout is clean, responsive, and introduces players to the game’s tone and visual style right from the beginning.


Level 1

Fig. 3.20 Level 1 Setup in Unity.

For further refinemnt in Level 1 of our Unity 2D platformer, we implemented the player character using a custom sprite and attached key components such as a Player Animator Controller and Player Attack script. The attack system is set up with bullet prefab references, a fire point for spawning projectiles, and a sound effect for feedback. For the environment, we layered multiple backgrounds and applied a Parallax script to create depth and movement when the camera scrolls. This enhances the immersion by giving the scene a dynamic, multi-layered feel as the player moves through the level. All objects are organized under logical parents like MapEnemy, and Foreground to keep the scene clean and easy to manage during development.


Level 2

Fig. 3.21 Level 2 Setup in Unity.

In Level 2, we expanded the challenge by introducing new enemies and interactive objects. The enemy is designed with a custom script that controls its behavior using Unity’s Rigidbody2D and BoxCollider2D components. We set parameters like Max Life, Damage, and Hit Time to define how tough the enemy is and how frequently it can attack. Movement is handled by assigning speed, direction, and patrol angle through Move Trs, Move Speed, and Top Angle, allowing the enemy to follow a predictable pattern. This setup makes the gameplay more dynamic while giving players a fair chance to dodge or fight back.


Level 3

Fig. 3.22 Level 3 Setup in Unity.

Level 3 introduces a more strategic gameplay experience. We used the Level Manager script to track the number of enemies the player must defeat—in this case, three. Once all enemies are eliminated, an Access Card object appears to let the player progress. The layout features spaced-out platforms and hazards, requiring players to time their jumps and attacks carefully. This setup encourages exploration and enemy engagement while rewarding progress through level interaction logic managed by the Level Manager.


Level 4

Fig. 3.23 Level 4 Setup in Unity.

Level 4 serves as the boss battle stage, where players face a powerful final enemy. The boss character is equipped with an Animator, Capsule Collider 2D, and Rigidbody2D for movement and physics. A custom Boss script manages combat logic, including health (Max Life = 10), attack intervals, bullet spawning (using a Fireball prefab), and shooting direction via an AttackTr transform. The boss fires multiple projectiles in a spread pattern, with Attack Count and Interval Angle controlling the spread mechanics. A slider-based HP bar provides real-time visual feedback on the boss’s health, adding intensity to the final challenge.


Level 4

Fig. 3.24 Scripts in Collection Folder.

To bring our game mechanics to life, we wrote several custom C# scripts in Unity. The ClueTrigger script allows players to interact with clues and start dialogues by pressing a key when near an object. This ties into the DialogueManager, which handles text display, character portraits, and typing effects while temporarily disabling player movement for a smoother storytelling experience.

We also used DialogueTrigger to activate events after dialogue ends—like enabling the boss attack in Level 4. This event-driven approach keeps the gameplay progression seamless and responsive.

Collectible items are managed through scripts like EnergyChips and HeartChip. Energy Chips refill a gauge and respawn after a short time, while Heart Chips restore player health only when it’s not full. These mechanics add strategy and reward exploration.


Fig. 3.25 Scripts in Level Folder.

The Level folder contains scripts that manage in-game environment interactions such as doors, teleport zones, and key item checks. The Door script controls access based on whether the player has an Access Card, displaying UI prompts and swapping sprites when unlocked. TeleportDoorTrigger allows players to move between locations, either by disabling a blocking collider or instantly repositioning the player. These scripts use trigger detection and key input (like pressing “K”) to enable smooth and interactive transitions between areas, helping create a more immersive and puzzle-like level progression.


Fig. 3.26 Scripts in Map Folder.

The Map folder contains environmental scripts that enhance the scene’s movement and visual experience. The gearRotation script applies continuous rotation to mechanical objects like gears, adding motion to the background. MovePlatform handles moving platforms by transitioning them between two points, useful for navigation and timed jumps. CircularMover rotates objects around a center point, creating circular movement patterns, while Parallax adds depth by making background layers shift slightly based on camera movement. These scripts work together to bring the environment to life and make gameplay feel more dynamic and immersive.


Fig. 3.27 Scripts in Player Folder.

The ShootBullet script controls how projectiles behave when fired by the player or enemies. It handles bullet direction, speed, lifetime, and maximum travel distance. When fired, the bullet moves forward and automatically destroys itself after a set time or when it exceeds its travel range. The script also flips the sprite based on direction and detects collisions using OnTriggerEnter2D, applying damage if the target is hittable. This ensures clean, responsive shooting mechanics and helps optimize performance by removing unused bullets.



⭐ Final Submission

Final Presentation Slide ·RE:SET·

Game Unity Project File: link (Google Drive)

Fig. 3.15 Full Walkthrought Video.

 My Contribution (Yan Zhi Xuan)





4. FEEDBACK ⊹ ࣪ ˖₊˚⋆˙⟡

Week 11-14

Ms. Mia liked our overall art style. She said the gameplay is fine.



5. REFLECTIONS    /ᐠ - ˕ •マ

The final stretch of the project was where everything truly came full circle. It was the moment we had been working towards from Week 1—where all the pieces we had carefully built throughout the semester finally came together. Seeing our art assets, game mechanics, and prototypes merge into a fully functional, playable game felt incredibly fulfilling. What once lived only in my head as a concept had now become something I could actually play, interact with, and share with others. It was a surreal and satisfying moment that gave me a deep sense of creative accomplishment.

However, this final stage wasn’t without its own challenges. Integrating everything—visuals, logic, levels, and audio—wasn’t always smooth. We ran into a few technical hurdles when trying to bring the components together cohesively. Sometimes, animations didn’t sync with gameplay, or UI elements looked off when transferred into Unity.  

I had learned to troubleshoot more effectively and stay focused on progress rather than perfection. Those moments of challenge turned into opportunities to refine not just the game, but my problem-solving mindset as well.

Aside from finalizing the game, I also focused on building my E-Portfolio, which included reflecting on my entire learning journey. Writing the blog post was a chance to pause and really think about what I had gained—not just in terms of technical skills, but in how I approached teamwork, time management, and creative collaboration. I thought about how I interacted with my peers, how I gave and received feedback, and how I learned to balance listening to others’ input while still staying true to my own creative direction. These experiences shaped me beyond just being a game designer—they helped me grow as a communicator and a collaborator.

Reflecting on the journey also helped me see just how much I’ve evolved as a designer. At the beginning, I was focused mostly on execution—making sure things looked good and worked well. But through the process, I learned that good design is also deeply connected to empathy, self-awareness, and critical thinking. It’s about understanding the player’s experience, anticipating challenges, and creating something that feels both intentional and enjoyable. I also became more confident in expressing my ideas and adapting when things didn’t go according to plan.

Comments

Popular posts from this blog

Design Principles - Task 3: Design

Design Principles - Final Compilation

Information Design - Project 1 & 2