paint-brush
मैं कैसे एक एआई कोड को मेरे लिए एक गेम बना सकता हूं!द्वारा@lukaszwronski
17,590 रीडिंग
17,590 रीडिंग

मैं कैसे एक एआई कोड को मेरे लिए एक गेम बना सकता हूं!

द्वारा Lukasz Wronski2022/06/29
Read on Terminal Reader
Read this story w/o Javascript

बहुत लंबा; पढ़ने के लिए

मैं यह पता लगाने की कोशिश कर रहा था कि क्या मैं सिर्फ एआई द्वारा लिखे गए कोड का उपयोग करके संपूर्ण अंतरिक्ष आक्रमणकारियों का क्लोन लिख सकता हूं। मैंने इसे आज़माने के लिए Copilot का उपयोग किया है। कुछ प्रमुख मुद्दों के साथ गेम को बनाने में 2 घंटे का समय लगा, लेकिन सामान्य तौर पर प्रयोग सफल रहा। आप मेरे संघर्ष को इस लेख से जुड़े 2 घंटे लंबे वीडियो में देख सकते हैं।

Company Mentioned

Mention Thumbnail
featured image - मैं कैसे एक एआई कोड को मेरे लिए एक गेम बना सकता हूं!
Lukasz Wronski HackerNoon profile picture


हाल ही में मैंने पाया है कि Github Copilot, एक AI जो पूरे स्निपेट (अक्सर केवल प्राकृतिक भाषा टिप्पणियों पर आधारित) का सुझाव देकर कोड लिखने में मदद करता है, अब एक व्यावसायिक सेवा के रूप में उपलब्ध है। अब बीटा एक्सेस के लिए प्रतीक्षा करने की आवश्यकता नहीं है, मैंने दो महीने के निःशुल्क परीक्षण के लिए स्वयं को चेक इन किया है।


मेरा कहना है - मेरी उम्मीदें बहुत अधिक थीं। मैंने पहले ओपनएआई एपीआई के साथ थोड़ा सा खेला है। मेरा मानना है कि यह कोपिलॉट के समान मॉडल का उपयोग करता है, इसलिए मुझे पता था कि यह एक दिमाग उड़ाने वाला अनुभव हो सकता है। मैंने इसे विजुअल स्टूडियो कोड एक्सटेंशन के रूप में स्थापित किया है और मुझे आश्चर्य होने लगा है कि मुझे अपने नए आभासी सहयोगी को कैसे चुनौती देनी चाहिए।

खेल शुरू किया जाय


कुछ सामुदायिक टिप्पणियों और लेखों को पढ़कर, मैंने पाया है कि कोपिलॉट के लाभों में से एक यह है कि यह एआई आज रहने वाले किसी भी फ्लैश और हड्डी डेवलपर की तुलना में अधिक प्रोग्रामिंग भाषाओं, ढांचे और एपीआई जानता है। आखिरकार, यह हर एक सार्वजनिक गिटहब भंडार का उपयोग करना सीखता है जो कभी अस्तित्व में था। यह सिर्फ एक उत्पादकता उपकरण से अधिक हो सकता है। यह नई चीजों को खोजने का एक इंटरैक्टिव तरीका भी हो सकता है।


इस तरह से इसका उपयोग करने की उम्मीद करते हुए, मैंने एक गेम बनाने का फैसला किया है। अंतरिक्ष आक्रमणकारियों का एक क्लोन एक उपयुक्त विकल्प लग रहा था, लेकिन इसे और अधिक रोचक बनाने के लिए, मैंने कुछ धारणाएँ बनाई हैं:


  1. मैं पायथन का उपयोग करूंगा - एक ऐसी भाषा जिसे मैं कम जानता हूं और इसे केवल समय-समय पर सीटीएफ चुनौतियों को हल करने के लिए नियोजित करता हूं
  2. मैं PyGame का उपयोग करूंगा - एक पुस्तकालय जिसे मैंने दस साल से अधिक समय पहले एक छोटी शैक्षणिक परियोजना बनाने के लिए तैयार किया है
  3. मैं किसी भी तरह से तैयारी नहीं करूंगा - बस प्रवाह के साथ जाओ
  4. मैं स्वयं कोड की एक भी पंक्ति नहीं लिखूंगा - मेरे कोपिलॉट से यह अपेक्षा करना कि वह यह सब मेरे लिए लिखे


मैंने स्क्रीन रिकॉर्डिंग सेट की है, एक छोटी सी टिप्पणी करने के लिए अपना माइक्रोफ़ोन चालू किया है, विजुअल स्टूडियो शुरू किया है और बस अपना पहला अनुरोध लिखा है:


"""main function for a pygame"""


कोपिलॉट ने मुझे एक के बाद एक कोड की लाइनें देनी शुरू कीं। मैंने अभी एक टन आयात स्वीकार करने वाले सुझावों की सूची के माध्यम से खुद को टैब-एंटर किया है। शुरुआत में उत्साही, मैंने जल्दी से खुद को कोड की एक ही दो पंक्तियों को बार-बार जोड़ने के अनंत लूप में फंस गया है। अच्छा नहीं।


