Inspiration
The theme for this hackathon centered around an enchanted forest that Lenny and T.K. found themselves in. We wanted to make the most of this when creating our game. We decided to use the two opposing factions, Blight vs. Bloom, to create the respective enemies and allies for this tower defense.
We were also inspired by Full Sail's sponsor challenge: create a serious game using pathfinding and/or facial recognition. We wanted a game that, while fun, could passively teach the player while incorporating these elements. This led us to think of games that used eye tracking, such as blinking or following eye movement, as game mechanics. We then remembered that, once in the 60s, a Navy pilot used Morse code with his eyes to blink out "TORTURE" with his captors none the wiser. While we hope that no player experiences something similar, it's clear that knowing Morse code is useful, and also entirely doable with one's own eyes.
Features
- Eye Tracking: The player's eyes are tracked, and a visualization of their eyes is displayed on the screen. Whenever a player intentionally blinks (normal blinks are filtered out), it is either translated to a dot or dash.
- Eye Calibration: The player can adjust the time it takes for a blink to register as a dot or dash by calibrating the times on the home screen.
- Morse Interpretation: The player can blink out Morse code in a sequence to type out a letter, which can then be used to spawn a forest ally to defeat a blighted enemy.
- Pathfinding: Enemies pathfind past obstacles to get towards Lenny, their target. Allies that the player spawns pathfind from Lenny towards an enemy with a matching letter.
- Score and Combo: Every time an enemy is killed, the player earns points. By chaining these kills, the player can reach a combo of up to x5.
- Word Waves: Every 10 kills, a series of enemies spelling out a word appears (SOS, HAT, HELP, ...) to help players learn entire words rather than just letters.
- Online Leaderboard: Players can upload their scores and compete for the top score akin to an arcade machine!
- Accessibility: The player can manually adjust the dot and dash timing for blinking. There's also a keyboard-only mode for players who want to focus on learning Morse code.
- Secret Maps: An easter egg for generating a random set of maps to play on in the home screen.
How we built it
- Engine: Godot 4.7 with GDScript.
- Eye tracking: A Godot Plugin that utilizes Google MediaPipe's Face Landmarker
- Gameplay: Tile maps with obstacles in the form of walls to showcase pathfinding. Spawns rotate across entrances, and word waves place each enemy in the correct reading order. Enemies with longer letters are slower to give players more time to blink.
- 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*.
- Leaderboard: Supabase for the database that holds users' scores, with a local database in case of offline use.
- Art: Everything (from the sprites to the icons and the backgrounds) is hand-drawn and hand-animated by the team, taking design inspiration from Knight Hack IX's design team.
Challenges we ran into
- Balancing: It took a while to determine how many enemies should spawn at a time to make it feel fair to the user without overwhelming them.
- Blink vs. Dash: We initially just had a default time for blinks vs. dashes. We decided to add calibration after testing due to everyone's eyes being different and lighting changes.
- Wall Fighting: Larger sprites would sometimes fight through the tile set's walls, so we had to adjust the code to account for that.
- Enemy and Ally Death: Some issues were present in how enemies and allies were freed after death.
- Camera: The plugin for the eye tracking sometimes didn't work on every Windows machine. We figured out that this was caused by the .gitignore and fixed it within our team.
Accomplishments that we're proud of
- Creating a full game loop where the player only really needs to blink to play.
- Playtesters reported actually being able to learn Morse code after playing just a few rounds.
- Fully hand-drawn and animated artwork throughout the game akin to a storybook.
What we learned
- How to implement computer vision into a game successfully.
- Godot's navigation system, level design, tile maps, and scene management.
- Navigating any issues involving merging while working on parts of the game at the same time.
What's next
- More maps and difficulty that ramps up over time.
- Tougher enemies that need several allies to take down using a health system.
- A practice mode for learning the alphabet before playing.
- Numbers and punctuation, longer words, and full phrases.
- A downloadable file that can run on any operating system.
- An art gallery featuring the assets created by the team.
- A special illustration for reaching a certain high score.
Built With
- godot
- mediapipe
- postgresql
- python
- supabase

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