GAMES DEVELOPMENT TASK 03: FINAL GAME

ALICIA TENG YI LING [0345159]


GAMES DEVELOPMENT: TASK[03 FINAL GAME]




To do:
  • Finalize game
Process

Reflecting on this project, I initially focused on completing the major components such as player movement, health, enemies, ground, and maps. It was crucial to establish the core mechanics to create a solid foundation for the game. However, I acknowledge that I could have devoted more time to refining the gameplay during the prototyping phase.

The prototyping stage posed significant challenges, and I faced moments of frustration and exhaustion. It became apparent that dedicating more effort to gameplay design earlier on could have mitigated some of these difficulties. In hindsight, creating and iterating on the gameplay mechanics during the prototyping phase would have allowed for better fine-tuning and overall improvement of the player experience.

Nonetheless, the process of fine-tuning and adding new features as I progressed was rewarding. It allowed me to tailor the game to my vision and incorporate elements that enriched the overall gameplay. I have learned the importance of striking a balance between completing essential components and investing time in refining gameplay during the early stages of development.

During the course of this project, I experienced the true essence of game development – the constant struggle of finding and fixing bugs. It was a rollercoaster ride of emotions as some issues seemed to vanish magically, while others grew into formidable challenges.

 Luckily, I have found the Bob Ross of coding and he has saved my life and I recommend watching his tutorials to anyone who wants to have a good understanding of the basic fundamentals of  how to create 2D platformer games in Unity. His good name is "Coding in Flow".


Fig 1.1 CastleLevel1 Hierarchy


Fig 1.2 CastleLevel2 Hierarchy


Fig 1.3 CastleLevel3 Hierarchy

