एकमात्र लाभ जो मैं वर्तमान में सोच सकता हूं, वह यह है कि आप recompile किए बिना, Lua के माध्यम से कुछ कोडिंग अपडेट कर सकते हैं।
इस की उपयोगिता को इतनी आसानी से छूट न दें। आप कभी भी यह नहीं समझ पाएंगे कि जब तक आप पुनर्मूल्यांकन कदम नहीं उठाते हैं तब तक आप कितने उत्पादक होंगे।
"प्रवाह" जब यह काम करने के लिए आता एक काफी अच्छी तरह से समझा मनोवैज्ञानिक अवधारणा है। प्रवाह यह है कि आप महसूस कर रहे हैं जब आप एक गतिविधि पर ध्यान केंद्रित कर रहे हैं, जब आप विश्लेषण कर रहे हैं और समस्याओं को लगभग बिना सोचे समझे हल कर रहे हैं, आदि "जब आप बह रहे हैं" तो आप अपने सबसे अधिक उत्पादक हैं।
संकलित समय सभी को खराब कर देता है। यदि आपके पास कुछ परीक्षण करने के लिए 10 सेकंड का संकलन है, तो प्रवाह में रहना मुश्किल है।
जब आप गेमप्ले का विकास कर रहे होते हैं, तो आपके पास आमतौर पर "तंग लूप" होता है। आपके पास एक विचार है, आप यह देखने के लिए एक परीक्षण को कोड करते हैं कि क्या यह काम करता है, और फिर आप इसे आज़माते हैं। यदि यह काम नहीं करता है, तो आप इसे संशोधित करते हैं और फिर से प्रयास करते हैं। प्रवाह को बनाए रखने के लिए "कोड-टू-टेस्ट" समय बहुत महत्वपूर्ण है। जितना संभव हो उतना छोटा होना महत्वपूर्ण है।
लुआ (या कोई भी एम्बेडेड स्क्रिप्टिंग भाषा) आपको केवल "संकलन" के बिना, बदलाव का परीक्षण करने की अनुमति देता है, लेकिन खेल में रहते हैं । आप अपने गेम का निर्माण कैसे करते हैं, इसके आधार पर, आप एक कमांड चला सकते हैं, जो गेम को रोकने और डेटा को फिर से लोड किए बिना नई स्क्रिप्ट के साथ पुनः आरंभ करेगा। इतना ही नहीं आपको recompile नहीं करना है, आपको re-run नहीं करना है।
ऐसा करने की क्षमता, उचित इंजन समर्थन को देखते हुए, नाटकीय रूप से उत्पादकता बढ़ा सकती है।
स्क्रिप्टिंग का एक और बड़ा फायदा सिर्फ देखभाल न करने की क्षमता है। यदि आपने C ++ लिखने में लंबा समय बिताया है, तो आप आश्चर्यचकित होंगे कि आप कितने समय के लिए मिनुते पर खर्च करते हैं। जहां मेमोरी डिलीट हो जाती है। जहां यह मुक्त हो जाता है। यहां तक कि अगर आप shared_ptr
हर जगह उपयोग कर रहे हैं , तो बस उन सभी प्रकार के नामों में टाइप करने का कार्य आपको धीमा कर देता है।
गतिशील रूप से टाइप की गई स्क्रिप्टिंग भाषा में, आपको ध्यान रखने की आवश्यकता नहीं है। स्कोपिंग सरल है। कार्य प्रथम श्रेणी की वस्तुएं हैं; आपको मैन्युअल रूप से फ़ंक्शंस बनाने की ज़रूरत नहीं है। कुछ चीजें करना इतना आसान है।
यदि आपके पास एक अनुशासित प्रोग्रामर नहीं है, तो अब नकारात्मक बातें हैं। Lua में ग्लोबल्स का उपयोग करना बहुत आसान है (हालांकि इसे रोकने के तरीके हैं)। देखभाल न करने का मतलब है कि जब आप कोड करते हैं तो आप बहुत मैला हो सकते हैं।
लेकिन फिर, बहुत मैला होने से फायदे हो सकते हैं ।
लुआ की एक और बात यह है कि यह एक अच्छा डेटा विवरण भाषा बनाता है। JSON की तरह ही एक जावास्क्रिप्ट फ़ाइल है जो एक सरणी / तालिका बनाता है और रिटर्न करता है, आप Lua स्क्रिप्ट बना सकते हैं जो टेबल लौटाते हैं।
यह कॉन्फ़िगरेशन फ़ाइलों के लिए उपयोगी है; लुआ का टेबल फॉर्मेट .ini प्रारूपों की तुलना में काफी बेहतर है। प्रारूप अभी भी स्वच्छ, कॉम्पैक्ट, और एक्स्टेंसिबल है।
ओह, और यह अभी भी एक लुआ स्क्रिप्ट है, इसलिए यह वास्तविक तर्क प्रदर्शन कर सकता है। इसका नकारात्मक पक्ष यह है ... ठीक है, यह एक लुआ स्क्रिप्ट है, इसलिए यह वास्तविक तर्क प्रदर्शन कर सकता है । यह खेल में विनाशकारी हो सकता है, क्योंकि उपयोगकर्ता संभावित रूप से चीजों को खराब करना शुरू कर सकता है।
लेकिन वास्तव में, यह आसानी से निपटा जाता है। लुआ को एम्बेडिंग के लिए डिज़ाइन किया गया है, जिसका अर्थ है कि अलगाव वास्तव में काफी आसान है। वास्तव में, एक ताजा लुआ राज्य डिफ़ॉल्ट रूप से कुछ भी नहीं प्रदान करता है ; आपको वास्तव में मानक लुआ पुस्तकालयों के सबसे मूल को उजागर करने के लिए कुछ करना होगा। फ़ाइल एक्सेस, गेम-स्टेट एक्सेस आदि, सभी ऑप्ट-इन है, ऑप्ट-आउट नहीं। और प्रत्येक लुआ राज्य एक दूसरे से अलग होता है। एआई स्क्रिप्ट के लिए आपके द्वारा उपयोग किया जाने वाला लुआ राज्य आपके द्वारा कॉन्फ़िगर की गई फ़ाइलों के लिए उपयोग किए जाने वाला लुआ राज्य नहीं होता है।
मेरे पास वास्तव में कुछ कोड हैं जो आपको कई Lua मानक पुस्तकालयों को पंजीकृत करने की अनुमति देता है, लेकिन सभी फ़ाइल IO को पार करता है और हटाता है। अंततः, एक लुआ लिपि-आधारित कॉन्फ़िगरेशन फ़ाइल जो सबसे खराब हो सकती है, वह आपके गेम को तुरंत चलाने के कारण क्रैश कर सकती है, इसे मेमोरी से बाहर चलाकर। और जब से आप इन कॉन्फ़िगर फ़ाइलों को मैन्युअल रूप से साझा नहीं कर रहे हैं, तो यह एक हैकर के लिए बहुत मजेदार नहीं होगा।
मैं कहूंगा कि किसी भी स्क्रिप्टिंग भाषा का सबसे बड़ा नकारात्मक पहलू डिबगिंग है। अधिकांश स्क्रिप्टिंग भाषाओं में डिबगर नहीं होते हैं, और लुआ अलग नहीं होता है। लूआ में सभी उपकरण हैं जिन्हें डीबगिंग टूल बनाने की आवश्यकता होगी। लेकिन यह वास्तव में एक डिबगर बिल्ट-इन नहीं है। आपको एक साथ रखना होगा। और इसके लिए एक उचित डिग्री की आवश्यकता होती है।
या आप "प्रिंटफ डीबगिंग" के कारण बना सकते हैं। यह वास्तव में इस बात पर निर्भर करता है कि आप कितना लुआ कोड लिखते हैं।