Tune Mountain

About the Game

     Léo’s Major Qualifying Project is Tune Mountain, an interactive, gamefied audio-visualizer. This project, originally a brain-child of Cem Alemdar, has been brought to life by his freshman year floormates, Léo Gonsalves and Jarod Thompson.

     The main purpose of this application is to enhance the experience of listening to music by providing a simple, rewarding, visually pleasing, and responsive means of interaction with the song. This was idealized in the form of a 2D snowboarding game, where the mountain, obstacles, and visuals are created procedurally from the characteristics of a given song (extracted using the Spotify API) and are synchronized with aspects of the song.

Technical Details

     The architecture of this application came to be in the form of a multi-modular application. The parts are defined in the diagram below.

tune mountain architecture diagram
The architecture of the Tune Mountain Project

     The way this works is straightforward. The React App is the piece of code that ties everything together and instantiates all other modules. The game module implements the physics engine and the graphical engine.

    Game inputs are abstracted by the Input Manager, that converts specific button presses into inputs that can be played, replayed, recorded, and saved. These inputs are read by the game module as game actions, i.e. pressing the “Space” key instead turns into the “Jump” action, therefore separating the key from the action, allowing for easier rebinding. The input history is accessible from the React App. and can be fetched and reset at any time.

     The state controller serves as a communication medium between the Game module and the React application. At any time, the UI components in the application can request the game to change its state (play, pause, generate level, etc). The game can also change its own state due to internal mechanics and can notify the web application about these changes.

     The React application communicates with the back-end application in order to authorize users, store input histories, game sessions, and feedback forms. The React application also fetches song information directly from the Spotify API and implements the Spotify Web Player.

Authorship

     The idea for this project was originally seeded by Cem Alemdar, who also worked alongside Jarod Thompson in writing the Game module. Cem also helped conceptualize the requirements for the State Controller and the Input Manager, as well as some UI components.

     Léo worked on designing and implementing the project architecture, as well as conceptualizing and implementing the inner workings of the Input Manager, State Controller, Backend Application, Node Application, and the external Sandbox API used to store data.

Close Menu