Posted September 19, 2025 by 03c0
#experimental #immersive
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.
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.
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!)
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:
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.
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.
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.
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)
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.