क्या कोई Lua API है जो PC & XBox 360 डेवलपमेंट के लिए C # के साथ काम करता है? [बन्द है]


18

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


5
एक प्रकार का छोटा निपिक, लेकिन यह लूआ (एक नाम) है, न कि
एलयूए

Lua "के बारे में" पृष्ठ से: "Lua का उपयोग न केवल C और C ++ में लिखे गए प्रोग्रामों को विस्तारित करने के लिए किया गया है, बल्कि ... C # ..." में भी किया गया है। Google द्वारा "लुआ इन सी #" के लिए पहला परिणाम GameDev.net ( gamedev.net/reference/articles/article2275.asp ) का एक दिलचस्प लेख था, जिसका शीर्षक लू के साथ C # का उपयोग करना था।
reverbb

पटकथा के लिए .net देवों के बहुत सारे लोहे के पात्र या लोहबान का उपयोग करते हैं।
बंद

जवाबों:


6

यह मैं आपको (http://www.xnua.com/xna_lua_xnua) इंगित करता था, लेकिन यह लंबे समय से अपडेट नहीं किया गया है।

सी # महान भाषा है, और एक अर्थ में अपने सी # खेल के भीतर एक पटकथा भाषा के रूप में इस्तेमाल किया जा सकता है। निक ग्रेवलिन ने टाइल इंजन (http://blog.nickgravelyn.com/downloads/#tileengine) के बारे में कुछ अच्छे ट्यूटोरियल बनाए हैं और डायलॉग को बंद करने के लिए कस्टम स्क्रिप्टिंग इंजन का उपयोग किया है। उसके पास एक मूल उदाहरण भी है जब उसने "उपज" कीवर्ड के बारे में सीखा: http://blog.nickgravelyn.com/2010/02/the-magic-of-yield/


3
यहाँ कुछ अच्छे अंक। सोचने वाली बात यह है कि जब आपका गेम c # में लिखा जाता है तो आप स्क्रिप्टिंग भाषा क्यों चाहते हैं? C ++ इंजन स्क्रिप्टिंग भाषा का उपयोग करने से चपलता प्राप्त कर सकता है, क्योंकि C ++ आमतौर पर संकलन में लंबा समय लेता है। इस संबंध में C # त्वरित है। यदि किसी कारण से आप अपनी स्क्रिप्ट रनटाइम पर संकलित करना चाहते हैं, तो आप लोड समय पर CS फ़ाइल संकलित करने के लिए हमेशा CodeDom (या कोई अन्य कोड जनरेशन मेथड) का उपयोग कर सकते हैं, लेकिन यह केवल PC पर काम करेगा। "गेम इंजन टूलसेट डेवलपमेंट" पुस्तक में इस पर एक अध्याय है
Cubed2D

^ ^ गेम इंजन टूलसेट डेवलपमेंट एक अच्छी किताब है :)। यह अब थोड़ा पुराना है, लेकिन अवधारणाएं अभी भी ठोस हैं। .NET स्क्रिप्टिंग भाषा बाइंडिंग के साथ समस्या यह है कि, Xbox 360 पर चलने के लिए, कि उनकी बहुत व्याख्या की जानी है। System.Reflection.Emit के बिना, आप कोड जनरेशन के तरीके से बहुत कुछ नहीं कर सकते। मैं इस धारणा के तहत था कि ये क्षमताएं निकट भविष्य में Xbox 360 पर आने वाली हैं, लेकिन नीचे दिए गए मेरे उत्तर में टिप्पणी चर्चा के आधार पर, शायद ऐसा नहीं है। इस प्रकार, Xbox 360 पर स्क्रिप्ट प्रदर्शन शायद इतना महान नहीं होगा :(।
माइक स्ट्रोबेल

@ क्यूबेड 2 डी: लुआ स्क्रिप्टिंग गेम्स के लिए एक प्रकार का उद्योग मानक है, और गैर-पेशेवर प्रोग्रामर को समझना भी आसान है।
आरसीआईएक्स

@ आपका अधिकार, 360 पर कोड संकलित या उत्पन्न कर सकता है। अगर मैं इसे लागू करने जा रहा था, तो मैं 360 पर c # स्क्रिप्ट का समर्थन नहीं करूंगा, और बस एक पीसी टूलसेट सुविधा के रूप में होना चाहिए। स्क्रिप्ट बिल्ड फ़ोल्डर को 360 बिल्ड पर शामिल करने और एक पीसी पर अनदेखा करने के लिए बस बनाम प्रोजेक्ट को ट्वीक करें। @RCIX सिर्फ इसलिए कि हर कोई इसे करता है, न ही इसका मतलब आपको चाहिए। यदि आप Xna का उपयोग करना चाहते हैं, तो इसके मूल्य से अधिक परेशानी होने वाली है। वहाँ गैर प्रोग्रामर के लिए tweakable मापदंडों को बेनकाब करने के लिए बेहतर तरीके हैं। नेट दुनिया में लुआ को लागू करने की कोशिश कर रहे हैं (जो मैं आपके गैर-प्रोग्रामर टिप्पणी के साथ आपके होने का अनुमान लगा रहा
हूं

@ Cubed2D: यह एक अच्छा बिंदु है, लेकिन यह वास्तव में आपके लक्ष्य मंच पर निर्भर करता है। यदि आप सिर्फ पीसी के लिए लिख रहे हैं, तो आप LuaInterface और देशी लुआ dll का उपयोग कर सकते हैं, और एक कार्यान्वयन लिखना नहीं है। इसके अलावा, मुद्दा यह है कि चूंकि यह खेल विकास की दुनिया में ऐसा है, इसलिए यह स्वाभाविक रूप से विकसित विशेषताएं हैं जो इसे उस वातावरण के लिए अच्छा बनाती हैं। इसके अलावा, मुझे लुआ के माध्यम से प्रोग्रामिंग में मेरी मुख्य शुरुआत मिली, और मैंने शर्त लगाई कि बहुत से लोगों ने किया है, इसलिए यह समझ में आता है कि लोग इसका उपयोग क्यों करना चाहते हैं।
RCIX

2

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


2

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

नोट: के रूप में ElementCy नीचे में कहा गया है, डीएलआर भाषाओं आम तौर पर पर Xbox 360 समर्थित नहीं हैं हालांकि, वहाँ है एक "व्याख्या मोड" डीएलआर में। मैं निश्चित रूप से कहने के लिए इसके बारे में पर्याप्त नहीं जानता, लेकिन एक्सप्रोडेड मोड में Xbox 360 पर चलने के लिए आयरनपाइथन (या अन्य DLR भाषा कार्यान्वयन) प्राप्त करना संभव हो सकता है, हालांकि प्रदर्शन निश्चित रूप से पीड़ित होगा। यह डीएलआर टीम पर किसी से पूछने लायक हो सकता है कि क्या वे जानते हैं कि यह संभव है। यदि नहीं, तो Xbox 360 को परावर्तन मिलना चाहिए । आगामी सिल्वरलाइट समर्थन के हिस्से के रूप में समर्थन प्राप्त करें। अगर और जब ऐसा होता है, तो मुझे लगता है कि DLR उठना और Xbox 360 पर चलना कोई समस्या नहीं होगी।


4
केवल IronPython के साथ समस्या है, यह Xbox360 पर नहीं चलेगा। यह ठीक है यदि आप इसे केवल पीसी के लिए उपयोग करना चाहते हैं। IronPyton System.Reflection.E का उपयोग करता है, और जो Xbox के .net फ्रेमवर्क पर उपलब्ध नहीं है।
एलीमेंटसी

एक बहुत अच्छा बिंदु। अपडेट किया गया।
माइक स्ट्रोबेल

2
मत सोचो कि Xbox परावर्तन हो रहा है। जल्द ही किसी भी समय स्वीकार करें, क्योंकि winPhone में xna और silverlight दोनों हैं और वह नामस्थान का समर्थन नहीं करता है
Cubed2D

1
आप सही हो सकते हैं। WP7 वास्तव में सिल्वरलाइट नहीं चलाता है, लेकिन "सिल्वरलाइट मोबाइल कॉम्पैक्ट फ्रेमवर्क" है, जो .NET के बजाय .NET CF पर आधारित है। मेरा मानना ​​है कि Xbox 360 भी पूर्ण .NET फ्रेमवर्क के बजाय .NET CF चलाता है, इसलिए यह WP7 के समान कार्यान्वयन के साथ समाप्त होने की संभावना है। ओह अच्छा।
माइक स्ट्रोबेल

2

सबसे अच्छा समाधान जो मैं आपको दे सकता हूं वह है C # में स्क्रिप्ट। आप उन्हें रनटाइम पर संकलित कर सकते हैं जब आप विंडोज़ को लक्षित करते हैं और Xbox के लिए हाथ से पहले उन्हें संकलित करते हैं। (एक dll के रूप में)

यह सबसे आसान उपाय होगा। आप इसे VB.NET या किसी भी .NET भाषा में भी कर सकते हैं। (हालांकि स्क्रिप्टिंग के बारे में निश्चित नहीं) हालांकि मूल रूप से, मैं कह रहा हूं कि अपनी स्क्रिप्ट अपने स्वयं के dll में दें। आप उन्हें विंडोज पर रनटाइम पर संकलित कर सकते हैं। (क्या आप वास्तव में उन्हें Xbox 360 पर ऐसा करना चाहते हैं ?, आप अपने गेम को वहां पर अपडेट नहीं कर सकते, कम से कम मुझे ऐसा नहीं लगता)

मैं आपकी हताशा को समझ सकता हूं, मैं लुआ का भी उपयोग करना चाहता था।

इसे योग करने के लिए: 1) क्या यह विंडोज 2 पर रनटाइम पर बनाया गया है) इसे Xbox 360 के लिए हाथ से पहले बनाएं

