Scriptable Object Event System
For Tough Catch, I implemented a system using Scriptable Objects to handle decoupled event communication across separate game systems. Each minigame subscribes to an asset-based event channel to listen for when they should start and broadcast a completion event back through a Scriptable Object when it concludes. I expanded this event framework to manage player damage logic, track captured fish data, and broadcast state changes.
Tuggle Phase Minigames
The minigames in this phase happen quickly, with up to two challenges happening simultaneously on screen. To manage this loop, I made state machine that shuffles active challenges and sends them procedurally to the player. Each minigame inherits from an abstract base class handling the base execution behavior, making a modular system that lets the minigame designers put in new gameplay ideas into any phase.
Star System
To add replayability, I added a milestone system that rewards players with stars based on performance, such as catching the lake boss or beating the game on hard. Completion states are monitored by a manager singleton that updates when a challenge condition is completed. The results screen checks with this manager at runtime to display the correct amount of stars.
Main Menu UI
To have dynamic motion within the main menu, I used Cinemachine virtual cameras to transition seamlessly between environmental points of interest as the player navigates the submenus. I combined this with Unity's built-in Animator to trigger keyframe animations for the UGUI layout, elevating the overall game feel.