Inspiration
Classic rhythm and tile-tapping arcade games have always been captivating because of their pure focus on timing, reflexes, and musical flow. For this hackathon, I set out to prove that you don't need a heavy, bloated game engine like Unity or Unreal to create a fast, ultra-responsive, and visually striking arcade experience. I wanted to build TileRush completely from scratch in native Android using pure Java, delivering silky-smooth 60+ FPS performance, zero-latency touch response, and an electrifying neon cyberpunk aesthetic.
What it does
TileRush is a fast-paced, 4-lane mobile rhythm game inspired by arcade classics like Magic Tiles:
- Dynamic 4-Lane Action & Hold Mechanics: Tap falling notes and sustain long hold tiles where the active note head dynamically tracks your finger position as the tail streams in with energetic plasma bursts and bubble pops.
- Interactive Jukebox with Live Previews: Listen to track previews before selecting your song. Features popular tracks including On The Dance Floor, Midnight Kisses, Faded, Chanel, Don't Blame Me, and At My Worst.
- 3-Tier Dynamic Mode Progression:
- Level 1 (Groove / Normal): A balanced tempo to get into the flow state.
- Level 2 (Rush / Speed Up): Reaching score 30 triggers an animated screen flash, sound chime, and a glowing "⚡ SPEED UP! ⚡" transition banner as the tempo accelerates.
- Level 3 (Overdrive / Hard): Reaching score 70 unleashes "🔥 OVERDRIVE! 🔥" mode with lightning-fast speeds.
- Zigzag Tile Storms: In Overdrive mode, the game unleashes rapid 7-tile staircase waves sweeping across adjacent lanes, challenging players' peak reflexes.
- Polished Neon Visuals & HUD: Beveled glowing tiles with neon border rims, bursting bubble particles, floating ambient dust motes, and real-time HUD mode badges.
- Local High Score Tracking: Automatically records and persists personal bests locally on device.
How I built it
- Native Architecture: Developed 100% in pure Java using Android Studio and native Android SDK APIs (API 26+).
- Zero-Engine 60 FPS Canvas: Built a custom SurfaceView/Canvas 2D rendering pipeline and game loop that handles frame updates and particle animations without relying on heavy external game engines.
- Continuous Multi-Touch Dispatcher: Handled
ACTION_DOWN,ACTION_MOVE, andACTION_UPmotion events to ensure hold tiles maintain responsive touch tracking under the player's finger in real time. - Dual Audio Engine: Integrated
MediaPlayerfor seamless background music streaming and preview playback, paired withSoundPoolfor instantaneous, zero-latency tap SFX and transition chimes.
Challenges I ran into
- Hold Tile Visual Synchronization: In initial iterations, the hold tile's head block would slide down off-screen even while the user was pressing it. We solved this by dynamically clamping the rendered track to
activeBottom = Math.min(bottom, touchY), anchoring the note head directly under the player's finger while the tail drains smoothly into it. - Procedural Zigzag Generation: Generating fast staircase patterns across adjacent lanes without overlapping or colliding with standard random tiles required creating a dedicated priority spawn queue (
zigzagQueue) specifically for Level 3. - Audio Lifecycle & Previews: Ensuring track previews played seamlessly when tapping different songs without overlapping audio tracks or causing memory leaks required strict state management of
MediaPlayerinstances.
Accomplishments that I'm proud of
- Achieving fluid 60 FPS rendering and arcade-grade visual polish purely through native Android Java and Custom Canvas drawing.
- Building a high-energy difficulty curve with dramatic screen flashes, banner announcements, and zigzag waves that feel just like commercial rhythm games.
- Creating an ultra-responsive, zero-latency touch and hold system.
What I learned
- Deep optimization of low-level 2D Android Canvas drawing and object reuse to minimize garbage collection pauses.
- Precision motion event tracking for continuous multi-touch gestures.
- Procedural rhythm game wave mechanics and game state architecture.
What's next for TileRush
- Custom Beatmap Generator: Allowing players to import any personal MP3 track and automatically generate playable tiles using audio onset detection.
- Multiplayer Versus Mode: Real-time 1v1 battle mode to compete against friends online.
- Global Leaderboards: Cloud high-score integration and community rankings.
Built With
- android
- android-studio
- canvas-api
- game-development
- java
- mediaplayer
- mobile-game
- sharedpreferences
- soundpool
- ui-ux
Log in or sign up for Devpost to join the conversation.