About the project

  • Inspiration: A calm, “mindless but joyful” tap game you can play right inside a Reddit post—soft colors, tiny wins, and zero friction.

  • What I learned:

    • Devvit Web app lifecycle and embedding UX on Reddit.
    • Canvas rendering at device pixel ratio, hit-testing, and pointer events.
    • Web Audio constraints (user-gesture unlock) and tiny synth design.
    • Gentle difficulty curves using simple easing: (v(t)=v_0+(v_1-v_0)\left(\tfrac{t}{T}\right)^2).
  • How I built it:

    • TypeScript + Vite, single-canvas renderer in src/client/main.ts.
    • Seeded RNG for daily variety, subtle sway, depth sorting by radius.
    • Web Audio API for short “pop” envelopes; haptics on mobile.
    • Lightweight server endpoints for init/user context via Devvit Web.
  • Challenges:

    • State initialization race (results overlay appearing early) and robust state gating.
    • Accurate hit-tests with DPR scaling and multi-touch.
    • Audio autoplay policies; ensuring AudioContext resumes on first gesture.
    • Realistic bubble look (iridescence, rim light, soft transparency) without images.
    • Balancing “zen” with a late-session sprint; keeping spawns off UI and on-screen.

Built With

Share this project:

Updates