मुझे अपने खेल के लिए कौन सी स्क्रिप्टिंग भाषा चुननी चाहिए? [बन्द है]


53

किन मामलों में स्क्रिप्टिंग भाषाएँ दूसरों से बेहतर हैं?

सभी उत्तरों की सराहना की जाती है, कृपया एक विवरण प्रदान करें, और यह बताएं कि भाषा किन मामलों में उत्तीर्ण होती है।

(याद रखें, प्रति उत्तर एक भाषा)

जवाबों:


39

खेल उद्योग में लुआ का व्यापक रूप से उपयोग किया जाता है । स्वतंत्र खेलों ( एक्वारिया ) से AAA शीर्षकों (सभ्यता) तक।

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


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

3
मुझे यकीन नहीं है कि अजगर एक अच्छा विकल्प बना देगा। अजगर के लिए सी बाइंडिंग सी के साथ अजगर को फैलाने की दिशा में बहुत अधिक है, फिर सी में अजगर को एम्बेड कर रहा है
स्पूनमाइजर

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

2
वास्तव में सभ्यता IV में अजगर का उपयोग किया जाता है ...
एमिलियानो

2
@happy_emi वास्तव में, जबकि C V Lua
Tobias Kienzler

22

गिलहरी

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

गिलहरी लेफ्ट 4 डेड 2 में इस्तेमाल की जाने वाली सरप्राइज़िंग भाषा है । एपीआई बहुत ही लुआ-जैसा है (गिलहरी का लेखक लुआ के डिजाइन से प्यार करता है )।

तो गिलहरी एक भयानक भाषा है क्योंकि यह थोड़े 2 पीढ़ी की लूआ है। इसने अच्छे विचारों को लिया और कष्टप्रद विलक्षणताओं को हटा दिया।

लुआ से समान:

  • coroutines
  • तालिकाओं और मेटाटैबल्स
  • गतिशील टाइप किया गया
  • और भी, बहुत

नई गिलहरी:

  • कक्षाएं
  • सरणियों
  • लुआ के मैच सिंटैक्स के बजाय रेगेक्स।
  • पास्कल / डेल्फी शैली के बजाय सी / सी ++ / जावा / सी # शैली भाषा।
  • और भी, बहुत

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


9

V8 जावास्क्रिप्ट गूगल से।

PRO का:

उपयोग करने के लिए काफी आसान है

लगातार बेहतर हो रहा है

शक्तिशाली और लचीला

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

संभावित संबंध:

प्रलेखन भ्रमित हो सकता है यह वास्तव में सबसे अच्छा नहीं है।

उदाहरण अक्सर अजीब का एक वेब है। ठोस सादगी में कमी, यह जिस तरह से उच्च स्तर के रूप में आता है।

टेम्प्लेट कभी-कभी इन पर नफरत होती है, या इससे बचा जाता है।

एसडीके कोडबेस आकार जनरेट कोड आकार को ब्लोट माना जा सकता है।


मेरे लिए एक con आकार था। यदि आप एक सरल / आकस्मिक गेम बना रहे हैं तो v8 इंजन काफी बड़ा है, और आपके पूरे गेम की तुलना में कई गुना बड़ा हो सकता है।
ज़ैक द ह्यूमन

सच है, लेकिन एक स्वसंपूर्ण .lib फ़ाइल के रूप में यह एक बड़ी चिंता का विषय है? यह बस आपके एसडीएल, या आपके लुआ के बगल में स्लॉट करता है। अगर आपका मतलब कोड साइज़ जेनरेट होता है, तो मैंने परीक्षण नहीं किया कि यह कितना बड़ा है, लेकिन यह एक बुरा बिंदु नहीं है।
underscorediscovery

मेरा मतलब था उत्पन्न कोड आकार। मुझे लगता है कि आज अधिकांश खेलों के आकार को देखते हुए यह बड़ा नहीं है।
ज़ैक द ह्यूमन

1
परीक्षण किया, 1.441 एमबी bit.ly/9DNn8J में नवीनतम SVN घड़ियों के साथ डिफ़ॉल्ट शेल ।cc । हालांकि यह काफी भारी लगता है, अधिकांश पुस्तकालय को कुछ भी करने की आवश्यकता है (नेटवर्किंग, ग्राफिक्स) जो नाटकीय रूप से बस के रूप में जोड़ देगा। V8 के साथ मेरा एक पक्ष परियोजना, फीनिक्सजील, ईनेट, बूस्ट का बस्ट, और समाधान के अंदर बहुत अधिक कोड (जैसे कि सम्पीडन, एन्क्रिप्शन, गुई लाइब्रेरी, वेसोमियम) क्लॉक इन विजुअल स्टूडियो 2008 में 2.5 एमबी पर - और "ज़िप्ड" रिलीज "861 केबी में वजन का निर्माण। मेरे लिए वह सब बुरा नहीं है। कुछ प्लेटफ़ॉर्म पर मैं इसे तकलीफ़देह देख सकता था - हालांकि ज़्यादातर के लिए नहीं :)
underscorediscovery