एक बुरी शुरुआत के लिए, मैंने जल्दी ही महसूस किया है कि मैं बहुत अधिक, बहुत जल्दी करने की कोशिश कर रहा हूं। Copilot से पहले एक PyGame आयात जोड़ने और फिर एक विंडो दिखाने वाला फ़ंक्शन बनाने के लिए कहने से चाल चली।

उस समय, मैंने यह भी महसूस किया कि अपने अनुरोध को और अधिक सटीक बनाकर मैं परिणामों में सुधार कर सकता हूँ। लिखते समय


"""create a function showing a game window"""


मैंने इसे इस तथ्य को छोड़कर काम कर लिया है, कि यह सिर्फ एक सेकंड के लिए दिखा और फिर तुरंत छोड़ दिया। तब मैंने सोचा कि मुझे अपनी उम्मीदों के बारे में बहुत सीधा होना चाहिए। इसे बदल रहा है


"""create a function showing a game window and then left it open"""


Copilot ने एक बुनियादी गेम लूप जोड़कर कोड को बढ़ाया जो विंडो को बंद होने से रोकता था।


ऐसा लग रहा था कि मैं और मेरा दोस्त एक दूसरे के साथ संवाद करने लगे हैं। अच्छा!

मेरे पेट में पतंगे

अगला कदम एक अंतरिक्ष यान वर्ग बनाना था। मैंने एक अलग फ़ाइल में एक वर्ग बनाया है, फिर से एक और अनुरोध लिखना शुरू किया और एक और अच्छी चीज मिली। कोपिलॉट न केवल कोड बल्कि मेरे द्वारा लिखी जा रही टिप्पणियों की सामग्री का भी सुझाव देता है। मैंने अपने अंतरिक्ष यान को स्थानांतरित करने के लिए तीर कुंजियों का उपयोग करने के लिए कहना शुरू कर दिया है, और इसने एक संपूर्ण वाक्य का सुझाव दिया है।


Copilot न केवल कोड लिखता है, बल्कि यह भी सुझाव देता है कि आप इसे क्या करना चाहते हैं


मेरा कहना है कि मैं थोड़ा संशय में था कि क्या कोपिलॉट वास्तव में समझ पाएगा कि परियोजना-वार क्या हो रहा है। वर्तमान में संपादित फ़ाइल में कोड का विश्लेषण करना एक बात है। यह पता लगाएं कि ये फ़ाइलें आपस में कैसे जुड़ी हैं, मछली की एक और केतली है।


कोपिलॉट कहता है: "मैंने तुम्हें कवर किया"। यह अन्य फाइलों में कक्षाओं के बारे में जानता है, और हमारे गेम क्लास में स्पेसशिप का उपयोग करने में कोई समस्या नहीं थी। Copilot ने यह भी पता लगाया कि हमने विशिष्ट गेम विंडो आकार को परिभाषित किया है और स्क्रीन के निचले केंद्र में स्पेसशिप की स्थिति के दौरान इसका उपयोग किया है।

आप जरूर सोचें - "यह टूल कमाल का है"। सही?


यह एक तरह का है, लेकिन हमारा रिश्ता सिर्फ चांदनी और गुलाब का नहीं था। कुछ समस्याएं मामूली थीं, जैसे कार्यों में अनावश्यक तर्क मैंने कोपिलॉट को मेरे लिए लिखने के लिए कहा है। कुछ सुझाव देरी से आ रहे थे, और मैंने उनकी प्रतीक्षा में थोड़ा समय खो दिया है।


कभी-कभी मैं अपनी गलतियों के कारण निराश हो जाता था। मैंने एक टिप्पणी छोड़ी है कि फ़ंक्शन को फ़ाइल के शीर्ष पर शून्य वापस करना चाहिए, और फिर नीचे एक और टिप्पणी लिखना मैं समझ रहा था कि कोपिलॉट मेरे फ़ंक्शन के अंत में शून्य वापस करने का प्रयास क्यों कर रहा है। लेकिन यह उस समस्या की तुलना में कुछ भी नहीं था जिसे मैंने हल करने में लगभग एक घंटा लगा दिया था।


मैं जहाज को सही जगह पर रखना चाहता था और इसका आकार 50x50 पिक्सेल आकार में सेट करना चाहता था। मैं कई तरह से अपनी टिप्पणी तैयार करने की कोशिश कर रहा था। हमेशा एक ही परिणाम प्राप्त करना। कोड, जो काम नहीं कर रहा था क्योंकि Copilot ने उन तरीकों का उपयोग करने का निर्णय लिया जो PyGame में मौजूद नहीं थे।

एक खच्चर के रूप में जिद्दी यह मेरे लोड किए गए स्प्राइट ऑब्जेक्ट पर set_size और set_center को आमंत्रित करने का प्रयास कर रहा था, हर बार प्राप्त कर रहा था:


AttributeError: 'pygame.Surface' object has no attribute 'set_size'


अनगिनत बार मैंने अपने अनुरोध को हमेशा वह कोड प्राप्त करने का प्रयास किया है जो बिल्कुल काम नहीं कर रहा था। बहुत निराशा होती है।


