क्या आपकी अपनी स्क्रिप्टिंग भाषा व्यवहार्य है?


21

मैं सी ++ में एक बीट 'एम अप गेम को कोड कर रहा हूं और घटनाओं, ट्रिगर्स, कटकनेस आदि के लिए स्क्रिप्टिंग को लागू करने का समय आ गया है। मैंने इंटरनेट पर चारों ओर पढ़ा है और जानकारी का एक सा हिस्सा प्राप्त किया है। मेरी पहली पसंद समाधान गुफा की कहानी की तरह अपनी स्क्रिप्टिंग भाषा को लागू करना होगा । मैंने यह सुझाया है, लेकिन अधिकांश कवियों ने लुआ का सुझाव दिया है, लेकिन यह मेरे प्रकार की प्रोग्रामिंग के लायक नहीं है।

क्या आपने अपनी स्क्रिप्टिंग भाषा बनाई है? किसी मौजूदा का उपयोग करने के बजाय आपने अपना रोल क्यों चुना? आपने विकास के दौरान किन संसाधनों से परामर्श किया?


43
अंगूठे का मेरा व्यक्तिगत नियम है: यदि आपको अन्य लोगों से यह पूछने की आवश्यकता है कि क्या यह आपके अपने _____ को रोल करने के लिए एक अच्छा विचार है, तो यह एक अच्छा विचार नहीं है।
सम होसेवर

2
ध्यान दें कि यदि आप अपनी खुद की भाषा को लागू करते हैं, तो लोगों को यह सीखना चाहिए और यह उम्मीद करनी चाहिए कि आपके दुभाषिया में कोई कीड़े नहीं हैं, जबकि लुआ जैसी भाषाएँ अधिक लोकप्रिय हैं और उनमें कीड़े होने की संभावना बहुत कम है।
निक कैपलिंगर

2
@NickCaplinger ने इसे सिर पर मारा। अपने स्वयं के साधनों को जोड़ने का कोई दस्तावेज नहीं है, कोई समुदाय नहीं, कोई भी तृतीय-पक्ष ट्यूटोरियल, कोई StackExchange, आदि। वाक्य रचना या एकीकरण में आपको जो भी छोटी-मोटी प्रगति मिलती है, वह समर्थन की कमी से आगे निकल जाएगी, जब तक कि आप वास्तव में अच्छी तरह से ज्ञात डेवलपर न हों। लाखों प्रशंसक।
सीन मिडलडाइच

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

1
यदि आप C ++ प्रोग्रामर हैं, और आप LUA को नापसंद करते हैं, तो इसके बजाय JavaScript आज़माएँ।
zeel

जवाबों:


42

नहीं । कम से कम, शायद नहीं।

यह पहिया के सुदृढीकरण का एक बहुत ही लगातार मामला है खेल विकास, एक गलती जो अभी भी काफी लोकप्रिय है।

यदि आप यह प्रश्न पूछ रहे हैं, तो आप दूसरों के द्वारा प्रभावित होने की बहुत संभावना रखते हैं, इसलिए केवल महाकाव्य खेलों को देखें जो अवास्तविक इंजन के साथ किया है:

  • UE3 में एक कस्टम, अजीब, गैर-अनुकूलित, हार्ड-टू-डीबग UnrealScript चीज़ थी,
  • यदि अफवाह सच है, तो इसका समर्थन UE4 में हटाया जा रहा है , गर्म-पुनः लोड करने योग्य C ++ DLL के पक्ष में।

क्या आपको लगता है कि आप एपिक से बेहतर कर सकते हैं?

लम्बी भाषाओं का निर्माण प्रोग्रामिंग भाषा रचनाकारों का है , खेल इंजीनियरों का नहीं।

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

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

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

इसलिए, जैसा कि यह थोड़ा या अचानक कठोर होगा, मैं कहूंगा कि एक मामला है जहां यह समझ में आ सकता है: यदि आप सीखना चाहते हैं कि स्क्रिप्टिंग भाषा कैसे बनाई जाती है। लेकिन कृपया, कृपया, यदि आप ऐसा करते हैं: दूसरों को इसका उपयोग करने के लिए मजबूर न करें।

