2009-02-26 14 views
6

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

क्या है?

उत्तर

13

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

2

वास्तविक समय की बाधाओं के साथ आवेदन के लिए तेजी से विकास। कंप्यूटर गेम इन ;-)

+0

लुआ का उपयोग करके अन्य गैर-गेम ऐप्स, विस्तारशीलता के लिए और इसे विकसित/पुन: सक्रिय करने में आसान बनाने के लिए: apt, nmap, monotone, Adobe LightRoom, love2d, wildpockets – Javier

2

यह एक मान्य समाधान अगर आप तीसरे पक्ष आपके सॉफ़्टवेयर के लिए प्लग-इन या mods विकसित करने की अनुमति चाहते हैं में से एक हैं।

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

3

लुआ है:

  • हल्के
  • आसान इस तरह के एक खेल में इस तरह के integrators, डिजाइनरों और कलाकारों
  • के रूप में गैर प्रोग्रामर कर्मचारियों के लिए सीखने के लिए
  • आसान के रूप में एकीकृत करने के लिए, यहां तक ​​कि एक asynchronized वातावरण में

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

8

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

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

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

इस विषय को पुस्तक Pragramtic प्रोग्रामर में कुछ कवरेज हो जाता है।

2

स्क्रिप्टिंग और कॉन्फ़िगरेशन के मामलों के अलावा, मैं बस यह बताता हूं कि लूआ + सी (या लुआ + सी ++) सॉफ़्टवेयर विकास के लिए एकदम सही मैच है। यह एक इंजन/उपयोग इंटरफ़ेस बनाने की अनुमति देता है जहां इंजन सी/सी ++ में किया जाता है और लुआ में किए गए व्यवहार या अनुकूलन को किया जाता है।

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

कारणों से आप नहीं लुआ का उपयोग करना चाहते हैं यह भी उल्लेखनीय हैं।क्योंकि यह शायद ही कभी एक अच्छा डीबगर है। फिर फिर, लोगों को शायद ही कभी एक की आवश्यकता होती है। :)

0

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

3

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

लेकिन एक और उदाहरण के बारे में सोचें: वेबसर्वर और स्क्रिप्टिंग भाषा - (शुक्र है) आप अपाचे को दोबारा जोड़ने या अपाचे को पुनरारंभ किए बिना अपना PHP कोड बदल सकते हैं।

स्टीव येज ने अपने ही एमएमआरजीपी इंजन wyvern को ज्योथन या गैंडो और जावास्क्रिप्ट (याद नहीं कर सकते) का उपयोग करके उस चीज को किया। उन्होंने जावा में कोर इंजन लिखा, लेकिन प्रोग्राम पायथन/जावास्क्रिप्ट में तर्क।

इस का असर है:

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