Every October, code turns a little spooky. Bugs crawl out of functions, and CSS ghosts refuse to stay aligned. This year, I decided to turn that chaos into play — and built “Pudgy the Debugging Devil”, a tiny Halloween-themed micro-game where you tap candy and squash bugs falling from the void.
⚙️ Tech Stack
HTML5: Structured the entire game environment — terminal screen, score counters, and game area — with clean semantic tags.
CSS3 + Animations: Used keyframes to make ghosts and candies fall, added glowing effects and responsive scaling using clamp().
Vanilla JavaScript (ES6):
Controlled spawn rate and timing.
Managed the game loop for falling objects.
Handled touch and click events for both desktop and mobile.
Updated and rendered the score dynamically.
Responsive Design: The layout flexes with the viewport, keeping the terminal readable on both mobile and widescreen.
No Libraries, No Frameworks: Just pure web fundamentals — to prove that creativity doesn’t need dependencies.
🧠 How I Built It
I started with a simple idea: what if debugging felt like catching bugs for candy?
From there, I drafted the HTML skeleton — one section for the terminal animation, one for the game area. The terminal would “type out” code lines to set the atmosphere, while the game area would continuously spawn candies and bugs.
Then came animation — CSS keyframes did most of the magic. I added a smooth fall motion with randomized starting points, so each bug had a unique path. The colors, shadows, and tiny glow made the scene feel alive, like an arcade in a code editor.
Finally, JavaScript connected everything.
Every second, a new object dropped — candy or bug. Each click increased your score, triggering a satisfying removal of that element. I kept it lightweight, so it could run even on slower phones.
🚀 The Journey
At first, it was supposed to be a static Halloween art page. Then I thought, why not make it interactive?
That shift — from static design to dynamic experience — taught me more than I expected:
How to use timers (setInterval) efficiently without blocking performance.
How to handle touch events for mobile, not just mouse clicks.
The importance of visual hierarchy — a blurred scoreboard, a dark background, a glowing terminal — so even chaos has structure.
That simplicity, when designed well, feels sophisticated.
I iterated in CodePen, experimenting with animation speed, drop height, and object count until the flow felt right — chaotic but balanced.
💡 What I Learned
Micro-interactions matter. Small details — typing effects, easing curves, glow shadows — make users feel the polish.
Performance over perfection. Fancy effects mean nothing if the frame rate drops. Efficient DOM cleanup keeps the magic smooth.
Accessibility starts small. Adding touch events and readable counters helped more people interact with it.
Vanilla JS is underrated. No React, no frameworks — just logic, structure, and style. It felt refreshing.
🎬 Demo
🔗 Play it here on CodePen →
Live Demo
🎯 Closing Thought
This project reminded me that front-end development is equal parts art and engineering.
A few lines of CSS can turn logic into emotion. A few bugs can turn into candy.
Sometimes, the scariest code just needs a little light.
Top comments (12)
Great work! 👍🏻Good luck in the competition!
Thanks You Too
Really Good Work
Thanks You Toooo
Very sweet game 🥰 Great job 👏🏻
😁, Thank You ♥
Outstanding Bro
Thank You
🔥🔥🔥🔥
Thank You ♥ ♥
Some comments may only be visible to logged-in visitors. Sign in to view all comments.