Games Development - Final Project
- 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 ⊹ ࣪ ˖₊˚⋆˙⟡
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.
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.
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.
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 Map, Enemy, and Foreground to keep the scene clean and easy to manage during development.
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 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 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.
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.
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.
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.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.
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
Post a Comment