संपादित करें

मैंने अभी आपके द्वारा लिंक की गई Cave Story कमांड सूची को देखा था। आउच:

<ECJx:y      [EC?] Jump           @ Jump to event Y if any npc with ID X is present

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

if (npc.id == x) then
    jump_to_event(y)
end

उदाहरण के लिए, चीजों को इतना आसान बना देगा कि आपको अधिक जटिल स्थिति की आवश्यकता होगी:

if (npc.id == x) or (npc.type == "enemy") then
    jump_to_event(y)
end

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

+1, मुझे लुआ या कस्टम स्क्रिप्टिंग भाषा नहीं पता है, लेकिन यह स्पष्ट रूप से स्पष्ट था कि लुआ और
दैट

1
एक या दूसरे के बारे में कुछ भी जादुई नहीं है, जिससे दोनों को सीखना असंभव है। अवास्तविक शायद अवास्तविक को हटा रहा है, लेकिन वे बहुत सक्षम और भरने के लिए सक्षम और पूर्ण दृश्य स्क्रिप्टिंग भाषा है। उन्होंने अवास्तविक को नहीं हटाया क्योंकि यह एक विफलता है, वे इसे हटा रहे हैं क्योंकि यह काफी अधिक कठिन सुविधाओं (हॉट-रीलोडिंग सी ++, अपडेटेड किसमिट) द्वारा प्रकोप है। इसका मतलब यह न निकालें कि मैं आपकी बात से असहमत हूं: अपनी भाषा लिखना बहुत समय की बर्बादी है, कीड़े का एक स्रोत है, और बड़े सीखने की
वक्रता

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

1
ध्यान दें कि अवास्तविक को ब्लूप्रिंट द्वारा प्रतिस्थापित किया जाता है (लेकिन मैंने अपने सहयोगियों से शर्त लगाई है कि यह वापस आ जाएगा)। हॉटलोडिंग डीएलएल एक ऑर्थोगोनल फीचर है।
सम होसीवर

9

क्या आपने अपनी स्क्रिप्टिंग भाषा बनाई है और आपने किसी मौजूदा का उपयोग करने के बजाय खुद को रोल करने के लिए क्यों चुना है?

मेरे पास है, हालाँकि मैंने अन्य भाषाओं से वाक्य रचना उधार ली है। सभी के लिए यह एक महान सीखने का अनुभव था और मेरे मामले में यह कठिन नहीं था क्योंकि भाषा सरल थी।

मैंने इसे मुख्य रूप से इसलिए किया क्योंकि मैं अपनी स्क्रिप्ट के लिए एक नियमित सी-स्टाइल सिंटैक्स का उपयोग करना चाहता था, क्योंकि टीम के सभी लोग इससे परिचित थे।

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

आपने विकास के दौरान किन संसाधनों से परामर्श किया?

मेरा मुख्य संसाधन यह पुस्तक थी:

यहाँ छवि विवरण दर्ज करें

मैं इस पुस्तक को लागू करने के लिए पर्याप्त सीखने में कामयाब रहा:

  • एक लेक्सर: जो रेगुलर एक्सप्रेशंस का उपयोग करते हुए लगभग तुच्छ था, बस Regex.Match का उपयोग करके टोकन की पहचान और विभाजन करना।
  • एक पुनरावर्ती वंश पार्सर: व्याकरण में प्रत्येक नियम के लिए मूल रूप से एक कार्य करता है और कुछ सहायक तरीके लुकहेड और टोकन का उपभोग करते हैं। मैंने प्रेरणा के लिए C # व्याकरण विनिर्देश को देखा। सबसे कठिन हिस्सा अनंत पुनरावृत्ति में जाने के बिना अंकगणित और संबंध ऑपरेटर पूर्ववर्ती के साथ काम कर रहा था।
  • एक एएसटी दुभाषिया: विज़िटर डिज़ाइन पैटर्न का उपयोग करके, मैंने पार्सर से उत्पन्न पेड़ को ट्रेस किया, और प्रत्येक निर्देश नोड को तेजी से निष्पादित किया।

