Inspiration

We wanted to bring the nostalgia of classic "endless runner" console games into the immersive world of Augmented Reality. The goal was to move the player from simply watching a character to becoming the controller. Inspired by the chilly winter season, we envisioned Snow Surfer—a world where users don't just dodge obstacles on a screen, but physically lean and react to survive a freezing 3D environment.

What it does

Snow Surfer is a gamified AR experience where the user controls their Bitmoji avatar running through a hazardous winter landscape.

  • Head-Controlled Movement: The user tilts their head left or right to steer the avatar across three lanes and taps the screen to jump.
  • Survival Mechanics: The player must dodge dynamic obstacles like burning firewood, road blockers, and treacherous snow holes. A 3-heart health system keeps the stakes high—hit three obstacles, and it's game over.
  • Vehicle Transformations: This is the game's unique twist. Collecting specific items triggers an instant transformation:
    • Bicycle: Increases movement speed.
    • Formula 1 Car: Engages "Hyper Mode" for maximum velocity.
  • Scoring: Users collect three different types of point-granting collectibles to climb the scoreboard.

How we built it

We utilized Snap AR's Lens Studio as our core development environment.

  • World Building: We designed a modular 3D environment where "ground segments" are instantiated and destroyed in real-time to create the illusion of an infinite road.
  • Logic & Scripting: We wrote custom JavaScript to handle the state machine. The game loop calculates the distance travelled and applies a speed multiplier ($M$) based on the current vehicle type. The scoring algorithm roughly follows: $$Score = \int_{0}^{t} (v_{base} \times M_{vehicle}) dt + \sum C_{points}$$ Where $v_{base}$ is the running speed and $C_{points}$ represents collected items.
  • Assets: We integrated 3D assets for the environment and utilized the Bitmoji 3D Avatar API to personalize the runner for every single user.

Challenges we ran into

  • State Management: Handling the transitions between the Runner, Cyclist, and F1 Car states was difficult. We had to ensure the collision box (collider) resized dynamically to match the vehicle size without clipping through the floor.
  • Optimization: Rendering a snow particle system, moving 3D trees, and a high-poly racing car simultaneously caused frame rate drops on older devices. We had to implement object pooling (reusing 3D objects instead of destroying/creating them) to keep the lens running at a smooth 30+ FPS.

Accomplishments that we're proud of

  • Seamless Transformations: We are incredibly proud of the "morph" effect when a user picks up a vehicle power-up. It feels instantaneous and rewarding.
  • Intuitive Controls: Tuning the head-tracking sensitivity was tricky, but we achieved a balance where the movement feels responsive but not jittery.

What we learned

We gained a deep understanding of Collision Layers in Lens Studio. We learned that separating "Obstacles" and "Collectibles" into different physics layers drastically simplified our code. We also learned how to better manage texture memory to prevent the lens from crashing on lower-end Android devices.

What's next for Snow Surfer

  • Global Leaderboards: We plan to integrate a backend to store high scores so users can compete with friends.
  • More Biomes: Adding a "Night Mode" or a "Blizzard Mode" where visibility is reduced for extra difficulty.

Built With

Share this project:

Updates