Inspiration
SkyToss originally started as an idea for a turn-based Worms-style game. I wanted that playful, physics-driven chaos where every launch feels unpredictable. As the prototype grew, the scope quickly got out of control, so I pivoted toward something more casual and drop-in friendly, inspired by mobile arcade games you can play in short bursts.
I’d also been working on a few Bitmoji projects recently and wanted to include them in a more expressive way. I realised I hadn’t seen a Bitmoji jiggle before, so making that happen became a personal challenge, and a big part of the game’s identity.
What it does
SkyToss is a physics-driven arcade game where you launch your Bitmoji across the sky, bounce through chaotic obstacles, collect coins, and see how far you can travel.
In addition to a global leaderboard, the game overlays your friends’ names and distances directly into the game world, showing exactly how far ahead or behind you are as you fly. It turns distance into something tangible rather than just a number on a scoreboard. This is a bit tricky to show in a video i had no friends to play with!, hopefully it shines even more once there are more players in the wild! And who knows maybe these items do something....you'll have to come back to find out!
Rotating daily events remix gameplay throughout the day, changing physics, spawn rates, and rewards to keep each run feeling fresh.
How I built it
I built SkyToss in Lens Studio, writing custom physics logic for launching, movement, and collisions. Bitmojis are dynamically loaded and animated, with a chain-physics controller applied to create a soft, bouncy jiggle while flying.
The environment is spawned procedurally in chunks as the player moves forward, allowing for long runs without sacrificing performance. I also implemented persistent storage to save gold, owned items, and equipped cosmetics, along with time-based event modifiers that change gameplay multiple times per day.
Challenges I ran into
Working with Bitmoji rigs was one of the biggest challenges, understanding their joint hierarchy, attachment points, and limits. Applying chain physics was fun but delicate, especially with a relatively small number of usable joints.
Balancing procedural spawning, collision handling, and persistence, while keeping resets clean and bug-free also took a lot of iteration.
Accomplishments that I’m proud of
Getting chain physics working on a Bitmoji for a dynamic, expressive feel
A persistent shop with one-time purchases and equip/unequip logic
Daily events that meaningfully change gameplay
Friend distance markers embedded directly into the game world
A chaotic but readable core game loop
What I learned
I learned a lot about how Bitmojis are structured and rendered in Lens Studio, especially how joints, attachments, and physics interact. Experimenting with chain physics on a character was a highlight—even though I wish there were more joints to work with. Overall, it was a great deep dive into building procedural, physics-driven gameplay inside a Lens.
What’s next for SkyToss
I want to push persistence much further. The long-term goal is to start with short 10-second throws, but gradually unlock runs that can last 30–40 minutes. With more persistence, SkyToss could keep running “in the background” you flick your character, watch the chaos for a bit, then come back later to see how far they made it and what they earned. Kind of like a chaotic Tamagotichi.
I also dabbled with the idea of the game being a dat/ week battle where the challenge is to see who can travel the furthest.
How it fits the theme - Longevity.
So i feel this game could encourage groups of friends to always be on top. With the leaderboard resetting i thought it would be fun to add random events seeded by hour so improved physics at 1pm for example or more clouds at 3pm, more gold spawns at dawn - you'd have to keep coming back to find out. Theres also the shop with items thats persistent.
Built With
- elevenlabs
- lensstudio
- typescript


Log in or sign up for Devpost to join the conversation.