The Bananana Rhythm Game is a music-based rhythm game where players hit notes in sync with the beat to earn bananas 🍌. This short guide is intended for developers working on the game, providing insights into its architecture, key components, and setup instructions.
- Notes are generated based on predefined patterns. For example, in /data/default/easy.json, each row represents a sequence of notes: 1 indicates a note, while 0 represents the absence of a note in that row.
- Each note corresponds to a key press (A, S, D, F, G) or on for mobile devices tap on the screen.
- Notes travel down the fretboard towards the hit zone.
- Timing accuracy determines the score.
- Hit Notes ✅ → Adds points & increases streak.
- Miss Notes ❌ → Reduces score & breaks streak.
- Multiplier System ✖ → Consecutive correct hits increase score multipliers.
- Classic Mode: Predefined note patterns.
- Remix Mode: Allows playing remixed versions of the song.
- Record Mode: Allows players to create and publish note sequences.
- Three.js for 3D rendering.
- Web Audio API for sound processing.
- Node.js for backend logic.
- Install dependencies:
npm install
- Run the development server:
npm run start
- Open the game in your browser at
http://localhost:3080.
Here’s an improved and expanded version of your Game TODO List, providing more clarity and detail:
- Ensure Recording Mode functions correctly by fixing any bugs and inconsistencies.
- Implement support for uploading recordings from a JSON file, allowing developers to import custom recordings seamlessly.
- Improve the built-in recording editor to modify and fine-tune recordings directly within the mode, enhancing user flexibility.
- Create a default set of recordings tailored for each difficulty level (Easy, Medium, Hard) to provide players with a starting point and a smoother gameplay experience.
- Fix the game gauge multiplier behavior so that it spins correctly when moving backward instead of resetting in a full circular motion when a multiplier is lost.
- Adjust the positioning of the game gauge to ensure it displays properly across different screen resolutions and aspect ratios, preventing visual misalignment.
- Fine-tune the game-difficulty balance by determining a fair number of missed notes before the player fails, ensuring a challenging but enjoyable experience.
- Improve hitbox accuracy and tapping sensitivity on mobile and touch devices, ensuring precise and responsive note detection.
- Implement multi-line (holding) notes, allowing players to hold down a key for several seconds instead of requiring multiple taps, enhancing note variety and complexity.
- Optimize UI scaling to ensure smooth and consistent visuals across various screen sizes, including mobile devices and ultra-wide monitors.
- Fix the button light-up animation when pressing on mobile/touch devices, ensuring correct visual feedback when interacting with buttons.
- Investigate ways to reduce memory usage by optimizing assets, such as:
- Reusing icons instead of duplicating them.
- Removing icons from the fretboard if they are already in use elsewhere, preventing unnecessary resource consumption.