मैं वहाँ रुक गया होता, क्योंकि मेरी ज़रूरत की लगभग हर चीज़ पहले से ही काम कर रही थी, सिवाय एक चीज़ के - कॉलिंग और पैदावार के लिए Unity3D coroutines पर पुनरावर्ती दुभाषिया के भीतर से गहरी। उस समस्या को हल करने के लिए, मुझे पुनरावृत्ति से छुटकारा पाना था, और एक बार फिर से पुस्तक में बदल गया। इस बार मैंने जोड़ना समाप्त कर दिया:

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

पूरी प्रक्रिया में शून्य ज्ञान से लगभग 2 सप्ताह लगे, और बहुत मज़ा आया :)

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

http://scintillanet.codeplex.com/


5

मैंने यह सुझाया है, लेकिन अधिकांश कवियों ने लुआ का सुझाव दिया है, लेकिन यह मेरे प्रकार की प्रोग्रामिंग के लायक नहीं है।

ठीक है, चलो इसे एक अलग कोण से आज़माएँ: यह लूआ के बारे में क्या है जो आपको पसंद नहीं है? क्या यह ऐसा कुछ है जो आसानी से तय किया जा सकता है, या यह कुछ मौलिक है?

उदाहरण के लिए, then/do/endअच्छे C / C ++ शैली घुंघराले ब्रेसिज़ के बजाय कोड ब्लॉक को दर्शाने के लिए कीवर्ड का उपयोग करें । अगर यह आपकी समस्या है ... तो आप इसे ठीक कर सकते हैं आपको केवल लुआ की अपनी छोटी बोली को परिभाषित करने की आवश्यकता है, और एक सरल परिवर्तन उपकरण लिखना है जो आपके घुंघराले ब्रेस सिंटैक्स को वास्तविक लुआ में बदल देगा।

क्या आप किसी रूप में + = चाहते हैं? यह भी आसानी से कुछ है जो आप एक पूर्व-प्रसंस्करण प्रणाली में कर सकते हैं। फ़ॉर्म का बयान बारी expr1 += expr2में expr1 = expr1 + expr2

दी, आप यह पता लगाने का एक तरीका खोजने जा रहे हैं कि घुंघराले ब्रेसिज़ की एक do/endजोड़ी एक तालिका या एक जोड़ी का प्रतिनिधित्व करती है या नहीं । और तुम लुआ में अधिभावी द्वारा अपने पूर्व प्रसंस्करण प्रणाली हुक होगा dofile, loadstringऔर अन्य मानक लुआ पुस्तकालय कार्यों। लेकिन यह सब आखिरकार उल्लेखनीय है।

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

यदि आपके मुद्दे इस से बड़े हैं (ग्लोबल्स डिफ़ॉल्ट होना, इस प्रकार आपको localहर जगह उपयोग करने की आवश्यकता है), तो इनमें से कुछ को प्रबंधित किया जा सकता है (बस नए वातावरण को एक त्रुटि घोषित करके, बदले हुए वातावरण और मेटाटैबल्स के उपयोग के माध्यम से)। यदि आप फर्स्ट क्लास ऑब्जेक्ट्स, कॉरटॉयन्स, कचरा संग्रह, या लुआ के अन्य बुनियादी तत्वों के रूप में कार्य से नफरत करते हैं ... तो ठीक है, आप अपने खुद के बनाने के नरक में हैं;)

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


मेरे लिए, ऐसा लगता है कि अगर मैं लूआ का उपयोग कर रहा था तो मैं केवल फ़ंक्शन को कोड कर सकता हूं। ऐसा लगता है कि मैं सिर्फ कोड चला रहा हूं।
स्काइपेरिक

1
@ साइपरिक: मुझे नहीं पता कि आपका क्या मतलब है। क्या आप एक उदाहरण दे सकते हैं?
निकोल बोलस

ऊपर लॉरेंट का जवाब देखें।
15

