The big improvement on VOEZ 1.1 from 1.0 is its overhauled song selection UI and it also made user experience better than the previous version.
- The song selection menu should be responsive to user interactions.
- It must load information (ex: score, song name) and play preview music once a user selects a song.
- The menu should load song cover images dynamically while scrolling for less memory usage.
- The codebase should be clear and extensible.
- I proposed Model-View-Controller pattern to separate logical code from Unity-dependent code (i.e. MonoBehaviour).
- The models encapsule datasets, such as songs, albums, scores, rankings.
- The views are MonoBehaviour-derived objects and the other Unity-related objects.
- The controllers are responsible to run game states and transfer data among views and models.
- The texture cache holds all song cover images that will be rendered. It can release some least-recently used textures to store new textures.
- We avoided to use global variables as possible. Controllers are responsible to hold and pass shared objects to their inner controllers. (yes, controllers can be nested)
What I learnt
- Collabration with colleagues
- Pair Programming
- Code Review
- Refactor Methods