Rusty Rhythm
Rusty Rythm is a simple rhythm game where you press buttons to the beat of a track of your choosing from the game's catalogue.
Author: NEDELCU Ioana
GitHub Project Link: https://github.com/UPB-PMRust-Students/project-ioqnq
Description
When booting up the game, you will be prompted to pick one of the available songs and the difficulty which you wish to play on. You can then input a 3 character username. The gameplay itself consists of pressing the buttons to the rhythm of the song you selected with the aid of the visual interface. Hitting the correct button(s) at the right time adds to your score.
Motivation
While being more familiar with mobile, touch-screen based rhythm games, I've always been fascinated by the larger-scale arcade machines, which offer more of a physical, tactile response. I hope to put the technical knowledge I have gained throughout the semester to use by bringing to life a pocket-sized version of the arcade experience.
Architecture
Log
Week 6 - 12 May
Finished ordering any remaining parts that I might have needed. My components ended up requiring more current than I was expecting so I couldn't power everything using the pico as I had planned (went for a battery + step down module set up instead). Brought KiCad scheme in its final form.
Week 7 - 19 May
Battery proved too troublesome so in the end I'm using a 3.3V and 5V power source. All components now work together. Coded in game menus (song select, difficulty select, gameplay). Will need to add a results screen. Have a few ideas for beatmap implementation.
Week 20 - 26 May
Final gameplay elements implemented (falling notes, scoring). Made some small KiCad scheme changes to reflect the power source setup. In the end I chose to design the beatmap manually. To do this, I played the song and started a timer. First I measured the amount of time a note takes to reach the bottom of the screen. Then I played the song and pressed buttons to the beat, each button displaying its timing and column number. This is how I got the timestamps that will later have to be compared to the player's inputs.
Hardware
- Raspberry Pi Pico W Microcontroller: Coordinates all of the components.
- Buttons: Game input.
- Buzzer: Audio feedback for game inputs.
- MP3 Player Module: Reads song from a microSD card.
- Speaker: Ouputs song.
- Display: Visual output device, displays the game elements (falling notes, score, menus).
- Breadboard: Used for building the circuit.
- Wires: Used for connecting the components.
Schematics
Final Look
Bill of Materials
Device | Usage | Price |
---|---|---|
Rapspberry Pi Pico 2W | The microcontroller | 39,66 RON |
Male-Female Wires | Electronic Components | 4,45 RON |
Jumper Wires Set | Electronic Components | 7,99 RON |
Breadboard 400 | Electronic Components | 4,56 RON |
Breadboard 830 | Electronic Components | 4,99 RON |
DC-DC Step Down LM2596S | Electronic Components | 12,99 RON |
Push Buttons | Game inputs | 1,44 RON |
MP3 Player Mini | Reads song | 13,99 RON |
LCD SPI Module Screen | Display | 43,58 RON |
Speaker | Outputs song | 4,98 RON |
Passive Buzzer Module | Game feedback | 1,69 RON |
Rapspberry Pi Pico | Debugger | 31,50 RON |
Software
Library | Description | Usage |
---|---|---|
embassy-embedded-hal | Embedded I/O | Screen SPI |
embedded-graphics | 2D graphics library | Drawing to the display |
st7735-lcd | Display driver | Controls the display |
embedded-time | Durations, clocks, rates | Beatmap timings, general delays |
heapless | Static data structures | Beatmap storing |
mipidsi | SPI Driver | Screen Controller |