72 hours, one blink at a time


BuiIt in a blur: The making of Oculohedron

3 days. Zero sleep. One blinking labyrinth.

Last weekend, I joined my first ever game jam and submitted Oculohedron: a perception-based puzzle game where blinking reshapes the world around you.

It was emotional. Intense. Honestly a bit chaotic. But also the most creatively fulfilling thing I've done in a while.

What went right

Blink detection across platforms: Managed to get local webcam-based blink detection working natively and for web builds.

Strong core concept: The central mechanic, blinking to shift space really clicked with people. It felt novel, mysterious, and surprisingly intuitive.

Modular level design: Built reusable room templates and rotators that let me prototype weird levels quickly.

Web build actually worked: That alone felt like a small miracle.

What went wrong

Burned the midnight oil: It was my first time with both game dev and Godot. The 3-day sprint was intense, and by the end, I was running on fumes.

Procedural generation was a trap: Spent hours on a level gen system… then scrapped it. Went with handcrafted rooms. Still kept one broken gen level because it fit the theme.

Performance issues: Early builds chugged hard until I aggressively optimized lighting, dropped baked decorations, and A LOT of failed experiments.

Controller support and key rebindings were an afterthought (but added post-jam!)

Player feedback & Insights

This was meant to be a jam prototype and nothing more. 

The feedback from the jam has been incredibly encouraging not just emotionally, but also directionally.

Here's what stood out most:

What resonated

  • The core mechanic:  blinking as input LANDED. Even players who didn’t use a webcam appreciated the novelty of the idea. That was reassuring, especially since it was a slightly "risky" input choice.

  • The vibe and concept felt fresh. Multiple players called it "innovative" or "cool" even with the visual limitations. That told me the idea was strong enough to carry the experience.

  • Webcam integration in the browser surprised people. A few folks mentioned they didn’t even know it was possible to detect blinks through a web build. This gave the game a bit of a "how is this real?" effect, which I’ll admit was super satisfying.

What needs work

  • Visuals and audio need leveling up. Nearly everyone agreed that the aesthetic foundation is there, but it needs polish. Players wanted more atmosphere: eerie lighting, unsettling soundscapes, and stronger visual cohesion to match the concept.

  • There's ambiguity around the game loop. Some players weren’t quite sure what the goal was, or how their actions were progressing the game. The feedback loop: blink, something changes, now what? It needs to be clearer and more rewarding.

  • Blinking as a mechanic has physical limits. A few folks mentioned eye strain or fatigue. While the mechanic is novel, it needs balance: maybe optional cooldowns, alternate input modes, or clearer pacing to avoid overuse.

Takeaways

This was my first jam, and I went into it expecting chaos and got that, sure but what I didn’t expect was how much meaningful insight could come from a few lines of honest feedback.

It’s clear now that the concept is solid enough to build on. The technical execution was "good enough" for a jam, but it has a lot of holes.

What started as a weird tech experiment now feels like a prototype for something deeper, more atmospheric, and more player-focused.

That was all I needed to hear.

So I'm continuing. Slowly. Thoughtfully. But I want to see how far this weird blinking idea can go.

Tech stack (for the nerds)

Engine: Godot 4.2

Shaderless visuals: Emissive + baked environment lighting + volumetric fog

Modular room system: Built with reusable room scenes

Custom web build tooling: Python scripts to inject scripts in the Godot Web builds export pipeline (never again)

What I'm working on next

Even though the jam timer ran out, I couldn’t stop tinkering. Here's what I dove into right after submitting:

  • Player fall detection + respawn system: Falling into the void no longer means soft-locks or game overs. I added thresholds that trigger warnings and auto-respawn with subtle UI feedback. The jam version accidentally turned into a roguelike... this fixes that :(

  • Blink-triggered respawn: You can now blink to respawn after falling. Mechanically consistent, thematically satisfying.

  • Controller support + key rebinding: Fully functional and flexible, you can remap controls and play with a gamepad now. (huge props to @Quinten for showing his keyboard layout :D)

  • Performance tuning & tweaks:

    • Swapped out heavy autogenerated mesh colliders with hand-made ones for better performance.

    • Added an in-game FPS counter.

    • Reverted unnecessary baking that was hurting load times.

    • Dropped web-specific tooling for now to focus on a smooth native build experience.

  • Polished transitions: Improved the visual flow of blinking in/out, especially when respawning. Small touches, big feel.

Here’s what I’m building toward, post-jam:

  • Smarter blink mechanics: The current blink system is solid, but I want to push it further.

  • Lore delivery: Right now, the game runs on vibes and implied mystery. I'm exploring:

    • Environmental storytelling

    • Symbolic clues etched into geometry

    • Audio logs or fragments of text that deepen the mythos

  • Better feedback loop: Enhancing feedback with visual cues, ambient shifts, and spatial audio.

  • Playable release: My current goal is a tightly paced, ~30-minute standalone version. Polished. Atmospheric. Mechanical depth without overstaying.

Get Oculohedron

Leave a comment

Log in with itch.io to leave a comment.