45 पॉइंट द्वारा GN⁺ 2025-07-05 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • 20 साल के अनुभव वाले software developer होने के बावजूद, game development पहली बार करते हुए AI coding agent की मदद से Phaser.js-आधारित tower defense गेम "Tower of Time" पूरा किया
  • लक्ष्य AI की वास्तविक game development क्षमता को परखना था, और कोड के साथ सभी AI prompts तथा पूरा कार्य-प्रक्रिया GitHub पर दस्तावेज़ित की गई
  • 95% से अधिक कोड AI द्वारा लिखा गया, और Augment Code, Cursor, Claude Sonnet 4 जैसे कई AI tools को साथ में इस्तेमाल किया गया
  • गेम time rewind फीचर पर आधारित रणनीतिक gameplay देता है, जिसमें अलग-अलग towers, energy management system, और wave-आधारित enemy spawns जैसी अनोखी खूबियाँ हैं
  • real-time streaming, art और sound assets का उपयोग, और development के दौरान मिली सीख व practical tips के कारण यह game/AI beginners दोनों के लिए उपयोगी learning material है

Tower of Time का अवलोकन

  • यह project AI coding tools से वास्तविक game development संभव है या नहीं, इसकी पड़ताल करने के उद्देश्य से किया गया
  • Phaser.js नाम के JavaScript game engine को पहली बार सीखकर Beginner's Jam Summer 2025 में भाग लिया गया, और 25–30 घंटे में 'Tower of Time' पूरा किया गया
  • development की पूरी प्रक्रिया, सभी prompts, code, docs और play link को GitHub पर दर्ज किया गया

गेम परिचय

  • Tower of Time एक time travel theme वाला tower defense गेम है, जिसमें खिलाड़ी wave के रूप में आने वाले enemies को रोकता है, और संकट की स्थिति में समय को पीछे घुमाकर रणनीति को फिर से डिजाइन कर सकता है
  • इसमें कई तरह के towers (basic, sniper, slowdown, splash आदि) और energy system (tower बनाने और time rewind में उपयोग) जुड़े हुए हैं
  • मुख्य विशेषताएँ
    • time rewind: प्रतिकूल स्थिति में पिछले state पर लौटकर defense strategy को फिर से व्यवस्थित किया जा सकता है
    • विविध towers: अलग-अलग गुणों वाले towers रखकर कई तरह की defense strategies बनाई जा सकती हैं
    • energy management: resource management का ऐसा तत्व जिसमें energy कहाँ खर्च करनी है, यह सोच-समझकर तय करना पड़ता है
  • controls
    • keyboard/gamepad support (movement: arrow keys/stick, action: space/gamepad button, rewind: backspace/trigger)

AI coding experiment और development process

  • पूरे code का लगभग 95% AI (Claude Sonnet 4, OpenAI, Augment Code, Cursor आदि) से लिखा गया
  • सभी प्रमुख prompts, trial and error, और final outputs को repository में PROMPTS.md के रूप में दर्ज किया गया
  • AI code auto-generation के फायदे: तेज prototyping, दोहराए जाने वाले code work का automation, documentation में आसानी
  • सीमाएँ और सावधानियाँ: AI में code को जरूरत से ज्यादा generate करने की प्रवृत्ति, खास implementation issues आने पर prompt redesign या rollback की जरूरत, और debugging logs का उपयोग करने की सलाह

development से मिली सीख

  • सिर्फ AI coding से भी मज़ेदार गेम पूरा करना पूरी तरह संभव है
  • prompt quality, स्पष्ट context देना, और debugging strategy बेहद महत्वपूर्ण हैं
  • code की मात्रा अनावश्यक रूप से न बढ़े, इसके लिए लगातार जाँच जरूरी है

tech stack

  • engine: Phaser 3 (v3.90.0) + Phaser Editor v4
  • language: TypeScript
  • build tool: Vite
  • art assets: itch.io, कुछ को खुद adjust किया गया
  • sound: freesound.org

ब्राउज़र में खेलें : Tower of Time

3 टिप्पणियां

 
softer 2025-07-07

लगता है यह एक अच्छा reference बनेगा

 
ifmkl 2025-07-06

मैं भी AI का भरपूर इस्तेमाल करके एक web game बना रहा हूँ।

 
GN⁺ 2025-07-05
Hacker News की राय
  • विकास में इस्तेमाल किए गए prompts को एक-एक करके पढ़ने में काफ़ी मज़ा आता है
    "vibe coding की सफलता की कहानियाँ" वाले लेख अक्सर ऐसा भ्रम पैदा करते हैं, मानो बहुत सारे agents, जटिल code orchestration, और LLM से बने rules भर हों तो “time rewind करने वाला tower defense game बनाओ, और उसमें कोई flaw या bug न हो” जैसी एक पंक्ति की prompt से खेल तुरंत बन जाता हो
    लेकिन असली project में इस्तेमाल किए गए prompts, AI coding पर सबसे अच्छी तरह काम करने वाले तरीके से मेल खाते हैं
    साफ़ और बारीक़ी से सोचे गए ideas को सैकड़ों छोटे-छोटे problems में तोड़ना, और सचमुच महत्वपूर्ण हिस्सों पर ठोस architectural guidance देना — यही असरदार तरीका है

    • tech lead और product owner दोनों भूमिकाएँ साथ निभाने वाले व्यक्ति के नाते, इंसानों के साथ काम करते समय भी यही सही तरीका है
      मेरे काम का 70% हिस्सा executives की “time travel tower game, बिना bug के” जैसी अमूर्त माँग को prompts की ऐसी श्रृंखला में बदलना है, जिसमें मज़बूत architectural vision का context हो और team ऊँचे abstraction level को बनाए रखते हुए, बिना एक-दूसरे के काम से टकराए, काम कर सके

    • मैंने Just One board game के लिए एक साधारण HTML game बनाने की कोशिश की, लेकिन input box के हिलने वाले bug को चार अलग-अलग LLMs को बार-बार prompt देने पर भी ठीक नहीं कर पाया
      सब लोग कहते हैं कि वे एक ही बार में पूरा game बना लेते हैं, और मैं text box की movement तक ठीक नहीं कर पा रहा हूँ — यह अजीब लगता है

    • “कोई security flaw नहीं, कोई bug नहीं” prompt के बाद “कोई hallucination नहीं” भी ज़रूरी है
      AI beginners के लिए यह बुनियादी शर्त है

    • AI coding में मेरे लिए जो तरीका अच्छा काम करता है, वह यह है कि पहले base functionality या gameplay skeleton को AI से ‘one-shot’ में बनवाता हूँ, फिर उसके ऊपर कई बार iterative तरीके से layers जोड़ता हूँ
      अगर one-shot result तुरंत प्रभावशाली न लगे, तो मैं तुरंत दूसरी prompt से उसे सुधारता हूँ और जब तक ठीक-ठाक नतीजा न मिल जाए, फिर से कोशिश करता हूँ ताकि एक आधार तैयार हो सके

    • मैं इस तरीके से पूरी तरह सहमत हूँ
      असल में मेरी हाल की पोस्ट भी इसी concept पर आधारित है
      coding से पहले AI से spec लिखवाने पर, इंसान के लिए शुरुआत से spec लिखने का बोझ कम हो जाता है, और उसे वास्तव में लिखे जाने की संभावना बहुत बढ़ जाती है

  • 20 साल से ज़्यादा समय software industry में बिताने के बाद, मुझे लगता है कि हमारे ज़्यादातर सहकर्मी AI coding को लेकर काफ़ी skeptical हैं
    हाल ही में मैंने लगभग 34,000 lines वाले एक बड़े app को मुख्यतः AI से develop करके देखा, और इस दौरान efficiency मेरे निर्देशों की quality, interaction structure, और output पर मैं कितना ध्यान देता हूँ (course correction समेत) — इन सबके अनुसार exponential तरीके से बढ़ती गई
    यहाँ तक लगा कि “आख़िरकार यह भी बाक़ी हर tool जैसा ही है!”
    लेकिन यह tool उन सभी “10x tools” से भी सचमुच 10 गुना ज़्यादा leverage देता है, जिनसे मैं अब तक मिला हूँ
    ज़्यादातर skeptics जिस बात को मिस करते हैं, वह यह है कि इन tools को पूरी तरह external entity की तरह नहीं देखना चाहिए
    अगर आप goal को अस्पष्ट रूप से बताकर काम सौंप देंगे, तो निराशा ही हाथ लगेगी
    शायद कभी AI हमारे विचार सीधे पढ़ सके, लेकिन अभी वह समय नहीं आया है
    अभी इसकी असली ताकत है अपने विचारों को स्पष्ट करना, नई चीज़ें सीखना, और उबाऊ हिस्सों को तेज़ी से निपटाना
    अधिकतम leverage पाने के लिए इस tool को अपनी thinking process में अच्छी तरह शामिल करना होगा

    • मेरा programming career लंबा रहा है, लेकिन high school के दिनों में Hunt the Wumpus के अलावा मैंने कभी game नहीं बनाया था; हाल में AI की मदद से नए games बनाना शुरू किया है
      AI मेरे लिए मुख्यतः तीन भूमिकाएँ निभाता है
      (1) learning tool — यह सबसे महत्वपूर्ण भूमिका है, क्योंकि भले ही मुझे terminology न पता हो, यह मेरे सवाल का मतलब समझकर शुरुआत का बिंदु देता है, और ‘जो मुझे नहीं पता था’ वह भी बता देता है
      (2) repetitive या boring काम — code comments, config files लिखना वगैरह मैं खुद भी कर सकता हूँ, लेकिन AI ऐसी चीज़ें ठीक-ठाक कर देता है जो मेरी रफ़्तार धीमी करतीं
      (3) search — (1) की तरह, AI समझ लेता है कि मैं वास्तव में क्या चाहता हूँ और filtering या recommendations जैसी चीज़ें संभाल लेता है
      AI को “सोचना” भी सौंपा जा सकता है, लेकिन उसकी ज़रूरत नहीं है
      वह इंसान से ज़्यादा बुद्धिमान नहीं है; बस FPU की तरह तेज़ है और ज़्यादा जानता है

    • HN के मानकों से मैं काफ़ी skeptical हूँ, लेकिन व्यवहार में मैं कंपनी में AI adoption को लगातार आगे बढ़ा रहा हूँ, और यह पोस्ट भी अभी Claude से कुछ काम करवाते हुए लिख रहा हूँ
      मेरी skepticism की वजह, मौजूदा AI solutions को “जैसे बेचा जा रहा है” और “वे असल में क्या करते हैं” — इनके बीच का फ़ासला है
      सभी AI solutions, ख़ासकर agents, किसी skilled व्यक्ति की guidance के बिना बेकार नतीजे ही देते हैं
      इनमें वास्तव में “autonomous” जैसा बहुत कम है
      ‘vibe coding’ शब्द गढ़ने वाला व्यक्ति भी कहता है कि industry चीज़ों को उल्टे क्रम में कर रही है
      यह सही है कि ये tools शानदार हैं, लेकिन यह छोड़ देना कि इन्हें कड़े नियंत्रण में रखना ज़रूरी है, लगभग झूठ बोलने जैसा है

    • पिछले कुछ महीनों में मैं भी लगभग इसी निष्कर्ष पर पहुँचा हूँ
      पहले मैं AI को लेकर आलोचनात्मक टिप्पणियाँ करता था, लेकिन नए tools सचमुच बहुत बेहतर हो गए हैं
      जिन कामों में पहले कई हफ़्ते लगते थे, वे अब कुछ घंटों में हो जाते हैं
      हाँ, prompts को अच्छी तरह सोचना पड़ता है, उन्हें बारीक़ हिस्सों में तोड़ना पड़ता है, और IDE के साथ बढ़िया integration भी ज़रूरी है
      सबसे revolutionary हिस्सा तब होता है जब आप किसी बिल्कुल नई library या framework के साथ काम कर रहे हों
      पहले मैं usage ढूँढने के लिए search करता था और example code को तोड़-मरोड़कर इस्तेमाल करता था; AI अक्सर उससे कहीं ज़्यादा intuitive और विविध तरीके सुझाता है, जो कई बार चौंका देता है
      जो लोग अब भी skeptical हैं, उनके लिए इसे फिर से आज़माने का समय आ गया है

    • 10x leverage का एक उदाहरण language भी हो सकती है
      पहले कहा जाता था कि Lisp जैसी languages आपको ज़्यादा काम तेज़ी से करने देती हैं; अब हाल यह है कि आपको खुद कम code लिखना पड़ता है, और फिर भी output तेज़ और high-performance language में generate हो सकता है
      लेकिन इसमें एक ‘trap’ है: generated code के उन हिस्सों की अच्छी तरह समीक्षा करनी पड़ती है जिन्हें आसानी से verify नहीं किया जा सकता
      जैसे high expressiveness वाली languages ने बिना upfront planning वाले लोगों को messy codebases बनाने दिए, वैसे ही AI tools के साथ भी यह फिर होगा
      लेकिन जहाँ मेरा सचमुच समय बचता है, वह बिल्कुल नया code लिखने की तुलना में पुराने और नए code को integrate या improve करना है
      debugging में बड़ा jump आया है
      पहले की तरह सिर्फ print लगाने के बजाय, अब code copy-paste करके सीधे AI से पूछ सकते हैं: “output ऐसा नहीं बल्कि वैसा क्यों आ रहा है?” — और जल्दी कारण व विकल्प मिल जाते हैं
      ख़ासकर SQL, IaC, build scripts जैसी चीज़ों में, जहाँ debugger लगाना मुश्किल होता है, यह तरीका बहुत बड़ा फ़ायदा देता है

    • एक और बात, learning curve और difficulty ceiling सोच से कहीं ज़्यादा ऊँची है
      Claude Opus को किसी complex automation framework के रूप में इस्तेमाल करने और browser में GPT-4o के साथ सिर्फ copy/paste करने के बीच नतीजों का फ़र्क़ बहुत बड़ा है

  • development process को transparently public करना और prompts तक share करना बहुत बढ़िया लगा, इसलिए GitHub पर star दे दिया

  • code और final result, दोनों ही बहुत सुंदर लगते हैं
    साफ़ है कि इसमें सिर्फ AI नहीं था; आपने खुद भी काफ़ी योगदान दिया होगा
    मैंने coding से लंबा break लिया था, फिर दोस्तों के कहने पर AI का इस्तेमाल करके कुछ simple code बनाए
    जो बनाया, वह बस Bubble Wrap फोड़ने वाला और Silencer (button दबाने पर sound बंद) जैसा था
    Bubble Popper
    Silencer

    • मैंने इसे Android के Chrome में चलाया, लेकिन bubbles सही से नहीं फूटते और count भी 0 से आगे नहीं बढ़ता
      क्या PRs लेने का कोई इरादा है?
  • indie games, coding AI के लिए एक शानदार use case लगते हैं
    कम risk और fun-focused nature इसके लिए बिल्कुल सही बैठती है
    पहले commit में बहुत सारा code शामिल है, लेकिन PROMPTS.md अभी नहीं है
    उदाहरण के लिए EnergySystem.ts पहले commit में ही मौजूद है, लेकिन बाद में PROMPTS.md में ऐसा लगता है जैसे AI ने इसे शुरुआत से बनाया हो
    क्या आप repository history के इस हिस्से को थोड़ा और विस्तार से समझा सकते हैं?
    पहले commit का लिंक

    • यह project एक game jam submission था, इसलिए 1 हफ़्ते की deadline के हिसाब से शुरुआती 2–3 दिनों तक मैंने source control इस्तेमाल नहीं किया, और उसी दौरान का काम बाद में एक बड़े commit में डाल दिया
      prompts भी मैंने उसी समय नहीं लिखे थे; game पूरा होने के बाद, मैंने इस्तेमाल किए गए chat tool की history खंगाली और उन्हें PROMPTS.md फ़ाइल में copy किया
      अगर आप project creation process देखना चाहते हैं, तो prompt file को शुरू से अंत तक पढ़ना सबसे अच्छा तरीका है
      उदाहरण के लिए, EnergySystem.ts वह हिस्सा है जिसे AI ने enemy pathfinding, spawning, tower firing वगैरह लागू हो जाने के बाद “मैं energy subsystem implement करना चाहता हूँ” वाली prompt के जवाब में पूरी तरह नया बनाया था
  • Augment Code नाम के tool के बारे में पहली बार सुन रहा हूँ
    यह क्या करता है, आपने इसे क्यों चुना, competitors से इसका क्या फ़र्क़ है, और आपका actual अनुभव कैसा रहा — क्या आप इसे recommend करेंगे?

    • इस सवाल में जोड़ते हुए, मैं यह भी जानना चाहूँगा कि क्या OP ने Cursor के अंदर Augment Code इस्तेमाल किया था, यह combination कैसे काम करता है, और इसके क्या फ़ायदे हैं
      क्या आपने दोनों का paid subscription लिया था?
  • prompts को रिकॉर्ड करना प्रभावशाली भी है और प्रेरक भी
    मेरे अनुभव में ‘vibe coding’ कभी बहुत तेज़ी से आगे बढ़ती है, तो कभी पूरी तरह धीमी पड़ जाती है
    अगर आपके पास concise और clear instructions देने की क्षमता, तेज़ code review, और architecture को समझने की योग्यता है, तो यह सचमुच development speed बढ़ा सकती है

  • मैंने भी कभी एक tower defense game बनाया था, और हाल में सोच रहा था कि AI का इस्तेमाल करके नई waves generation और balance tuning जैसी चीज़ें आज़माऊँ
    अगर game को AI के लिए “महसूस” कराना है, तो शायद ऐसा protocol चाहिए होगा जो screen पर दिख रही game state को tokens में बदलकर encode करे
    जैसे terrain, game entities की positions, और वे दूसरे attributes जो player देख सकता है
    पूरे दृश्य को autoencoder में डालना शायद अच्छा विचार न हो, लेकिन game elements की list को tokenize करना संभव लग सकता है
    अगर game engine screen images दे और tokens को सीधे AI के सामने खोल दे, तो AI शायद actual gameplay situation को ज़्यादा गहराई से समझ पाएगा
    इन tokens का सही उपयोग करने के लिए कितने training set की ज़रूरत होगी, यह स्पष्ट नहीं है, लेकिन हो सकता है मौजूदा embedding space में ही इसे कुछ tokens में व्यक्त किया जा सके
    अगर game logs और users की fun ratings वाला training set मिल जाए, तो काफ़ी दिलचस्प data निकल सकता है
    player preference clusters खोजकर अलग-अलग प्रकार के players के लिए games बनाना भी संभव हो सकता है

  • यह workflow share करने के लिए धन्यवाद
    मैं भी LLM workflows में traceability और transparency लाने के बारे में सोच रहा हूँ
    prompts को share करना और history के रूप में सहेजना इसलिए भी फ़ायदेमंद है कि इससे developer की शुरुआती मूल समस्या, फिर वह समय के साथ कैसे बदली, और कौन-कौन से नए issues उभरे — यह सब एक नज़र में दिख सकता है
    बहुत बढ़िया project है
    ज़िम्मेदार LLM उपयोग पर पोस्ट

  • 20 साल से ज़्यादा समय tech में बिताने के बाद, मैं हाल में Gemini-cli के साथ enterprise app integration testing tool को gamify करते हुए तरह-तरह के experiments कर रहा हूँ
    MCP server के साथ मिलाकर देखने पर, सबसे अच्छे नतीजे तब मिले जब problems को step-by-step छोटे हिस्सों में तोड़ा और prompts में clarity बढ़ाई
    AI गलतियाँ कर सकता है या loop में फँस सकता है (ख़ासकर app routing जैसी चीज़ों में), और ऐसे समय में सक्रिय ‘pair programming’ mindset के साथ काम करना उपयोगी रहता है
    एक और चीज़ जिस पर मेरा ध्यान गया, वह यह है कि code duplication से बचने जैसे principles को अब पहले से कहीं ज़्यादा आसानी से बनाए रखा जा सकता है
    वरना AI किसी एक हिस्से को बदल देगा और जुड़े हुए files छूट सकते हैं
    यह सिर्फ programming logic पर नहीं, बल्कि UX और app behavior पर भी उतना ही लागू होता है
    AI के साथ अब वे काम, जिनमें पहले कई हफ़्ते लगते थे, कुछ घंटों में आनंद से पूरे हो सकते हैं
    Gemini को personality देना, और GEMINI.md फ़ाइल को कई devices पर जैसे-का-तैसा ले जाकर tune कर पाना, एक बहुत बड़ा फ़ायदा है