diff --git a/data/quests.json b/data/quests.json index ea0f2d1..e7a4216 100644 --- a/data/quests.json +++ b/data/quests.json @@ -505,6 +505,33 @@ "difficulty": "Medium", "status": "live" }, + { + "id": "kite-string-and-wind", + "name": "Kite String & Wind", + "shortDescription": "A kite-flying simulation quest that teaches JavaScript debouncing and throttling through wind gust event management and real-time altitude physics.", + "longDescription": "## Kite String & Wind\n\nMaster the art of event handling in JavaScript. In this atmospheric kite-flying simulator, rapid wind gusts pelt your line like high-frequency DOM events (`scroll`, `resize`, or rapid inputs). To keep your kite aloft without crashing, you must master two fundamental control strategies: **Debouncing** (letting out string only after the wind turbulence completely settles) and **Throttling** (executing adjustments at fixed, steady intervals regardless of gust frequency).\n\n### Features\n\n- **Turbulent Wind Event Stream:** Face continuous, unpredictable wind bursts that test how your code filters high-frequency inputs.\n- **Interactive Strategy Switching:** Swap between debounce and throttle control profiles to see how execution math directly alters your kite's altitude and stability.\n- **Real-Time Physics Visualization:** Watch event queues, invocation delays, and execution counts rendered live as tension on the string.\n- **Web Audio Atmospheres:** Dynamic wind howls and tension creaks synthesized entirely via the Web Audio API.\n- **Zero-Dependency Architecture:** A completely self-contained browser quest built natively using Vanilla JS and HTML5 Canvas.", + "category": "js-fundamentals", + "tags": [ + "async", + "debounce", + "events", + "interactive", + "javascript", + "performance", + "quest", + "throttle", + "web-audio-api" + ], + "techStack": [ + "Canvas API", + "CSS3", + "HTML5", + "Vanilla JS", + "Web Audio API" + ], + "difficulty": "Hard", + "status": "live" + }, { "id": "yugen-trail", "name": "Lantern & Rope — The Yūgen Trail", diff --git a/quests/kite-string-and-wind.html b/quests/kite-string-and-wind.html new file mode 100644 index 0000000..7c1c805 --- /dev/null +++ b/quests/kite-string-and-wind.html @@ -0,0 +1,1374 @@ + + + + + +Kite String & Wind + + + + + + +
+ +
+ +
+
+
+ + + +
+
+
A Play-By-Learn Wind Lesson
+

Kite String & Wind

+

Gusts arrive fast and messy — real events almost always do. Answer every single one and the kite spirals out of control. Learn debouncing and throttling by actually flying the kite through real, timed wind — not by answering quizzes.

+
+ + +
+
+
01 · The Chaos
+
02 · Debounce
+
03 · Throttle
+
04 · Choose Your Wind
+
+
+ +
+ +
+
+ + +
+ +
+
+ +
+
+ + Kite String & Wind +
+
+
+ + +
+
+ +
+
+
+
Level 1 · The Chaos
+
Every Gust Answered
+
Loading…
+
+
Altitude0%
+
Turbulence0%
+
+
+
+ + +
+
+
+ +
+
+
wind-handler.js
+
+
+
+
flight log
+
+
+
+
+
+ +
+
+ +

Master Kite Pilot

+

You've flown through real timing — you understand debouncing and throttling from the string, not the syllabus.

+
Naive Handlersdebounce()throttle()Choosing the Right Tool
+
+ + +
+
+
+ + + +
+ + + + \ No newline at end of file diff --git a/quests/kite-string-and-wind.png b/quests/kite-string-and-wind.png new file mode 100644 index 0000000..5e00d3e Binary files /dev/null and b/quests/kite-string-and-wind.png differ