कुछ बिंदु पर, मैंने यह भी सोचा कि मुझे रिकॉर्डिंग बंद कर देनी चाहिए और इसके बारे में भूल जाना चाहिए। कोपिलॉट को इस उद्देश्य के लिए उपयुक्त नहीं के रूप में लेबल करें और प्रयोग समाप्त करें। फिर भी, मुझे लगा कि इससे उबरने का कोई तरीका होना चाहिए।

यह आप नहीं, मैं हूँ

मैंने सोचा था कि Copilot के साथ काम करते हुए मैं डॉक्स के बारे में भूल सकता हूं, लेकिन यह पता चला कि PyGame की मूल बातें न समझने के लिए यह मेरी गलती थी। मैं दृश्य पर वस्तुओं को स्थानांतरित करने में रेक्ट की मदद करने की अवधारणा को नहीं समझ पाया। मुझे समझ में नहीं आया कि मेरे स्प्राइट को स्केल करने के लिए उपयोगिता वर्गों का उपयोग कैसे करें।

दस्तावेज़ीकरण में उस जानकारी को ढूँढने से जादू टूट गया। मैं एक कोपिलॉट अलग रणनीति का सुझाव देने में सक्षम था जो स्प्राइट को सतह वस्तु के रूप में रेक्ट से अलग करता है और उन्हें स्क्रीन पर अलग से पास करता है।


इस कोर्स के बाकी हिस्सों में केक की शांति थी। जितना अधिक कोड मैंने बनाया है, उतना ही स्मार्ट कोपिलॉट मिला है। यह जादुई था जब इसने मेरे दिमाग को पढ़ा और गोलियों और एलियंस को सही दिशा में ले जाया गया। स्कोर काउंटर जोड़ने के लिए यह केक का एक टुकड़ा था कि कोपिलॉट ने स्वचालित रूप से पता लगाया कि आक्रमणकारियों के साथ बुलेट टकराव को जोड़ना चाहिए।


Copilot कोड के संपूर्ण स्निपेट का सुझाव दे रहा है


आखिरकार, यह एक सफलता थी। खेल काम कर रहा था और मैंने इसे 2 घंटे से भी कम समय में शुरू कर दिया है। Copilot ने कम से कम 99% कोड लिखा था और मुझे मुश्किल से दस्तावेज़ीकरण देखने की आवश्यकता थी, हालांकि इसके बिना मैं शायद अभी भी अपने नए मित्र द्वारा दिए गए गलत कोड के साथ फंस गया होता।


  • क्या कोपिलॉट नई प्रोग्रामिंग भाषा या लाइब्रेरी का उपयोग करना सीखने का एक अच्छा तरीका है? यह एक तरह का है, लेकिन अगर आपको लगता है कि आप फिर कभी दस्तावेज़ीकरण नहीं पढ़ेंगे, तो आप गलत हैं। कम से कम PyGame अवधारणाओं की मूल बातें जानने से मेरा जीवन बहुत आसान हो जाएगा और मैं बहुत कम समय बिताऊंगा।


  • क्या हम Copilot का उपयोग कर सकते हैं और कोड की एक भी पंक्ति नहीं लिख सकते हैं? बल्कि नहीं। जैसा कि हमारा अपना कोड AI के सोचने के तरीके को आकार देता है। यह वास्तव में बहुत कुछ समझता है इसलिए इसे थोड़ा सा धक्का देने से काम करने में खुशी मिलती है। स्क्रैच से कुछ बनाने की तुलना में मौजूदा कोड का विस्तार करने में आपकी सहायता करने में यह बहुत अधिक मूल्य लाएगा।


  • क्या कोपिलॉट एक अद्भुत उपकरण है? निश्चित रूप से। यह विकास का भविष्य है और मैं यह नहीं कह रहा हूं कि यह हमारी नौकरी ले लेगा क्योंकि एआई जल्द ही प्रोग्रामर की जगह नहीं लेगा, लेकिन यह निश्चित रूप से हमें अधिक उत्पादक बना देगा। यह एक क्रांति है और इसकी क्षमताओं को इस तरह खोजने में बहुत मज़ा आया।


आप मेरे सभी प्रयासों को YouTube पर 2 घंटे लंबे इस वीडियो में देख सकते हैं:

👉


कोई तैयारी नहीं, कोई संपादन नहीं, कोई चाल नहीं। शुद्ध आशुरचना।


बस एक त्वरित चेतावनी - यह भावनात्मक है। मैं सिर्फ हंसने के लिए आधा समय निराश हूं और हर छोटे कदम को सही दिशा में ले जाने के लिए पूरी तरह उत्साहित हूं।


आप मेरे जीथब पर उत्पन्न स्रोत कोड भी पा सकते हैं। जैसा कि मैंने वीडियो में उल्लेख किया है कि यह सुंदर नहीं है, लेकिन यह काम करता है:

👉 https://github.com/lukasz-wronski/copilot-invaders



उम्मीद है तुम्हें मजा आया। पढ़ने के लिए धन्यवाद!