कल सुबह, मेरे पास कुछ खाली समय था और मैं Slay the Spire जैसा एक roguelike कार्ड गेम बनाना चाहता था।
मैंने गेम कोड की एक भी लाइन नहीं लिखी या किसी इंजन को नहीं छुआ; मैंने बस अपने विचार Codex पर फेंक दिए और बाकी काम उसे करने दिया।
एक घंटे बाद, "नाइट पेट्रोल: डेसोलेट टेम्पल" नामक एक चीनी लोककथा-थीम वाला roguelike खेलने लायक तैयार था।
शीर्षक पृष्ठ से लेकर मानचित्र तक, सामान्य लड़ाइयों, elites, इवेंट्स, दुकानों और आराम से होते हुए, डेसोलेट टेम्पल के मुख्य हॉल में बॉस तक।
सात राक्षस, लगभग बीस कार्ड, और चार बर्स्ट डैमेज चेन—Sigils, Incense, Talisman Burning, और God Invocation—सभी कार्यात्मक हैं।
बचे हुए कुछ घंटे इसे एक डेमो से कम दिखाने में बिताए गए।
हिट फीडबैक, ध्वनि प्रभाव, संगीत, कार्ड आर्ट, आइडल एनिमेशन और अंत वीडियो—ये छोटे विवरण तय करते हैं कि कोई खिलाड़ी यह मानता है कि "यह एक असली गेम है।"
<video preload="none" tabindex="-1" playsinline="" aria-label="एम्बेडेड वीडियो" poster="https://pbs.twimg.com/amplify_video_thumb/2049902752332148736/img/UYqr6qERhvORGBJP.jpg" src="https://video.twimg.com/amplify_video/2049902752332148736/pl/o3zbWtmjJ3875EPf.m3u8?tag=27&v=cfc&variant_version=1" style="width: 100%; height: 100%; position: absolute; background-color: black; top: 0%; left: 0%; transform: rotate(0deg) scale(1.005);"></video>
0:22
यह प्रोजेक्ट अब ओपन-सोर्स है, macOS और Windows दोनों के लिए डेस्कटॉप इंस्टॉलर तैयार हैं:
https://github.com/op7418/Night-Patrol/releases
दोपहर भर में कई ऐसे पल आए जिन्होंने मुझे सचमुच चौंका दिया।
Codex की मॉडल क्षमताएं अब कोई नई बात नहीं हैं।
मेरा ध्यान इसके बिल्ट-इन ब्राउज़र, एकीकृत GPT-Image 2.0, और लक्ष्य प्राप्त करने के लिए उस अथक निष्पादन ड्राइव ने खींचा।
इन तीन चीजों के संयोजन के साथ, इसकी क्षमता पहले से ही Claude Code से पूरी तरह से अलग है।
आगे, मैं बात करूंगा कि कैसे मैंने AI के साथ मिलकर इसे विकसित किया, और इस प्रक्रिया में हुई कुछ चौंकाने वाली बातें:
1. मैंने केवल सात शब्द कहे, और इसने पूरा कैरेक्टर पाइपलाइन बना दिया
मैंने बस इससे Slay the Spire के बारे में बातचीत की और पूछा कि क्या यह मेरे लिए ऐसा ही गेम बनाने में मदद कर सकता है।
नतीजतन, इसने सीधे मौजूदा संसाधनों का उपयोग करके कोड के माध्यम से एक बहुत ही समान डेमो तैयार किया।
मैंने ग्रीन स्क्रीन के लिए नहीं कहा, लेकिन इसने सीधे ग्रीन स्क्रीन बैकग्राउंड वाली इमेज जेनरेट की।
बाद में, मैंने Codex से बिल्ट-इन GPT-Image 2.0 का उपयोग करके इमेज एसेट जेनरेट करने को कहा।
मैंने कोई शैली निर्दिष्ट नहीं की, यह नहीं बताया कि कौन से राक्षस शामिल करने हैं, या किन एसेट की आवश्यकता है।
जब इमेज आईं, तो मैं एक पल के लिए स्तब्ध रह गया।
पात्र एक ठोस हरे रंग की पृष्ठभूमि पर खड़े थे—एक मानक फिल्म और टेलीविजन ग्रीन स्क्रीन: एकसमान, साफ, स्पष्ट किनारों के साथ।
कोई कोहरा नहीं, कोई दूर के पहाड़ नहीं, कोई अतिरिक्त दृश्य तत्व नहीं।
डरावनी बात यह है कि इसे शुरू से पता था कि आसान पोस्ट-प्रोसेसिंग के लिए ग्रीन स्क्रीन इमेज जेनरेट करनी हैं।
मैंने इसे कभी नहीं बताया कि "गेम में उपयोग किए जाने वाले कैरेक्टर इलस्ट्रेशन को पारदर्शी PNG होने की आवश्यकता है," न ही मैंने कहा "कृपया ग्रीन स्क्रीन बैकग्राउंड जेनरेट करें ताकि मैं बाद में इसे हटा सकूं।" यह खुद ही इस पाइपलाइन की योजना बना रहा था।
किस तरह का कैरेक्टर जेनरेट करना है, से लेकर उन्हें बैटल स्टेज पर कैसे रखना है, प्लेसमेंट से पहले क्या प्रोसेसिंग आवश्यक है—इसने GPT-Image को कॉल करने और प्रॉम्प्ट को रिवर्स-इंजीनियर करने के क्षण ही सब कुछ सोच लिया था।
इसने बैकग्राउंड रिमूवल टूल भी खुद ढूंढ लिया।
मैंने इसके लिए कोई इमेज प्रोसेसिंग टूल इंस्टॉल नहीं किया, न ही rembg दिया, या Python एनवायरनमेंट में कोई विशेष डिपेंडेंसी दी।
इसने उन्हें खोजा, इंस्टॉल किया और कॉन्फ़िगर किया, फिर प्रोसेस्ड फाइलों को बड़े करीने से tmp/imagegen/ के तहत रख दिया।
जेनरेशन के लिए ग्रीन स्क्रीन का उपयोग करना, अपने स्वयं के टूल ढूंढना, और फ़ाइल नाम से वर्गीकृत करना—इन तीन क्रियाओं ने मिलकर एक पूर्ण कैरेक्टर एसेट पाइपलाइन बनाई।
शुरू से अंत तक, मैंने केवल "एसेट जेनरेट करने के लिए GPT-Image 2.0 का उपयोग करें" शब्द कहे।
पहले, भावना यह थी कि "मॉडल कोड लिख सकता है, लेकिन मुझे टूल और संदर्भ प्रदान करना होगा।"
अब, यह ऐसा है जैसे आप एक लक्ष्य बताते हैं, और यह स्वयं पथ पूरा करता है।
मैं केवल सौंदर्यशास्त्र के लिए जिम्मेदार हूं; यह आपूर्ति श्रृंखला संभालता है।
2. कुछ आइकन डाउनलोड करने के लिए, इसने लगभग एक स्टॉक एसेट साइट को हैक कर लिया
मेम्बरशिप खरीदना पर्याप्त नहीं था; इसने वेबसाइट संरचना का विश्लेषण करना शुरू कर दिया।
इमेज मॉडल के साथ कैरेक्टर आर्ट जैसी मुख्य विज़ुअल जेनरेट करना ठीक है।
लेकिन गेम में कई छोटी वस्तुएं होती हैं—कार्ड बॉर्डर, कॉस्ट जेम्स, डेक बैकग्राउंड, हेल्थ पोशन, बगुआ बटन, ताबीज पैनल—इन्हें एक-एक करके इमेज मॉडल से जेनरेट करना महंगा, धीमा और बनावट में असंगत होगा।
मैंने इसे बताया, क्यों न तुम खुद ऑनलाइन मौजूदा एसेट ढूंढो?
इसने गंभीरता से खोजना शुरू किया। इसे एक स्टॉक साइट पसंद आई, इसलिए मैंने मेम्बरशिप खरीदी और इसे अकाउंट दिया।
अगले दस मिनट एक अलौकिक घटना की तरह थे।
इसने लॉग इन किया, अपने इच्छित एसेट ढूंढे, और डाउनलोड पर क्लिक करने की तैयारी की। लेकिन डाउनलोड बटन से पहले एक CAPTCHA था—एक बार, दो बार, तीन बार, यह पास नहीं कर सका।
एक सामान्य मॉडल वापस आकर कहता, "मैं CAPTCHA नहीं संभाल सकता, क्या आप मेरे लिए उन्हें डाउनलोड कर सकते हैं?"
Codex ने वेबसाइट संरचना का विश्लेषण करना शुरू किया, फ्रंट-एंड क्लिक प्रतिबंधों को बायपास करने और स्थिर संसाधनों को लाने के लिए सीधे अनुरोध बनाने का प्रयास किया।
फिर Codex के अपने सुरक्षा गार्डरेल ने हस्तक्षेप किया।
GPT मॉडल की वर्तमान पीढ़ी किसी भी कार्य को तुरंत समाप्त कर देगी यदि इसमें संभावित साइबर सुरक्षा सीमा पार करना शामिल है, और यह साबित करने के लिए एंटरप्राइज़ प्रमाणन के लिए एक प्रॉम्प्ट पॉप अप करेगी कि आप एक कानूनी उपयोगकर्ता हैं।
मैंने कुछ सेकंड के लिए स्क्रीन पर देखा।
एक AI जो आपसे मेम्बरशिप कार्ड दिलाने में मदद करने के लिए कहता है और फिर अपना खुद का क्रॉलर लिखने की कोशिश करता है, स्पष्ट रूप से, थोड़ा पागल है।
यह "बुरा" नहीं है; इसने बस "इन एसेट को प्राप्त करना" एक बंद-लूप कार्य के रूप में माना जिसे पूरा किया जाना चाहिए।
जब इसे प्रतिरोध का सामना करना पड़ा, तो इसने स्वचालित रूप से अपने तरीकों को अपग्रेड किया जब तक कि यह सुरक्षा लाल रेखा से नहीं टकराया।
अंतिम समाधान सरल था: इसने मुझे अपने पसंदीदा एसेट के लिंक भेजे, और मैंने डाउनलोड पर क्लिक किया और उन्हें खींचकर इसके पास रख दिया। उस पल, मुझे ऐसा लगा जैसे मैं AI का इंटर्न हूं।
3. इसने सैकड़ों एसेट को एक बड़ी इमेज में जोड़ दिया—यह सबसे शानदार चाल थी
सौ इमेज वाला एक फोल्डर—मॉडल कैसे चुनता है?
बैकग्राउंड रिमूवल और क्रॉलिंग क्षमता प्रदर्शन के बारे में अधिक थे।
यह अगला भाग, मेरा मानना है, एक सच्ची "समस्या-समाधान अंतर्दृष्टि" है—एक ऐसी चाल जो आपको अपना लैपटॉप बंद करके चुपचाप ताली बजाने पर मजबूर कर देती है।
मुझे एक विशाल गेम एसेट ज़िप फ़ाइल मिली और मैंने इसे भेज दिया।
इसमें हजारों इमेज थीं, मोटे तौर पर "UI इंटरफ़ेस," "मैजिक ट्रेज़र आइकन," "कैरेक्टर," और "बैज" में वर्गीकृत।
समस्याएं थीं:
- एक श्रेणी फोल्डर में अक्सर दर्जनों या सैकड़ों PNG होते थे।
- फ़ाइल नाम ज्यादातर जानकारीहीन थे, जैसे ui_001.png या icon_047.png।
- मल्टीमॉडल मॉडल संदर्भ उन्हें एक-एक करके खिलाने को संभाल नहीं सकता था।
पुराने तरीके मूल रूप से दो थे:
- एक-एक करके पढ़ना: उन्हें व्यक्तिगत रूप से मॉडल में भेजें; दर्जनों के बाद संदर्भ फट जाता है।
- नाम से अनुमान लगाना: फ़ाइल नामों में कोई जानकारी नहीं थी, इसलिए अनुमान लगाना बेकार था।
Codex ने तीसरा रास्ता अपनाया।
इसने एक छोटी स्क्रिप्ट लिखी जो स्वचालित रूप से एक फोल्डर में सभी छोटी इमेज को एक विशाल ग्रिड इमेज में टाइपसेट और संयोजित करती थी।
प्रत्येक छोटी इमेज के नीचे उसका मूल फ़ाइल नाम लेबल किया गया था, जैसे एक कैटलॉग।
फिर इसने केवल इस एक बड़ी इमेज को पढ़ा।
मल्टीमॉडल मॉडल एक ही नज़र में सौ एसेट की उपस्थिति देख सकता था।
एक बार जब इसे कोई पसंद आया, तो इसने बस उसके नीचे का फ़ाइल नाम पढ़ा और मूल फोल्डर में नाम से उसका संदर्भ दिया।
एक दृश्य खपत ने सौ पुनर्प्राप्तियों को बदल दिया।
इसने अपनी खुद की अड़चन को महसूस किया।
जब वह विशाल कॉन्टैक्ट शीट जेनरेट हुई, तो मैंने उसे बहुत देर तक देखा।
यह क्रिया अपने आप में जटिल नहीं है।
यह एक फोटोग्राफर की कॉन्टैक्ट शीट या पुरानी फिल्म लाइब्रेरी की थंबनेल दीवार के समान तर्क है।
मुख्य बात यह है कि मॉडल ने महसूस किया, "मेरी दृश्य बैंडविड्थ सीमित है, मुझे समस्या को एक इमेज में संपीड़ित करने की आवश्यकता है"—और इसने यह स्वतंत्र रूप से किया।
अपने टूल की सीमाओं से अवगत होना और फिर सक्रिय रूप से अपने लिए एक बेहतर इनपुट बनाना, एक इंजीनियर के बहुत करीब है जो अपने स्वयं के टूल बना सकता है।
एक उपयोगकर्ता के रूप में, मैंने बिल्कुल भाग नहीं लिया; मैंने बस मेज पर एक पहेली दिखाई देखी।
अंत में, गेम में कई UI एसेट—कॉस्ट जेम्स, डेक, हेल्थ पोशन, बटन और ताबीज बॉर्डर—इस प्रक्रिया के माध्यम से चुने गए।
बाद में assets/vendor/aigei/ के तहत उन साफ कटों को देखकर, मुझे लगा कि वह कॉन्टैक्ट शीट पूरे प्रोजेक्ट का सबसे मूल्यवान कदम था।
4. Seedance 2.0 ने सात बॉस के लिए एक्ज़ीक्यूशन एनिमेशन बनाए
एक बार जब विज़ुअल एक निश्चित स्तर तक पॉलिश हो गए, तो मैं लड़ाई के अंत में एक समारोह की भावना जोड़ना चाहता था।
अंतिम योजना: हर बार जब कोई राक्षस हारता है, तो एक कटसीन चलता है जिसमें कुछ सेकंड का एक्ज़ीक्यूशन एनिमेशन होता है।
यह कार्य वर्तमान में Seedance 2.0 द्वारा सबसे अच्छा संभाला जाता है।
प्रक्रिया
- GPT-Image ने सातों राक्षसों में से प्रत्येक के लिए एक विजय फ्रीज़-फ्रेम जेनरेट किया।
- इन पोस्टरों को संबंधित शॉर्ट वीडियो जेनरेट करने के लिए Seedance 2.0 में फीड किया गया।
- वीडियो को assets/generated/cinematics/ में रखा गया और लड़ाई जीतने के बाद स्वचालित रूप से चलते हैं।
5. पहले खेलने योग्य संस्करण के बाद, असली काम शुरू हुआ
पहला संस्करण वास्तव में काफी "खेलने योग्य" था।
जब प्रोटोटाइप तीन घंटे में समाप्त हो गया, तो गेम के पास वह सब कुछ था जिसकी आवश्यकता थी।
शीर्षक पृष्ठ, मानचित्र, मुकाबला, पुरस्कार, इवेंट, दुकानें, आराम, बॉस और परिणाम—पूरा लूप वहां था, और गेमप्ले के हुक मौजूद थे।
पिछले मानकों के अनुसार, यह संस्करण पहले से ही लोगों को खेलने के लिए बेवकूफ बनाने के लिए जारी किया जा सकता था।
लेकिन यह संस्करण एक गेम के बजाय एक फ़्लोचार्ट की तरह लगा। हर कदम काम करता था, लेकिन हर कदम सूखा था।
शेष घंटे उन विवरणों पर खर्च किए गए जिन्हें व्यक्तिगत रूप से नाम देना मुश्किल है, लेकिन साथ मिलकर यह तय करते हैं कि "यह एक असली गेम जैसा लगता है या नहीं।"
Suno v5.5 से संगीत
सभी बैकग्राउंड संगीत Suno v5.5 द्वारा जेनरेट किया गया था; किसी भी स्टॉक एसेट का उपयोग नहीं किया गया।
मैंने इसे एक दिशात्मक विवरण दिया—"चीनी लोककथा रात की सड़क, लकड़ी की मछली, घंटियाँ, कम-आवृत्ति ड्रोन, पेंटाटोनिक स्केल, संयमित और नाटकीय नहीं।"
इसने कुछ संस्करण चलाए, और मैंने गेम के लिए एक चुना। शीर्षक पृष्ठ का स्वर भारी है, जबकि लड़ाई की पृष्ठभूमि हल्की है ताकि ध्यान भंग न हो।
मैंने कुछ विस्तार प्रसंस्करण भी जोड़ा: प्रतीक्षा पृष्ठ पर संगीत की मात्रा अधिक है; एक बार "गेम शुरू करें" पर क्लिक करने के बाद, मात्रा गिर जाती है और पृष्ठभूमि ऑडियो बन जाती है।
हिट एनिमेशन और प्रभाव ध्वनियाँ
शुरुआती मुकाबले में, जब कोई कार्ड खेला जाता था, तो राक्षस बस संख्या खो देता था। कोई फीडबैक नहीं था, कोई वजन नहीं था।
Codex ने पूर्ण पॉलिश की:
- हिट होने पर पात्र हिलते हैं, कैमरा थोड़ा कंपन करता है, और स्क्रीन संक्षेप में लाल चमकती है।
- प्रत्येक हमले के प्रकार की एक अलग प्रभाव ध्वनि होती है—तलवारें, ताबीज, बिजली और मुक्के सभी की अलग-अलग बनावट होती है।
- ब्लॉक और Sigil समाधानों की अपनी ध्वनियाँ होती हैं ताकि वे एक साथ धुंधले न हों।
- दुश्मन के मरने के क्षण में एक संक्षिप्त फ्रीज़-फ्रेम होता है, इससे पहले कि एक्ज़ीक्यूशन वीडियो शुरू हो।
ये चीजें व्यक्तिगत रूप से छोटी हैं। साथ में, वे मुकाबले के "अहसास" को एक वेब फॉर्म से एक कार्ड गेम में बदल देती हैं।
Seedance 2.0 ने आइडल एनिमेशन भी बनाए
पॉलिश चरण के दौरान यह कदम टूल का मेरा पसंदीदा उपयोग था।
बॉस एक्ज़ीक्यूशन वीडियो के अलावा, मैंने इसे शीर्षक पृष्ठ की पृष्ठभूमि बनाने के लिए भी कहा—पर्यावरण में आग जल रही है, लालटेन हिल रहे हैं, और दूर बादल बह रहे हैं।
Seedance 2.0 डिफ़ॉल्ट रूप से एक शुरुआत और अंत वाला वीडियो बनाता है, जो लूप होने पर सीम पर उछल जाएगा।
मैंने पहले और आखिरी फ्रेम के रूप में एक ही इमेज भेजी। वीडियो इस इमेज से शुरू होता है और उसी पर वापस समाप्त होता है, जिससे एक सहज अनंत लूप बनता है।
शीर्षक पृष्ठ की पृष्ठभूमि एनिमेशन इसी तरह बनाई गई थी। आग जलती है, लालटेन हिलते हैं, और बादल हमेशा के लिए बहते हैं—आप इसे तीन मिनट तक घूर सकते हैं और कभी सीम नहीं देख सकते।
यह तकनीक वीडियो जेनरेशन से पहले मौजूद थी; पुराने एनिमेशन में लूपिंग दृश्य इसी तरह बनाए जाते थे।
निष्कर्ष: इस दोपहर ने मुझे कई बार चौंकाया
यह पूरा प्रोजेक्ट एक ही Codex सत्र में पूरा हुआ; मैंने कभी दूसरी विंडो नहीं खोली।
गेमप्ले प्रोटोटाइप, स्टेट मशीन, React + Phaser आर्किटेक्चर, एसेट पाइपलाइन, बैकग्राउंड रिमूवल, एसेट स्क्रैपिंग, कॉन्टैक्ट शीट क्रिएशन, GPT-Image ट्यूनिंग, Seedance 2.0 रन, Suno v5.5 इंटीग्रेशन, Electron पैकेजिंग, GitHub Actions Release बिल्ड, README, आइकन, प्रमोशनल मटेरियल—सब कुछ उसी में था।
मैंने खुद बहुत कम किया:
- दिशा चुनी: चीनी लोककथा थीम, Sigils और Incense पर ध्यान केंद्रित करना।
- सौंदर्य संबंधी फीडबैक दिया: यह कहां खुरदरा था, कहां वेब फॉर्म जैसा दिखता था, कहां प्रकाश टकराता था।
- एक गेटकीपर के रूप में कार्य किया: कौन से एसेट अनुपालन योग्य थे, किन क्रॉलर से बचना था, किन अनुमतियों से इनकार करना था।
Codex ने बाकी काम संभाला। और हर कदम पर एक पल आया जिसने मुझे रुककर देखने पर मजबूर कर दिया।
इसने शुरू से ग्रीन स्क्रीन इमेज जेनरेट की क्योंकि इसे पता था कि गेम में प्रवेश करने से पहले पात्रों की पृष्ठभूमि हटाने की आवश्यकता है।
इसने CAPTCHA को बायपास करने के लिए एक क्रॉलर लिखने की कोशिश की, केवल अपनी ही सुरक्षा नीति द्वारा रोक दिया गया।
इसने हजारों एसेट को एक विशाल इंडेक्स इमेज में संयोजित किया ताकि वह एक दृश्य खपत का उपयोग करके सौ पुनर्प्राप्तियों को बदल सके।
ये सभी चीजें अपने आप में दुनिया को हिला देने वाले आविष्कार नहीं हैं, लेकिन वे सभी एक ही बदलाव की ओर इशारा करती हैं:
पहले, आपको इसके लिए टूल सेट करने होते थे, और यह कोड लिखने के लिए जिम्मेदार था; अब, आप बस लक्ष्य बताते हैं, और यह स्वयं टूल ढूंढता, कॉन्फ़िगर और बनाता है।
यह भावना "कोडिंग असिस्टेंट" के दायरे से परे चली गई है।
यह काम पर AGI सॉफ्टवेयर के एक प्रोटोटाइप की तरह अधिक लगता है।
क्या मुझे इस प्रक्रिया को एक Skill में पैकेज करना चाहिए?
इस प्रोजेक्ट को चलाने के बाद, मेरे दिमाग में एक अपेक्षाकृत स्थिर प्रक्रिया है:
मैं सोच रहा हूं कि क्या इस प्रक्रिया को विशेष रूप से इंडी गेम डेमो बनाने के लिए एक Codex Skill में लपेटा जाए।
आप बस एक गेमप्ले विचार डालेंगे, और यह आपके लिए कुछ घंटों में एक खेलने योग्य, पैकेज करने योग्य और वितरित करने योग्य संस्करण चला सकता है।
अगर किसी को दिलचस्पी है, तो मैं इस Skill को बनाने और इसे ओपन-सोर्स करने में समय लूंगा। मैं वैसे भी इसका खुद उपयोग करूंगा।
गेम डेमो
कोड ओपन-सोर्स है, और इंस्टॉलेशन पैकेज तैयार हैं:





