About the Project

This project started as a personal experiment in recreating the tone and tension of the anime visual novels I grew up playing—cute on the surface, unsettling underneath. I wanted to build something that feels familiar at first, then slowly warps into psychological horror as the player realizes the character knows more than she should.


🎨 Inspiration

I’ve always loved classic anime dating sims and story-based visual novels. They usually present warmth, comfort, and predictable character arcs—but I wondered what would happen if the character broke that pattern. If she reacted like something alive. If she got jealous. If she glitched.
This project tries to capture that exact shift from comfort → obsession → fear.


🛠️ How I Built It

The project was built entirely from scratch using Cursor as my development environment. Every mechanic—dialogue flow, phase transitions, glitch effects, audio-reactive lip-sync, and scene logic—was hand-crafted inside a single HTML/JS game loop.

Key tools included:

  • Krea for generating stylized anime character art and backgrounds
  • ElevenLabs for fully voiced dialogue, breath SFX, and horror stingers
  • Cursor for building the game engine, writing the state machine, and rapidly iterating on UI/UX
  • WebAudio API for real-time volume ducking, glitch timing, and lip-sync animation
  • CSS/Canvas effects for screen flickers, white pings, desaturation, and transitions

Each state controls the UI, sprite behavior, audio filtering, and how the player can interact.


🎧 Audio + Visual Pipeline

The art came from Krea prompts designed to stay consistent across multiple emotional variants.
The audio was generated through ElevenLabs.


What I Learned

  • How to architect a scene-driven narrative using a clean, extensible state machine
  • How to merge AI-generated voices with custom timing, glitch effects, and horror pacing
  • How subtle changes in volume, silence holds, and visual timing dramatically affect tension
  • How to make reactive UI that shifts from buttons → tap-to-advance → full lockout as the story escalates

🚧 Challenges

  • Getting browser autoplay policies to cooperate with WebAudio
  • Syncing glitch flashes with audio without frame drops
  • Keeping performance smooth while preloading large Krea PNGs
  • Balancing horror pacing: too much glitching breaks immersion; too little loses impact
  • Making the AI character feel alive without overusing jumpscares

🎬 Final Thoughts

What began as a playful idea—“what if the anime girl gets jealous?”—quickly became a full horror experience built end-to-end with AI tools and a fully custom engine in Cursor.
I learned how to merge design, audio engineering, and storytelling into something that feels reactive, eerie, and alive.

Built With

  • cursor
  • elevenlabs
  • krea
Share this project:

Updates