Inspiration
The theme for this hackathon centered on the enchanted forest that both Lenny and T.K. found themselves in. We wanted to use this to our full advantage when creating the lore for our game and the theming. Since the hackathon features two opposing factions: Blight and Bloom, we wanted to incorporate that into the enemies and allies of our game. This resulted in a game akin to a tower defense, with Morse code as our main objective: SOS is the most famous call for help, so we made a game about answering it. Lenny is nearing the heart of the forest, creatures are creeping in to reach him, and the only way to defend him is to call for help in Morse code.
We also wanted the controls to be unique, fun, and educational. The game is played hands-free, by blinking. A short blink is a dot and a long blink is a dash. That makes it a game you can play without a keyboard or mouse, and it teaches you Morse code while you play.
Features
SOS: Sprouts of Safety is a tower defense game controlled by your eyes.
- Enemies walk toward Lenny from the edges of the forest, each carrying a letter and its Morse code.
- You blink that letter in Morse. Your webcam reads the blinks, and a forest ally sprouts from Lenny and hunts down the enemy with that letter.
- Score and combo: every kill scores points. Chaining correct letters builds a combo up to ×5, and a wrong or wasted letter resets it.
- Word waves: every 10th kill, a whole word walks in, spelled left to right across the entrances (SOS, HAT, HELP…), so you practise real beginner Morse words.
- An online leaderboard to compete for the top score.
- Accessibility options: a calibration screen, adjustable dot and dash timing, and a keyboard-only mode.
How we built it
- Engine: Godot 4 with GDScript.
- Eye tracking: a Python helper using MediaPipe's Face Landmarker and OpenCV measures how open each eye is. It reports blinks and their length to Godot, and a Morse parser turns those lengths into dots, dashes and letters. The helper is packaged as a standalone executable with PyInstaller.
- Gameplay: tile maps with navigation built from the walls, so enemies and allies pathfind to their targets. Spawns rotate fairly across the entrances, and word waves place letters in reading order.
- Leaderboard: a small API on Supabase edge functions, with a local fallback when offline.
- Art: every sprite, icon, button and background is hand-drawn by our team, from the SOS logo and the wisteria forest to Lenny himself.
Pathfinding
Using Godot's built in nodes for Navigation, we were able to build logic for 2 agents: Enemies and Allies. Enemies seek out the player, while the allies seek out enemies. The nodes allowed us to easily make a navmesh tile set, and search using A*.
Challenges we ran into
- Blinks are slow input. A letter takes a few seconds to blink, so the maps had to give enough time to react without feeling empty. We designed switchback lanes and measured how long each enemy takes to reach Lenny until it felt fair.
- Telling a blink from a dash. Everyone's eyes and lighting are different, so we added calibration and adjustable thresholds instead of fixed values.
- Fighting through walls. Large sprites meant allies and enemies "touched" through bushes and fought across walls. We changed combat so units only meet along the actual walking path.
- Getting the camera running on every Windows machine. Getting the plugin for Mediapipe to work with every Windows machine took a lot of debugging due to issues with gitignore.
Accomplishments that we're proud of
- A full game you can play without touching anything, just by blinking.
- It actually teaches Morse code: after a few rounds, you start remembering letters.
- All of the art is our own, and it gives the game a warm, storybook feel.
What we learned
- How to run computer vision alongside a game in real time and turn noisy signals into reliable input.
- Godot's navigation system, tile maps and scene workflow, and how much level layout shapes the feel of a game.
- How to split a game across four people working in parallel on vision, pathfinding, art, and UI, and merge it all together with Git.
What's next
- More maps, and difficulty that ramps up over a run.
- Tougher enemies that need several allies to take down.
- A practice mode for learning the alphabet before playing.
- Numbers and punctuation, longer words, and full phrases.
- One-click setup, so anyone can download the game and play with their webcam right away.
- An art gallery featuring the assets created by the team
- A special illustration for reaching a certain high score
Built With
- godot
- javascript
- mediapipe
- postgresql
- python
- supabase

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