Tambourine Story — a story-driven rhythm game you play by shaking your iPad

← Back to portfolio

Apple WWDC Swift Student Challenge · Distinguished Winner

Tambourine Story

Project duration: Dec 2023–Feb 2024

Platform: iPadOS

Tools: Swift, SwiftUI, Clip Studio Paint, Blender

Roles: Concept, game design, art, music, engineering

Team size: 1

Source code: GitHub

Overview

Tambourine Story was created for Swift Student Challenge 2024. It's a rhythm game — but instead of tapping the screen like most rhythm games, it asks the user to shake the iPad like a real-life tambourine.

This game is my tribute to music and collaboration — how each and every one of us is able to be a part of something greater than ourselves, through collaborative art, through playing together.

The project won Distinguished Winner in Swift Student Challenge 2024 and was featured on various platforms, such as ChannelNewsAsia, ELLE Singapore, and the App Store.

The project was also presented to Tim Cook (then-CEO of Apple) when he visited Singapore in April 2024, as well as to the public at Apple Developer Center Singapore.

Tambourine Story gameplay overview
Tim Cook, then-CEO of Apple, trying out Tambourine Story during his Singapore 2024 visit. (He was pretty good at it!)

Key decisions

An emotional story — the project was inspired by a personal experience. The story follows a little girl's journey of trying to join her brother's band, and the player shares her experience of being included in the practice session for the first time.

A few years ago, I started a band with my friends, and the feeling of our first rehearsal was so wondrous that I wanted to recreate that feeling into an interactive experience. It was the feeling of being a part of something special, hearing the song come together for the first time, and I wanted to capture the human nature of yearning for arts and harmony.

Storyboard panels for Tambourine Story More storyboard panels Final storyboard panels
The storyline consists of the girl and her brother’s dialogue, as well as various props like her diary

A physical game — I always believed that games had superpowers, being the only medium that the user could interact with. This led me to attempt to develop a game that transcended the screen into physical interactions: Tambourine Story needed the user to physically shake the iPad as a way to play the tambourine and interact with the game. This was inspired by Phyphox, an app we used in Physics lessons in school to record device motion. I learnt to use CoreMotion to detect physical motion and connected it to the gameplay.

I also played with design decisions on how to portray the rhythm game element in a simple way, so that anyone can enjoy the story without needing a lot of skill.

Gameplay — shaking the iPad to play tambourine Gameplay — visual feedback during performance Gameplay — another view
Process of designing the physical gameplay, with a warning for players to let them know what to do

An immersive environment — I wanted to use art, music, and other assets to convey the heartwarming moment and emotion that was needed. The setting needed to be warm and welcoming, and I designed the music to crescendo to a grand finish that felt full and all-encompassing as the player neared the end of the story.

I used GarageBand on Mac to compose the soundtrack and learnt Blender to design the tambourine in 3D, and drew an animating jumping girl to make it feel more playful.

Initial version of the background Final version of the background, repainted
Initial vs final version of the background, repainted to give a more comforting feeling
The first vs the last song in the game, building up intensity and instruments to evoke a feeling of coming together
Jumping girl animation
The jumping girl animation that puts the whole scene together, inspired by a Thomas the Tank Engine lyric video — it keeps time so the player knows when to shake the tambourine

Reflection

Tambourine Story was born out of multiple inspirations coming together at the right time, and I feel really satisfied with the way it all came together. There were several times where I almost gave up, where something in the model or in the code just would not work the way that I wanted it, but the Swift community in Singapore were super supportive, and we had group mini-hackathon sessions where we all worked on our project together and helped each other. That helped me power through and polish it to create something I was truly proud of.

Overall, I’m really satisfied with how it came out and the innovative way it uses motion to extend games into real life too.

The full gameplay experience

Thank you to the Swift in Singapore community for being so supportive, and thank you to Apple for all the opportunities I was given.