2010-06-13 2 views
5

पृष्ठभूमि:एक स्क्रिप्टिंग भाषा का उपयोग करने के लिए रिएक्टर सी ++ कोड?

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

प्रश्न:

जब, अगर कभी, यह पूरी तरह कार्यात्मक सी ++ कोड लेने के लिए और लुआ की तरह एक पटकथा भाषा में refactor करने के लिए उपयुक्त है?

प्रश्न जानबूझकर थोड़ा अस्पष्ट है, इसलिए दिए गए पृष्ठभूमि के लिए प्रासंगिक उत्तर देने में स्वतंत्र महसूस करें।

उत्तर

6

स्क्रिप्टिंग भाषा उन चीज़ों के लिए उपयोगी होती है जो अक्सर बदल सकती हैं या विस्तारित हो सकती हैं, और व्यापार को गति से बर्दाश्त कर सकती हैं।

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

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

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

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

+0

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

+0

@ जस्टिन: यह आपके लक्ष्यों पर निर्भर करता है। यदि यह निश्चित रूप से किया जाता है और आपको अंततः समाप्त होने की आवश्यकता होती है, तो इसे छोड़ दें और अन्य चीजों पर जाएं। लेकिन अगर यह एक सीखने की बात है, तो अभ्यास करने के लिए इसे बंद करें। – GManNickG

+0

आप एक संकर दृष्टिकोण का उपयोग कर सकते हैं। एआई के कुछ हिस्सों जो वैकल्पिक एआई द्वारा प्रयोग योग्य हो सकते हैं और गति महत्वपूर्ण है, सी में छोड़ा जा सकता है। लुआ लिपि केवल ऑर्केस्ट्रेटर होगा, कम या ज्यादा। –

2

जब, यदि कभी, तो पूरी तरह से कार्यात्मक सी ++ कोड लेने के लिए उचित है और इसे लुआ जैसे स्क्रिप्टिंग भाषा में दोबारा दोहराया जाए?

शायद ही कभी। यहाँ जब मैं यह किया है या नहीं:

  • मैं डिजाइन बदलने के लिए या तरीके कि मुझे आवश्यकता होगी वैसे भी सी ++ कोड को फिर से करने के लिए कार्यक्षमता जोड़ने के लिए चाहते थे।

  • मैं सी ++ कोड है कि मैं अधिक से अधिक बदल रहा रखा के कुछ हिस्सों में पाया गया।

  • मैं मानना ​​था कि लुआ को C++ से पलायन से है कि मैं पांच या दस गुना छोटे कोड बना सकते हैं।

पहले दो गोलियां कुछ भी कर सकती हैं। तीसरे कुछ अनुभव की आवश्यकता है।