Games Development Task 3

Melvin Yung Khun Yew | 0357241 | Bachelor of Design (Hons) in Creative Media

DST 61104 | Games Development
Week 8 — Week 11


Task 3: Game Prototype

After preparing all the assets required, my team and I first began our game prototype by focusing on one of our game levels, The Park. This is where we start dividing the task between us, tackling on the player's movement and controls, the obstacles' interaction, and the enemy behaviour, as well as the level mechanics and camera movements.




These are the jump links to each part of this portfolio



Instructions

Dr Mia Bong Mei Fern, my lecturer for the Game Development module for this April 2025 semester, gives us a heads-up on the upcoming tasks and exercises.


MIB - Module Information Booklet

To guide us step-by-step into the Unity app, Dr Mia also lectures and guides us every week on the features in Unity with practical knowledge during class.



    Work Process

    In this task 3, I'm working together with my other teammate, Lin Si Yan, to initiate the game development, starting from the prototype to test out our intended gameplay mechanics.

    In my blog, I'm going to share my contributions to this design project proposal that I've remembered.

    For comprehensive details about work results, please refer to the submission section.

    Task Dividing

    To begin this task 3, I first immediately start a discussion and split the job between my other teammates to decide the workflow.

    Coding Enemy - The Giant Pigeon

    Even thought the attack patterns of our giant pigeon seems simple: pooping and dashing towards player that will hurt or even wear out player's luck, there are quite a lot of work put behind to make my intended enemy attacks, movements and animation status work more fluently and flawlessly, at least it seems. 

    Starting with the pigeon's animation manager using the animator, I linked the required animations, including the inactive state (before the pigeon starts attacking when the player is in the vicinity), the transition to the active idle state (flying around), the hurt state, and the death state. To control the death animation as I want, I used the parameter, and with the C# script coding, I set the pigeon's death animation to work and react when the pigeon collides with the ground level, fading away until it's gone.

    Animator transition links

    Even with the help from AI (ChatGPT, etc.), the coding part is the most complex part that took up most of my time during the assignment period. Some due to the fact that the results don't fit what I'm planning, I've spent hours and hours looking for the bug and trying to fix all the scripts so that they will work almost as the effects I want.

    Anyways, here are the 3 scripts just for the pigeon:
    • Pigeon Boss Controller
      Usage: Controls movement, attack variation, speed, etc
      Public field for easier adjustment



    • Pigeon Intro Trigger
      Usage: Using a transparent trigger wall to initiate the pigeon's movement, to avoid attacking players before they reach the final area of the level

      A highly transparent box as an action trigger


    • Projectile Poop
      Usage: Controls every movement of the poop projectile attack, including the reflected one by players to pigeon to deal damage

    During the bug fixing, I got to know that the gameObject tag is very important in helping the script directly recognize what object the pigeon should target (in this case, the player). I also noticed to remove the player tag from any other objects (enemy and other stuff) as it will conflict with the script and mess up the movement.

    I had also mentioned this issue and the fixes to my teammates, as we combined our  Unity prototype file into one single playable game.

    Importance of the tag on the gameObject

    Coding Obstacles

    In level 2: The Park, there are many obstacles throughout the way to increase the challenge for players to avoid.

    Obstacles such as:
    • Manhole
    • Dog poop
    • Skateboard
    • Warning roadblock
    Manhole Mechanics
    For the manhole, I have the idea that I want it to be random, in the sense that the generation will be different every time the player plays again. Thus, I set up two variations of the manhole, one with a cover and the other without. From here, I prepared a script that will control the probability of either the manhole being closed or open by default (the open manhole will damage players)


    Even if the manhole is closed, I've coded it so that when the player walk past on top of it, the manhole will start shaking (visual cues) and the cover will disappear, leaving the manhole dangerous and making the area hazardous, challenging the player to reconsider their every controls and footing otherwise risk losing the luck.

    Dog poop mechanics
    For the dog poop, it is a much more simpler obstacles: if the player step on it, the luck decreases (aka hurt player). The dog poop will disappear on touch, though. So, it's to balance out the challenging factor, but I think it's normal for the poop to keep stucking on the player's shoes. :>

    The old but gold unfortunate events, stepping on poop

    Skateboard

    For the skateboard, I thought of letting the skateboard roll on the ground towards the players and hurting them, but I want it to be only triggered when the players walk for a certain distance to the area. Eventually, I also applied the same concepts: using a transparent box to trigger the movement. But here, I tried using the gizmo as a detection range, so it will start moving when the player is within range. 

    Scripts that define the detection range and the skateboard's speed

    Warning roadblock
    There is nothing much to say about these obstacles, it's just a regular obstacle that requires the players the jump and maneuver around it. With just a collider box in the component, this is the simplest obstacle to complete.


    Setting the script template for player health

    To link up the attacks and player hurt, and the die mechanism, I've included a script and a series of codes in each obstacle that will hurt the players, in which I applied it to the player and linked the health to the interaction with obstacles and the pigeon.



    Setting the script template for player attack control

    As planned before with my teammates, there will be a control for players to reflect the projectile attack by the giant pigeon to deal damage, and the only way to defeat it. For an easier link up with my teammate, Yu Tian, who's working on the player's aspect, I've came up with a controller script to enable the player to press the correct defend key on the keyboard (Default "K" key), if the players is right under the poop projectile by the pigeon and they timed it right, the poop will be reflected to the pigeon.

    Projectile reflect controller

    What things do I believe haven't been done?

    Yes, the proper linking to the UI and our game's "luck" mechanic! This is the major thing we need to tackle in task 4. The audio effect for each interaction as well as the background music, too! Overall, there are many things that have yet to be completed.

    Interesting mechanic to consider:
    • Speedruns (Timers at the end of the level)
    • Total death count throughout gameplay
    • Statistical stuff



    Submission

    Presentation Slide: Canva







    My reflections

    It is hard to believe that I have created playable game assets, although it's only a section in our complete game. However, I still appreciate that there are my teammates who took their time to complete and are proactive in finishing up the game prototype. This has pushed me to wanting to contribute better later into our final task.




    Comments

    Popular posts from this blog

    Information Design | Exercises

    Information Design | Project 1

    Application Design II Task 1