Beat Racer

Beat Racer is a 2D Rhythm Game. The player’s controls are the keys on the keyboard that correspond to the notes on an octave of a staff (CDEFGAB). The player will be presented with a blank staff with a single note on the left hand side. This note is "Quarty." The staff will begin scrolling to the left and the music will begin. As the music begins, the notes being played will appear on the right edge before they sound. As they approach the left edge where Quarty is, the player needs to move Quarty to the correct note when it arrives by pressing the corresponding key. At first, the notes' letters are visible on the notes themselves, but those go away as the game progresses. Players have the option to toggle them back on if it is too difficult.

See the code

Beat Racer was made for Dr. Diana Franklin's Computers for Learning class with Aditya Yellumahanti and Erik Kerrigan. I served as a game designer and Along with a demo of the game with three levels of increasing difficulty, we also needed to make the game engine. If you want to play Beat Racer, you will need to download the engine as well! I cannot upload it since the engine's code is copyrighted under the class, unfortunately. The code I have uploaded is the game class itself, which is not copyrighted!

Our game is ultimately designed for anybody who wants to learn music on a conceptual level. While for this project we are creating an environment tailored to a child at least 8 years old, our game has no upper bounds on age or lower baselines for skills. The reason we believe a child should be at least 8 years old to get the most out of our game is so that they will have developed more precise reflexes and can follow along with the platformer.

Culturally-relevant Instruction

Our game is designed so that students who are not integrated or follow American culture are not left out. The idea of culturally relevant instruction does not necessarily affect a single element; it affects the game itself. Our game would contain music by minority artists: Kali Uchis, Fela Kuti and Elvis Crespo to name a few. We wish to introduce people of all cultures to musics of different artists and cultures.

In addition to the music that people will listen to, we will be including loading screens that provide trivia about the artist that we are playing. We may include a historical fact or two, some trivia, and other songs that they have made to provide players with further information about the artist if they wish to learn more about them in the future. With this information, they need not seek out themselves new songs; they are presented there for them, so we wish to provide an easy dissemination of music of minority artists.

Beat Racer is certainly one of my favorite concepts. One of my biggest achievements on this game was being efficient with space. At first, I was just spawning notes based on their time signature. As songs progressed, there would be a ton of notes in the game at the same time. Towards the final project, though, I decided to just move the position of these notes to where a new one would have spawned when they are off screen. We are then able to run our game with just eight note sprites at a time!

In addition, the architecture of the game allows for any song to easily be added. Songs are stored as strings of the following form: "NOTE TYPE SHARP/FLAT/NONE." If I could go backwards, I would have made this a struct instead, but such is life. As I say, lesson learned! So a song would look like:

private String[] SongExample = {"A QUARTER SHARP", "B QUARTER NONE",..."D EIGTH SHARP"};

In a full version of the game, it would be very simple for players to add songs they wanted to play, provided they were willing to enter all the notes.

There is a lot I would like to expand on and improve. In the demo version, the music does not line up with the notes. I believe this is a limitation of the engine we used, but we could not get the notes to play at the same time as the beat of the song. Since then, though, I have studied Geometry Dash's level editor. This, along with this amazing blog post from Gamasutra, I have many ideas for how to fix and improve this in my own game.

The final thing I would want to add is actually being able to connect instruments to the game! I don't imagine it would be very hard to read input from an electronic keyboard. With this, I would be able to actually use full sheet music, and train players on how to use both hands. Really, I would just want this feature so that I can finally master Clair de Lune on piano...