किन मामलों में स्क्रिप्टिंग भाषाएँ दूसरों से बेहतर हैं?
सभी उत्तरों की सराहना की जाती है, कृपया एक विवरण प्रदान करें, और यह बताएं कि भाषा किन मामलों में उत्तीर्ण होती है।
(याद रखें, प्रति उत्तर एक भाषा)
किन मामलों में स्क्रिप्टिंग भाषाएँ दूसरों से बेहतर हैं?
सभी उत्तरों की सराहना की जाती है, कृपया एक विवरण प्रदान करें, और यह बताएं कि भाषा किन मामलों में उत्तीर्ण होती है।
(याद रखें, प्रति उत्तर एक भाषा)
जवाबों:
खेल उद्योग में लुआ का व्यापक रूप से उपयोग किया जाता है । स्वतंत्र खेलों ( एक्वारिया ) से AAA शीर्षकों (सभ्यता) तक।
मुख्य कारण? मैं कहूंगा क्योंकि यह सीखना आसान है और अपने खेल में शामिल करना आसान है। लेकिन अजगर के लिए भी ऐसा ही कहा जा सकता है, मुझे यकीन है। सामान्य रूप से स्क्रिप्टिंग मुश्किल नहीं है। मुझे लगता है कि असली कारण आपको लुआ के साथ जाना चाहिए क्योंकि यह साबित हो जाता है जिसके परिणामस्वरूप आपके लिए सीखने के लिए बहुत अधिक संसाधन हैं। यदि आपको ऐसा लगता है कि आदर्श के बाहर किसी चीज के साथ प्रयोग करना है तो मैं दूसरी भाषा के साथ खिलवाड़ करना शुरू कर दूंगा।
गिलहरी का एक दिलचस्प इतिहास है। यह एक खेल वास्तुकार द्वारा लुआ के अप्रत्याशित कचरा संग्रह के साथ मुद्दों के बाद बनाया गया था, और पागल सब कुछ शून्य है भले ही वह मौजूद न हो ।
गिलहरी लेफ्ट 4 डेड 2 में इस्तेमाल की जाने वाली सरप्राइज़िंग भाषा है । एपीआई बहुत ही लुआ-जैसा है (गिलहरी का लेखक लुआ के डिजाइन से प्यार करता है )।
तो गिलहरी एक भयानक भाषा है क्योंकि यह थोड़े 2 पीढ़ी की लूआ है। इसने अच्छे विचारों को लिया और कष्टप्रद विलक्षणताओं को हटा दिया।
लुआ से समान:
नई गिलहरी:
गिलहरी का प्राथमिक नुकसान यह लुआ नहीं है। लुआ बहुत अधिक व्यापक रूप से उपयोग किया जाता है। लेकिन अगर यह एक मुद्दा नहीं है तो गिलहरी एक आसान जीत है। हालांकि, अक्सर भाषा की लोकप्रियता अपने आप में उपयोगी विशेषता है, इसलिए निर्णय इतना स्पष्ट नहीं है।
V8 जावास्क्रिप्ट गूगल से।
PRO का:
उपयोग करने के लिए काफी आसान है
लगातार बेहतर हो रहा है
शक्तिशाली और लचीला
दूसरों के रूप में कई उल्लेख, जावास्क्रिप्ट एक सामान्य प्रोग्रामर उपकरण है। इसे मेरे खेलों में शामिल करने से बहुत अधिक लोग खुले हैं जो अन्य भाषाओं की तुलना में सक्षम महसूस करते हैं। यह प्रोग्रामर के लिए काम को बचाने के लिए भारी मात्रा में कास्टिंग और रूपांतरण का भी समर्थन करता है, यह एसटीएल के साथ अच्छी तरह से काम करना वास्तव में आसान बनाता है।
संभावित संबंध:
प्रलेखन भ्रमित हो सकता है यह वास्तव में सबसे अच्छा नहीं है।
उदाहरण अक्सर अजीब का एक वेब है। ठोस सादगी में कमी, यह जिस तरह से उच्च स्तर के रूप में आता है।
टेम्प्लेट कभी-कभी इन पर नफरत होती है, या इससे बचा जाता है।
एसडीके कोडबेस आकार जनरेट कोड आकार को ब्लोट माना जा सकता है।
जो कि खेल और उसके लक्ष्य मंच पर निर्भर करता है।
एक गेम जो 100 गैर-खिलाड़ी अक्षर (आरटीएस गेम) चलाता है, एक गेम से अलग-अलग ज़रूरतें होती हैं जो सिर्फ 2 (स्ट्रीट फाइटर) चलाता है। पीसी पर चलने वाले गेम में कंसोल पर चलने वाले गेम की तुलना में अलग-अलग ज़रूरतें होती हैं।
लुआ लोकप्रिय है
GameMonkey का उपयोग कई टीमों द्वारा किया जाता है। यह लूआ से तेज है और थ्रेडिंग में बेहतर है।
पायथन का उपयोग कई खेलों में किया गया है।
जावास्क्रिप्ट एक संभावित विकल्प है क्योंकि आप जावास्क्रिप्ट इंजन डाउनलोड कर सकते हैं। किसी भी अन्य प्रकार के प्रोग्रामर की तुलना में अधिक जावास्क्रिप्ट प्रोग्रामर हैं।
विशेष भाषाएं भी हैं।
SCUMM का उपयोग कई साहसिक खेलों में किया गया है और यह विशेष रूप से उन खेलों के अनुकूल है।
संपूर्णता के लिए, एक अन्य विकल्प मोनो-स्क्रिप्ट है , जो आपको स्क्रिप्टिंग के लिए .NET फ्रेमवर्क के नोवेल कार्यान्वयन का उपयोग करने की अनुमति देता है। यह एकता का उपयोग करता है। आपके एप्लिकेशन में मोनो एम्बेड करने के बारे में एक और पृष्ठ यहां दिया गया है ।
मोनो स्क्रिप्टिंग स्क्रिप्टिंग भाषाओं की तुलना में सबसे अधिक (शायद सभी?) की तुलना में तेज़ है क्योंकि इसकी व्याख्या नहीं की गई है, और क्योंकि कंपाइलर और इंस्ट्रक्शन सेट के बीच एक परत है, यह आपको C # और बोलियों सहित विभिन्न भाषाओं में प्रोग्राम करने की अनुमति देता है पायथन, लुआ और जावास्क्रिप्ट।
मुझे यकीन नहीं है कि यह सभी प्लेटफार्मों पर मुफ्त है।
निजी तौर पर, मैंने एंजलस्क्रिप्ट (नीचे लिंक देखें) को लू की तुलना में C ++ से बाँधने में बहुत आसान पाया, जब मैं अपने प्रोजेक्ट के लिए स्क्रिप्टिंग भाषा चुन रहा था। (मैंने वास्तव में इसे कुछ लचीलेपन की कीमत पर उपयोग करने के लिए एक छोटा आवरण पुस्तकालय लिखा है।)
http://www.angelcode.com/angelscript/
यह कहा जा रहा है, मुझे संदेह है कि लूआ के कुछ फायदे हैं जो इसे वाणिज्यिक गेम डेवलपर्स के लिए मजबूर करते हैं:
(ए) यह एंजेलस्क्रिप्ट की तुलना में अधिक परिपक्व और व्यापक है
(बी) इसका सिंटैक्स गैर-प्रोग्रामर के लिए आसान है (एंजेलस्क्रिप्ट बहुत सी ++ है - जैसे)
(c) इसमें एंजेलस्क्रिप्ट (कम से कम जहाँ तक मुझे याद है) की तुलना में एक छोटा पदचिह्न है
यदि आप सिर्फ एक शौक परियोजना लिख रहे हैं, हालांकि, मैं कहूंगा कि एंजेलस्क्रिप्ट कम से कम देखने लायक है।
आपको एक स्क्रिप्टिंग भाषा चुननी चाहिए जिसमें आपके खेल की प्राथमिक विकास भाषा में स्थिर और अच्छी तरह से समर्थित बाइंडिंग हों। यदि आप अपना गेम C या C ++ में लिख रहे हैं, तो पाइथन और लुआ के लिए काफी ठोस बाइंडिंग उपलब्ध हैं। यदि आप .NET प्लेटफ़ॉर्म (C # या किसी अन्य भाषा का उपयोग करके) के लिए अपना गेम लिख रहे हैं, तो मैं अत्यधिक IronPython या IronRuby का उपयोग करने की सलाह देता हूं। दोनों पूर्ण भाषा कार्यान्वयन हैं जो Microsoft के डायनेमिक भाषा रनटाइम (DLR) का लाभ उठाते हैं, जो .NET फ्रेमवर्क के साथ उत्कृष्ट प्रदर्शन और बहुत तंग एकीकरण प्रदान करता है। C # और IronPython / IronRuby के बीच इंटरऑपरेबिलिटी इन दिनों बहुत सुचारू है, विशेषकर C # 4.0 में डायनामिक कॉलसाइट बाइंडिंग की शुरुआत के साथ।
खैर, विशेष रूप से गाइड ।
केवल अपने गेम के लिए आप अपने खुद के DSL (डोमेन विशिष्ट भाषा) रख सकते हैं। एक बार जब आप कोष्ठकों और उपसर्ग संकेतन के लिए अभ्यस्त हो जाते हैं, तो योजना काम करने के लिए स्वर्ग है।
यदि आप एक गंभीर गेम में गिल का उपयोग करने जा रहे हैं, तो मैं कुछ महीनों तक इंतजार करूंगा जब तक कि 2.0 रिलीज नहीं हो जाती, इसमें IIRC, एक एक्मास्क्रिप्ट इंटरप्रेटर और साथ ही वर्तमान स्कीम एक भी शामिल होगी। आप बड़े गति में सुधार देखने की उम्मीद भी कर सकते हैं।
यह इस बात पर निर्भर करता है कि आपको वास्तव में इसके लिए क्या चाहिए। जैसा कि डेविड बताते हैं, लुआ बहुत लोकप्रिय है, हालांकि एक गेम डेवलपर ने मुझे बताया कि वह पूरी तरह से निश्चित नहीं था कि क्यों। मुझे लगता है कि इसका हल्कापन एक सामान्य कारण है, लेकिन इस बिंदु पर, मैं बहुत से लोगों से लू का उपयोग करने की उम्मीद करूंगा क्योंकि यह वास्तविक मानक बन गया है। यह बहुत हल्के संशोधन के लिए सबसे अच्छा लगता है।
अधिक संपूर्ण दृष्टिकोण के लिए, मैं कहूंगा कि पायथन सही विकल्प है। Civ IV ने इसका उपयोग सभ्य प्रभाव के लिए किया।
एक स्क्रिप्टिंग भाषा को दूसरे पर चुनना आपकी विशिष्ट आवश्यकताओं पर निर्भर है।
आपके बीच चुनने के लिए कुछ विकल्प हो सकते हैं:
दुभाषिया की गति - यदि स्क्रिप्टिंग की सुविधा का उपयोग केवल डेवलपर्स द्वारा स्क्रिप्ट के स्थिर व्यवहार के लिए किया जाता है, तो गति और एक पूरी तरह से विकसित और विस्तार योग्य एपीआई सबसे महत्वपूर्ण पहलू हो सकता है। मुझे वहां LUA के साथ कुछ अच्छे अनुभव हुए।
सीखने में आसान, पहुंच - सामग्री के लिए- / leveldesigner गतिशील व्यवहार उत्पन्न करने के लिए अधिक जटिल स्क्रिप्टिंग भाषा (पृष्ठभूमि पर निर्भर करता है) सीखना कठिन हो सकता है। उस मामले में, सीखने में आसान (यानी आमतौर पर इस्तेमाल की जाने वाली) और अच्छी तरह से प्रलेखित भाषाओं का उपयोग यहां अधिक उपयुक्त हो सकता है। जावास्क्रिप्ट या पायथन यहां एक अच्छा समाधान हो सकता है।
वर्कफ़्लो एकीकरण - यदि आपके पास पहले से मौजूद उपकरणों के साथ एक विशिष्ट उत्पादन पाइपलाइन है, तो एक भाषा का उपयोग करना एक बुरा विचार हो सकता है जो किसी दिए गए मामले के लिए सबसे अच्छा काम करता प्रतीत होता है यदि अन्य उपकरण पूरी तरह से एक के साथ काम कर रहे हैं। यह विशेष रूप से मान्य है यदि आपके पास विभिन्न उपकरणों पर काम करने वाले कई प्रोग्रामर हैं। उस मामले में, "काफी फिटिंग नहीं" भाषा का उपयोग करना अधिक कुशल हो सकता है।
यदि आप विंडोज के लिए एक शीर्षक पर काम कर रहे हैं और कॉमन लैंग्वेज रनटाइम (सीएलआर) के शीर्ष पर चल रहे प्रबंधित कोड को लिखते हैं - मान लीजिए कि C # में उदाहरण देते हैं - तो मेरा सुझाव है कि आप स्क्रिप्टिंग भाषा के रूप में (आयरन) पायथन को एकीकृत करने पर विचार करें।
मेरे अनुभव में, पायथन को गैर-प्रोग्रामर / डिजाइनरों को सिखाना बहुत आसान है। डेवलपर्स के लिए इसे चुनना और भी आसान है क्योंकि यह अनिवार्य रूप से स्यूडोकोड की तरह पढ़ता है। गतिशील रूप से टाइप किया जाना सिर्फ उन पहलुओं में से एक है जो लोगों को बिना किसी पूर्व कोडिंग के अनुभव के साथ और भाषा के साथ तेजी से चलने में मदद करते हैं।
भाषा सीखना आसान और शक्तिशाली होने के अलावा, Microsoft (Anders Hejlsberg, Eric Lippert, Mads Torgersen, Jim Hugunin et al।) पर CLR और भाषा टीमों ने नए डायनेमिक के माध्यम से कंपाइलर और रनटाइम फीचर्स के विस्तार में कुछ बेहतरीन काम किया है। .NET 4 में भाषा रनटाइम (DLR), स्टेटिकली टाइप किए गए कोड और डायनामिक टाइप किए गए कोड के बीच अंतर को अधिक सीधा बनाता है। मैंने अब तक जो भी देखा और आजमाया है, उससे बॉयलरप्लेट कोड कम से कम हो जाता है। यह आपके कोडबेस को साफ और बनाए रखेगा।
आप इसका उपयोग अपने गेम के स्क्रिप्टेड भागों और इंजन के बीच घर्षण को बहुत कम रखने के लिए कर सकते हैं। एक ही वीएम के भीतर दोनों चलने के बाद रनटाइम के लिए निष्पादन के दौरान आपके अधिक कोड का अनुकूलन करना संभव होगा।
यदि आपके पास एक मौजूदा टीम है जो स्क्रिप्टिंग भाषा या लीड (स्तर) डिजाइनर का उपयोग करेगी जो स्क्रिप्टिंग का उपयोग करेगी, तो उनकी पसंद की भाषा जो भी हो, उसके साथ जाएं। वे इसके साथ अपना समय बिताएंगे, इसलिए उन्हें इसे पूरा करना चाहिए।
[नमक का दाना] अगर आपके पास कोई नहीं है या लंबी अवधि की योजना नहीं है, तो अपना खुद का रोल करें । हां, स्क्रिप्टिंग भाषा के लिए संकलक और / या दुभाषिया लिखने में एक या दो सप्ताह लग सकते हैं, लेकिन लंबे समय में लचीलापन कई बार भुगतान करेगा। बस दूर भटकने के लिए मत जाओ और brainfuck को फिर से संगठित करें। [/नमक का कण]