1
Ive ने अपनी परियोजनाओं में कुछ समय पहले V8 का उपयोग किया था। IMO जावास्क्रिप्ट गेम स्क्रिप्टिंग के लिए उपयोग करने के लिए सबसे आदर्श भाषा है। घटना-आधारित प्रकृति और प्रोटोटाइप-आधारित वस्तुएँ सब कुछ इतना आसान बनाती हैं। :)
स्टीफन बेलेंगर

7

जो कि खेल और उसके लक्ष्य मंच पर निर्भर करता है।

एक गेम जो 100 गैर-खिलाड़ी अक्षर (आरटीएस गेम) चलाता है, एक गेम से अलग-अलग ज़रूरतें होती हैं जो सिर्फ 2 (स्ट्रीट फाइटर) चलाता है। पीसी पर चलने वाले गेम में कंसोल पर चलने वाले गेम की तुलना में अलग-अलग ज़रूरतें होती हैं।

लुआ लोकप्रिय है

GameMonkey का उपयोग कई टीमों द्वारा किया जाता है। यह लूआ से तेज है और थ्रेडिंग में बेहतर है।

पायथन का उपयोग कई खेलों में किया गया है।

जावास्क्रिप्ट एक संभावित विकल्प है क्योंकि आप जावास्क्रिप्ट इंजन डाउनलोड कर सकते हैं। किसी भी अन्य प्रकार के प्रोग्रामर की तुलना में अधिक जावास्क्रिप्ट प्रोग्रामर हैं।

विशेष भाषाएं भी हैं।

SCUMM का उपयोग कई साहसिक खेलों में किया गया है और यह विशेष रूप से उन खेलों के अनुकूल है।


जावास्क्रिप्ट एक बहुत अच्छा विचार है। मुझे आश्चर्य है कि ऐसा क्यों नहीं लगता कि इस स्थान में कर्षण था? कोई विचार?
cflewis

जावास्क्रिप्ट में कर्षण है। एकता इसका उपयोग करती है। तो उनके इंजन के लिए वोल्फेयर गेम्स करता है।
AA ग्रेपस

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

4

संपूर्णता के लिए, एक अन्य विकल्प मोनो-स्क्रिप्ट है , जो आपको स्क्रिप्टिंग के लिए .NET फ्रेमवर्क के नोवेल कार्यान्वयन का उपयोग करने की अनुमति देता है। यह एकता का उपयोग करता है। आपके एप्लिकेशन में मोनो एम्बेड करने के बारे में एक और पृष्ठ यहां दिया गया है ।

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

मुझे यकीन नहीं है कि यह सभी प्लेटफार्मों पर मुफ्त है।


4
ध्यान दें कि यदि आप कंसोल डेवलपमेंट कर रहे हैं, तो JITing कोड स्पष्ट रूप से प्रश्न से बाहर है क्योंकि आप डेटा पृष्ठों को निष्पादन योग्य के रूप में चिह्नित नहीं कर सकते हैं। IL को लक्ष्य प्लेटफ़ॉर्म पर पूर्व-संकलित किया जाना है।
जेफ

3
JIT समस्या iOS पर भी लागू होती है। इसके अलावा मोनो के पास लाइसेंस प्रतिबंध हैं। यदि आप एक ऐसे वातावरण में उपयोग करना चाहते हैं, जहां एंड यूज़र को मोनो रनटाइम को अपग्रेड करने की अनुमति नहीं है, तो आपको कमर्शियल लाइसेंस की आवश्यकता है।
सैम

4

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

http://www.angelcode.com/angelscript/

यह कहा जा रहा है, मुझे संदेह है कि लूआ के कुछ फायदे हैं जो इसे वाणिज्यिक गेम डेवलपर्स के लिए मजबूर करते हैं:

(ए) यह एंजेलस्क्रिप्ट की तुलना में अधिक परिपक्व और व्यापक है

(बी) इसका सिंटैक्स गैर-प्रोग्रामर के लिए आसान है (एंजेलस्क्रिप्ट बहुत सी ++ है - जैसे)

(c) इसमें एंजेलस्क्रिप्ट (कम से कम जहाँ तक मुझे याद है) की तुलना में एक छोटा पदचिह्न है

यदि आप सिर्फ एक शौक परियोजना लिख ​​रहे हैं, हालांकि, मैं कहूंगा कि एंजेलस्क्रिप्ट कम से कम देखने लायक है।


2

