About the Project

Inspiration

The idea for this project came from wanting to build a simple, fast, and satisfying tap-based game directly inside a Snapchat Lens. I was inspired by timing games where a single tap at the right moment decides everything. Combining this with Bitmoji characters and a mystical visual theme made it feel playful while still being interactive.

I also wanted to push beyond “just a filter” and create something that feels like a real mini-game inside Snapchat.

What I Learned

Through this project, I learned:

  • How Snapchat Lens Studio scripting (TypeScript) works in a real interactive scenario
  • Managing state (running, win, lose) without breaking input logic
  • Handling UI elements like ScreenTransforms and ScreenRegions correctly
  • Debugging Lens Studio quirks where small logic changes can break interaction
  • How to design gameplay that works reliably across devices

Most importantly, I learned that keeping logic simple and predictable is critical for real-time AR experiences.

How I Built the Project

The project was built using:

  • Lens Studio with TypeScript
  • A moving UI line controlled by an UpdateEvent
  • Tap input using TouchStartEvent
  • Bitmoji character switching for run / win / lose states
  • A mystical orb (sphere) for visual feedback
  • Clear win/lose conditions based on timing and position

The core mechanic is intentionally minimal:

  • A line moves continuously
  • The user taps once
  • The system checks whether the tap happened in the green zone
  • The result is immediately shown with visuals and text

This approach ensures smooth performance and avoids unnecessary complexity.

Challenges Faced

Some of the main challenges were:

  • Preventing double taps or inconsistent stopping of the line
  • Avoiding unreliable “restart” or scene reload methods
  • Making sure the logic behaved the same on desktop preview and mobile
  • Correctly positioning UI elements across screen sizes
  • Debugging TypeScript errors caused by Lens Studio’s strict runtime environment

Many problems were solved by sticking to a single, stable script and resetting state manually instead of relying on unsupported APIs.

Final Thoughts

This project shows how even a very simple mechanic can become engaging when combined with good feedback, visuals, and polish. It also reinforced that in AR development, stability and clarity matter more than overengineering.

Built With

  • ar
  • lens
  • lens-studio
  • snap
  • studio
  • vr
Share this project:

Updates