Inspiration

I wanted to make something that felt instantly dumb and instantly fun the kind of thing you hand to a stranger and they immediately get it. the idea came from a simple question: what if you were the dinosaur that didn't die? what if instead of getting wiped out by the asteroid, you just... ate it?

we mashed that with the most iconic movie theme of all time jurassic park and the rhythm game genre and it clicked. DinoSaber is basically Beat Saber if your face was the saber and the beats were extinction events. the jurassic park theme hits differently when it's escalating toward your inevitable asteroid-induced doom.

What it does

DinoSaber is a Snap Lens rhythm game that turns your face into a T-Rex. open your mouth to eat asteroids as they fly toward you, synced to the Jurassic Park theme. every 15 seconds the tempo kicks up, the asteroids come faster, and the music gets louder until you're frantically chomping at space rocks flying at your face at full volume.

miss an asteroid and it smashes into your dino skull with a screen shake and a satisfying crash. nail your combos and the dino does a little happy wiggle. survive to the end and you get a score card overlaid on your selfie — shareable straight from the lens.

How I built it

built entirely in Snap Lens Studio using JavaScript. the dinosaur head is a 3D face mask rigged to Snap's face mesh — it tracks your face in real time so the jaw opens and closes with your actual mouth. mouth open detection uses Snap's built-in blend shape signal (jaw open value > 0.6 threshold = chomp registered).

asteroids spawn from off-screen edges on a beat grid tied to the BPM of the Jurassic Park theme. we time-stamped the audio track manually to get the beat markers locked in, then scaled spawn rate and asteroid velocity up every 15 seconds across three difficulty tiers. collision detection checks the asteroid's screen position against the mouth landmark zone if it's within range on a frame where jaw open is detected, it's a hit.

audio layering handles the volume escalation we stack the track louder at each tier using Lens Studio's AudioComponent. visual feedback (screen shake, asteroid explosion particles, combo counter) all runs through the scripting layer with no external dependencies.

Challenges I ran into

getting the mouth detection threshold right was way harder than expected. too sensitive and the dino chomps constantly from natural lip movement. too strict and players feel like the game is ignoring them. we landed on a 0.6 jaw open value with a 0.15s hold requirement you have to actually commit to the chomp.

syncing asteroid spawns to the music was a whole thing. the Jurassic Park theme has a pretty irregular feel in some sections we had to manually map beat timestamps into an array rather than just dividing by BPM. worth it though, because when an asteroid hits exactly on a horn hit it feels incredible.

the 3D dino head mask clipping through the face at certain head angles was annoying to fix. we ended up scaling the mesh slightly outward from the face origin and tuning the rig so extreme angles don't expose the seam. not perfect but good enough for a 24-hour build.

Accomplishments that I'm proud of

the moment the jaw sync clicked — watching the T-Rex mouth open exactly when you open yours in real time was genuinely exciting. it just works, and it works fast enough that it feels responsive rather than laggy.

the difficulty curve feels really good. tier 1 is casual enough that anyone can play it. tier 3 is genuinely stressful. the fact that the music gets louder as the chaos escalates makes it feel like the game is taunting you, which was completely intentional and completely hilarious.

we're also proud that the shareable end card looks legitimately clean. a lot of hackathon demos fall apart at the "now show a judge" moment DinoSaber holds up because the selfie with the dino mask + score overlay is just inherently good content.

What I learned

Snap's face mesh and blend shape system is genuinely powerful and way more accessible than we expected. you can build something that feels polished using just the built-in signals no custom ML model needed for basic expression detection.

in a 24-hour build, feel beats features every time. we cut the leaderboard, the power-ups, and a second dino skin to focus on making the core chomp mechanic feel satisfying. the right call every time. judges play the game for 30 seconds those 30 seconds have to be great.

manual beat mapping is tedious but it's the difference between a rhythm game and a game that happens to have music playing. the sync is what makes DinoSaber feel like a real game instead of a tech demo.

What's next for DinoSaber

more dinos. triceratops with a head-butt mechanic, velociraptor with a lunge, brachiosaurus that has to stretch its neck up to eat high asteroids. each one could have a different input mechanic tied to their anatomy.

a song selector with different tracks at different BPMs the Jurassic Park theme is tier 1, something faster and more chaotic for tier 2, full survival horror energy for tier 3. the music setting the tone completely changes the feel of the game.

multiplayer via Connected Lenses two players, two dinos, same asteroid stream. whoever eats more wins. watch your friend become a T-Rex and go absolutely feral trying to eat space rocks. that's the dream.

Built With

Share this project:

Updates