आपको एक स्क्रिप्टिंग भाषा चुननी चाहिए जिसमें आपके खेल की प्राथमिक विकास भाषा में स्थिर और अच्छी तरह से समर्थित बाइंडिंग हों। यदि आप अपना गेम C या C ++ में लिख रहे हैं, तो पाइथन और लुआ के लिए काफी ठोस बाइंडिंग उपलब्ध हैं। यदि आप .NET प्लेटफ़ॉर्म (C # या किसी अन्य भाषा का उपयोग करके) के लिए अपना गेम लिख रहे हैं, तो मैं अत्यधिक IronPython या IronRuby का उपयोग करने की सलाह देता हूं। दोनों पूर्ण भाषा कार्यान्वयन हैं जो Microsoft के डायनेमिक भाषा रनटाइम (DLR) का लाभ उठाते हैं, जो .NET फ्रेमवर्क के साथ उत्कृष्ट प्रदर्शन और बहुत तंग एकीकरण प्रदान करता है। C # और IronPython / IronRuby के बीच इंटरऑपरेबिलिटी इन दिनों बहुत सुचारू है, विशेषकर C # 4.0 में डायनामिक कॉलसाइट बाइंडिंग की शुरुआत के साथ।


2

योजना

खैर, विशेष रूप से गाइड

केवल अपने गेम के लिए आप अपने खुद के DSL (डोमेन विशिष्ट भाषा) रख सकते हैं। एक बार जब आप कोष्ठकों और उपसर्ग संकेतन के लिए अभ्यस्त हो जाते हैं, तो योजना काम करने के लिए स्वर्ग है।

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


1

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

अधिक संपूर्ण दृष्टिकोण के लिए, मैं कहूंगा कि पायथन सही विकल्प है। Civ IV ने इसका उपयोग सभ्य प्रभाव के लिए किया।


0

एक स्क्रिप्टिंग भाषा को दूसरे पर चुनना आपकी विशिष्ट आवश्यकताओं पर निर्भर है।

आपके बीच चुनने के लिए कुछ विकल्प हो सकते हैं:

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

सीखने में आसान, पहुंच - सामग्री के लिए- / leveldesigner गतिशील व्यवहार उत्पन्न करने के लिए अधिक जटिल स्क्रिप्टिंग भाषा (पृष्ठभूमि पर निर्भर करता है) सीखना कठिन हो सकता है। उस मामले में, सीखने में आसान (यानी आमतौर पर इस्तेमाल की जाने वाली) और अच्छी तरह से प्रलेखित भाषाओं का उपयोग यहां अधिक उपयुक्त हो सकता है। जावास्क्रिप्ट या पायथन यहां एक अच्छा समाधान हो सकता है।

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


0

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

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

भाषा सीखना आसान और शक्तिशाली होने के अलावा, Microsoft (Anders Hejlsberg, Eric Lippert, Mads Torgersen, Jim Hugunin et al।) पर CLR और भाषा टीमों ने नए डायनेमिक के माध्यम से कंपाइलर और रनटाइम फीचर्स के विस्तार में कुछ बेहतरीन काम किया है। .NET 4 में भाषा रनटाइम (DLR), स्टेटिकली टाइप किए गए कोड और डायनामिक टाइप किए गए कोड के बीच अंतर को अधिक सीधा बनाता है। मैंने अब तक जो भी देखा और आजमाया है, उससे बॉयलरप्लेट कोड कम से कम हो जाता है। यह आपके कोडबेस को साफ और बनाए रखेगा।

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


0

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


-2

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


-2

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

[नमक का दाना] अगर आपके पास कोई नहीं है या लंबी अवधि की योजना नहीं है, तो अपना खुद का रोल करें । हां, स्क्रिप्टिंग भाषा के लिए संकलक और / या दुभाषिया लिखने में एक या दो सप्ताह लग सकते हैं, लेकिन लंबे समय में लचीलापन कई बार भुगतान करेगा। बस दूर भटकने के लिए मत जाओ और brainfuck को फिर से संगठित करें। [/नमक का कण]


मैं एक-दो दिनों में लिश / स्कीम या बैश या पाइथन या लूआ या एर्गैंग (इसके मानक कामों के बिना कुछ भी) के लिए हैशेल में एक दुभाषिया या जित-संकलक लिखूंगा। मैं जब तक C ++ या जावा में एक दुभाषिया लिखने का सुझाव नहीं दूंगा, जब तक कि यह sth lisp की तरह व्याख्या करने के लिए नहीं है। लेकिन यह सवाल नहीं था, वैसे भी।
कोमनाड

मुझे लगता है कि सवाल स्क्रिप्टिंग भाषाओं के पेशेवरों और विपक्षों के लिए अधिक चिंतित थे, न कि वास्तव में यह तय करने के लिए कि किसका उपयोग करना है। फिर भी सहायक मुझे लगता है।
माइकल कोलमैन 2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.