यही मेरी सलाह है।


1
  1. Lua दुभाषिया अप्रबंधित है, AFAIK, इसलिए आप इसे XNA के साथ Xbox पर काम करने के लिए नहीं प्राप्त कर सकते हैं

  2. आप Jint नामक जावास्क्रिप्ट इंटरप्रेटर का उपयोग कर सकते हैं जो DLR पर निर्भर नहीं है और Xbox ( http: //jint.codexx ) पर काम करता है।


मैंने कहा है कि पहला बिंदु असत्य है, क्योंकि यहां कई लिंक हैं जिनमें Lua <-> C # है।
कम्युनिस्ट डक

आप केवल Xbox पर प्रबंधित कोड चला सकते हैं। एक Lua <-> C # पुल अप्रबंधित कोड है जो आपको प्रबंधित कोड से Lua को कॉल करने की अनुमति देता है; जब तक MS इसे XNA या Xbox 360 OS में शामिल नहीं करता, तब तक आप इसे वहां नहीं चला सकते।

0

यह तकनीकी रूप से आपके सवाल का जवाब नहीं देता (Xbox पर काम नहीं करता है), लेकिन LuaInterface C # अपेक्षाकृत दर्द रहित रूप से Lua एकीकरण की अनुमति देता है।


0

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

मैंने LuaStter के लिए [] ऑपरेटर को ओवरलोड करके, और इस तरह LuaInterface में पाई गई कुछ कार्यक्षमता को भी जोड़ा।

CFWLua

मुझे उम्मीद है कि यह उपयोगी था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.