Scripts
  • Player
    • PlayerAttack [Player's long-range attack - magic]
    • PlayerAttack1 [Player's short-range attack - sword]
    • PlayerMovement [Controls speed, jump,  extrajumps, walljumps, body gravity, isGrounded]
    • PlayerRespawn [Moves player to checkpoint + Restores player health and reset animation]
    • Projectile [Controls damage, direction & anim for manaball]
  • Boss
    • BossControl [Controls boss & all within]
    • SpawnManager [Instantiates bullet hell]
  • Core
    • CameraController [Follows player or sets up room camera //I use follow player]
    • DestroySelf [Destroys instantiated bullets for boss fight]
    • DoorTrigger [Only allows players through if they (hasKey)]
    • Finish [Invokes EndScene after slight delay after boss dies]
    • KeyCollect [Destroys gameObject if collision tag is "Player"]
    • LoadingManager [Restarts game levels]
    • SoundManager [Controls music & sound volumes]
  • Enemy
    • EnemyFireballHolder [Sets fireball holder]
    • EnemyPatrol [Makes enemy face directions & move towards it]
    • MeleeEnemy [Controls for MeleeEnemy]
    • RangeEnemy [Controls for RangeEnemy]
  • Health
    • Health [Manages all mobs health + adds invulnerability for player after injury]
    • Healthbar [Display player currentHealth]
    • HealthCollectible [AddHealth to player]
  • Levels
    • StickyPlatform [Allows player to stay & jump on moving platforms]
    • WaypointFollower [Sets waypoint locations for moving platforms]
  • Traps
    • Cannon [Controls cannon + EnemyProjectile]
    • Enemy_Sideways [Controls MeleeEnemy patrol behaviour]
    • EnemyDamage [Enables player to take damage from enemies]
    • EnemyProjectile [To differentiate from "projectiles" for player to take damage]
  • UI
    • MainStory [LoadScene trigger after IntroScene finishes playing]
    • MenuManager [PauseMenu - manages volume for sound & music + back to menu & quit buttons]
    • NextSceneButton [OnButtonClick loads next scene by its name]
    • QuitButton [Quits the game application]
    • SelectionArrow [Allows user to use arrow keys to change position of menu selection arrow]
    • UIManager [Controls UI menus like pause menu & death screen]
    • VolumeText [In charge of volume for UI menu]

Scenes

StartMenu
  • Play button
  • Quit button


Fig 2.1 StartMenu

IntroScene
  • Cutscene
  • Skip button


Fig 2.2 IntroScene

Tutorial
  • Introductory instructions
  • Traps
    • Spikes
    • Saws
    • Cannon + bulletes
  • Moving platforms
  • Checkpoint
  • Key
  • Heart Collectible
  • Enemy01
  • Enemy 02
  • Door
  • Endgoal Gateway


Fig 2.3 Tutorial

PauseMenu
  • Resume button
  • Back to menu button
  • Quit button
  • SoundManager
    • Sounds (0 - 100)
    • Music (0 - 100)
  • Bg image


Fig 2.4 PauseMenu

Death Screen / Retry Menu
  • Restart button
  • Back to menu button
  • Quit button
  • Bg image

Fig 2.5 Death Screen / Retry Menu

CastleLevel1
  • Traps
    • Spikes
    • Saws
    • Cannon + bulletes
  • Moving platforms
  • Checkpoint
  • Key
  • Heart Collectible
  • Door
  • Endgoal Gateway



Fig 2.6 CastleLevel1

CastleLevel2
  • Traps
    • Spikes
    • Saws
    • Cannon + bulletes
  • Moving platforms
  • Checkpoint
  • Key [hidden]
  • Heart Collectible
  • Enemy01
  • Enemy 02
  • Door
  • Endgoal Gateway


Fig 2.7 CastleLevel2

Note** During the development process, I made the decision to swap the order of the two castle levels in the game. The reason behind this change was to provide players with a smoother learning curve and a better introduction to the gameplay mechanics. 

Initially, the first castle level had a more complex map and featured enemies right from the start. However, upon careful consideration, I realized that it might be overwhelming for players who were new to the game. I wanted to create a gradual progression in difficulty and complexity to help players acclimate to the gameplay style. 

As a result, I decided to switch the first level to a more straightforward map with no enemies, allowing players to focus on getting familiar with the controls and basic interactions. This way, they could ease into the game and build their confidence before facing more challenging obstacles in the subsequent level. 

By making this adjustment, I aimed to create a more enjoyable and engaging experience for players, ensuring that they had a positive introduction to the game. Playtesting confirmed that the revised level order improved the overall flow of the game, leading to a better player experience.

CastleLevel3
  • Traps
    • Spikes
    • Platforms
    • Boss
    • Bullet hell
    • Heart Collectibles


Fig 2.8 CastleLevel3

EndScreen
  • Retry button
  • Quit button


Fig 2.9 EndScreen

Items [during gameplay]

In order:
  • Heart Item Collectible
  • Key

Fig 3.1 Heart Item Collectible


Fig 3.2 Key

To enhance the significance and gameplay impact of collectible items, I implemented special visual effects to make them stand out. To achieve this, I utilized the particle effects system, which allowed me to create captivating visual cues for players. 

For the heart collectible, I opted for larger, softly blurred particles in a red-pink hue. These particles gracefully floated around the heart, creating a mesmerizing effect that draws players' attention. The subtle and gentle motion of the particles complements the essence of the heart as an essential health-boosting item, making it visually appealing and enticing to collect. 

On the other hand, for the key collectible, I chose smaller, scattered circles with a vibrant golden color. These particles moved rapidly, adding a sense of urgency and excitement to the gameplay.

Sound

For my background music, player sound effects, mob sound effects and ambience I collected copyright free music from a variety of sources, most notably Epidemic Sounds

The startMenu and endScreen have the same peaceful music whilst the introductory cut scene has a more suspenseful tune. The first and second level have the same calm bg music and only the final boss level has a different tune that is much more fast paced to match the tempo of the fight.

The player, enemy mobs and boss have sounds set to different states which I will list down below:

Player
  • Jump
  • Hurt
  • Death
  • Attack1
  • Attack2
Enemies
  • Hurt
  • Death
  • Attack
Boss
  • Hurt
  • Death 
  • Attack
Ambience
  • Heart item collect
  • Checkpoint flagged 
  • Endpoint flagged 

Uploading

Uploading my game to share with others was an essential step in the development process. Initially, I encountered challenges when attempting to upload the game on various platforms like Safari and itch.io. However, I eventually found success by uploading it on UnityPlay. 

While the game worked on UnityPlay, I noticed a considerable difference in performance compared to playing the game locally. The slight lag and performance issues were to be expected due to the inherent nature of online platforms. After weeks of playtesting and getting accustomed to the smooth movement on my local machine, the online version's performance felt somewhat unfamiliar. 

Despite the performance discrepancy, sharing the game was a rewarding experience. It allowed me to receive feedback from a broader audience and gain valuable insights into how players interacted with the game. This feedback loop helped me identify areas of improvement and provided direction for further optimization.


Fig 4.1 Final Lily Game in UnityPlay

Experiencing the sudden disappearance and corruption of my Unity project file was an incredibly nerve-wracking and anxiety-inducing moment. It felt like all my hard work and efforts had vanished in an instant, leaving me in a state of panic. 

Fortunately, I had already taken a precautionary step by submitting my game to UnityPlay before the unfortunate incident. This gave me a sense of relief, knowing that at least the latest version of my game was safely stored in an accessible location. 

Additionally, I was able to salvage some essential files, including assets, packages, and project settings from previous backups. Quickly patching in these missing elements allowed me to recreate the majority of the project in a short time frame and re-submit it. 

This incident taught me the importance of regular backups and version control. Going forward, I will be more vigilant in safeguarding my projects and ensuring that I have multiple copies stored securely. While the experience was undoubtedly distressing, it also served as a valuable lesson in project management and preparedness.

Final Submission for Game Development Task 03



Fig 5.1 Final Lily Game in UnityPlay



Fig 5.2 Final Game Design Document

I realized that the game design document was quite outdated and lacked relevant information. I worked on updating the design document with the new information. This involved revising the game's mechanics, level designs, character abilities, and overall objectives to align them with the current progress of the project. I made sure to include any new ideas or features that emerged during the development process, as well as any improvements made to the original design.


Fig 5.3 Final Lily Game Presentation


Fig 5.4 Final Lily Game Walkthrough



Reflection

Looking back, I consider this project a valuable learning experience. It reinforced the significance of effective planning, early-stage gameplay design, and continuous iteration. Despite the challenges faced, the satisfaction of witnessing the project take shape and evolve into a cohesive game makes every effort worthwhile. I will carry these lessons forward into future projects, ensuring a smoother and more enjoyable development journey.

In the future, I will explore additional ways to enhance the online performance, possibly through optimizations and tailored settings to improve the overall player experience. Regardless of the challenges, sharing my game with others has been an invaluable experience, and I am excited to continue refining and improving my game development skills for future projects.

Given the incredibly tight timeline I had to work with, I'm content with the progress I made on the project. However, I can't deny that there were numerous features and improvements I wanted to implement but simply couldn't due to time constraints. Throughout the development process, I encountered some minor issues here and there that, ideally, I would have loved to fix. Unfortunately, the limited timeframe didn't allow me to address every detail as thoroughly as I wanted. Nonetheless, I recognize the importance of working realistically within the given constraints. It was a challenge to strike a balance between ambitious ideas and practical execution. While there were aspects I couldn't explore fully, I'm pleased with the results and the overall outcome of the game. In the future, if I were to revisit this project or work on similar ones, I would plan the development timeline more carefully to accommodate additional features and allow for smoother debugging.

In conclusion, this game development project was an invaluable learning experience. It allowed me to explore my creativity, learn new skills, and overcome obstacles. I gained insights into the iterative nature of development, the significance of regular backups, and the importance of playtesting on multiple platforms. As I reflect on this project, I look forward to incorporating these lessons into future game development endeavors, eager to grow as a game developer and continue crafting engaging and immersive gaming experiences.
 
Here is my friend from DA, Yi Ki's, review:
  • The assets are nice and the world levels are nicely built
  • Gameplay wise, it was very enjoyable and at a right difficulty level that she needed to restart a couple of times to get pass a level, if only I had time to refine the boss level

She is so sweet. I'm very grateful for her

Comments

Popular Posts