2
@ साइपरिक: यह वास्तव में स्पष्ट नहीं करता है कि आप किससे संबंधित हैं। क्या आप लुआ में कोड कर सकते हैं? हाँ। और समस्या यह है ...?
निकोल बोलस

1
@BartekBanachewicz: यह स्वीकार करते हुए भी कि यह एक C API है, यह अभी भी कई C ++ - आधारित स्क्रिप्टिंग API के श्रेष्ठ है। यह एकमात्र स्क्रिप्टिंग एपीआई है जिसे मैं वास्तव में कच्चे का उपयोग करने पर विचार करूंगा , बिना किसी स्वचालित बाइंडर के।
निकोल बोलस

3

अन्य उत्तरों के पूरक के लिए, यह कड़ाई से बाइनरी विकल्प नहीं है। एक मौजूदा स्क्रिप्टिंग भाषा के भीतर, आप अपना स्वयं का डोमेन-विशिष्ट- भाषा भी बना सकते हैं । इस दृष्टिकोण के लाभ हैं:

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

प्राथमिक नुकसान यह है कि आप अपनी "आधार" भाषा की बाधाओं के साथ डीएसएल को डिजाइन करेंगे।


2

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

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

यदि आप सुनिश्चित करते हैं कि ऐसी भाषाओं का उपयोग केवल "लॉजिक कंट्रोल" के लिए किया जाता है (यानी कुछ ऑब्जेक्ट प्रकारों के लिए एक विशिष्ट टकराव के मामले को संभालना, जैसे कि ज्वाला ब्लास्टर एक बर्फ ब्लॉक को छूता है) तो प्रदर्शन शायद ही कभी एक मुद्दा होगा। बेशक, दूसरी ओर, यदि आप उन्हें और अधिक नियमित कोड के लिए उपयोग करते हैं (एक कस्टम टकराव की जाँच एल्गोरिथ्म जो प्रत्येक फ्रेम चलाता है) तो यह आपके नीचे दलदल होने की अधिक संभावना है।


1
खेल विकास में लुआ भी एक बहुत लोकप्रिय पटकथा भाषा है।
फिलिप

हाँ, लुआ का उपयोग सभी जगह किया जाता है, लेकिन ओपी ने कहा कि वह वास्तव में इसे बहुत पसंद नहीं करता था। कोडिंग शैली की प्राथमिकताएं महत्वपूर्ण हो सकती हैं।
कटाना ३१४

1
" उदाहरण के लिए, उन इंटरएक्टिव उपन्यास खेलों में से एक आसानी से एक कस्टम लिखित स्क्रिप्टिंग इंजन का उपयोग कर सकता है। " आपने स्पष्ट रूप से सूचित नहीं देखा है । वास्तव में, यहां तक ​​कि पाठ रोमांच के लिए, अपनी भाषा बनाने का कोई मतलब नहीं है।
निकोल बोलस

1
@ Katana314: " कोडिंग शैली की प्राथमिकताएँ महत्वपूर्ण हो सकती हैं। " ईमानदारी से, दुनिया बेहतर होगी यदि प्रोग्रामर "कोडिंग शैली" के बारे में अपने उच्च घोड़ों से दूर हो गए। हम सभी बेहतर प्रोग्रामर होंगे यदि हमने यह सोचना बंद कर दिया है कि <पसंदीदा भाषा यहां डालें> मौलिक रूप से हर किसी की तुलना में बेहतर है <<पसंदीदा भाषा डालें>। ऐसी भाषाओं का उपयोग करना जो आपको चरित्र निर्माण के सिंटैक्स की तरह नहीं लगती हैं और इस तरह के बग-विचार से बचने में मदद करती हैं।
निकोल बोलस

1

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

श्योर आप सरल शुरू करते हैं, अक्सर परीक्षण करते हैं, और अपने आदर्श पर पकड़ बनाते हैं। लेकिन हमेशा याद रखें, LUA आपके लिए है।


1
मुझे लगता है कि यहां सवाल यह है कि क्या लक्ष्य एक खेल बनाना है, या कुछ ऐसा बनाना है जो एक फिर से शुरू में अच्छा लगता है।
ट्राइडस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.