मैं अपने ऐप के विभिन्न हिस्सों को सरल स्क्रिप्ट में स्थानांतरित करना चाहता हूं, ताकि उन लोगों को अनुमति दी जा सके जो सी ++ का मजबूत ज्ञान नहीं रखते हैं ताकि विभिन्न सुविधाओं को संपादित और कार्यान्वित किया जा सके।सी ++ ऐप में स्क्रिप्ट को कार्यान्वित करना
क्योंकि यह एक वास्तविक समय ऐप है, इसलिए मुझे इन स्क्रिप्ट के लिए कुछ प्रकार के मल्टीटास्किंग की आवश्यकता है। आदर्श रूप में मैं इसे चाहता हूं ताकि सी ++ ऐप एक स्क्रिप्ट फ़ंक्शन को कॉल करता है जो तब भी जारी रहता है (सी ++ थ्रेड के नीचे) जब तक कि कोई पॉज़ पॉइंट (प्रतीक्षा करें (x)), या यह वापस आ जाता है। इसके इंतजार के मामले में राज्य को स्क्रिप्ट के लिए अगली बार फिर से शुरू करने की जरूरत है जब अगली बार अवधि समाप्त हो जाने के बाद ऐप लूप हो जाए।
स्क्रिप्ट को सी ++ वर्ग विधियों को कॉल करने में सक्षम होने की आवश्यकता है, आदर्श रूप से सी ++ कक्षाओं के आसपास सादे रैपर कार्यों के बजाय सी ++ कक्षाओं का उपयोग करना।
मैं इसे लागू करने में भारी मात्रा में खर्च नहीं करना चाहता, इसलिए मौजूदा स्क्रिप्टिंग भाषा का उपयोग करके मुझे अपना लिखना पसंद है। मैंने सुना है कि पायथन और लुआ को सी ++ ऐप में एकीकृत किया जा सकता है, लेकिन मुझे नहीं पता कि मेरे लक्ष्यों को प्राप्त करने के लिए इसे कैसे किया जाए।
- लिपियों
- लिपियों के लिए "ठहराव" जब कुछ कार्यों कहा जाता है (उदाहरण के लिए। रुको) सक्षम होना चाहिए C++ कार्यों कॉल करने के लिए सक्षम होना चाहिए, और C++ धागा
- आवश्यकताओं द्वारा फिर से पुन: आरंभ किया तेजी से होने के लिए - यह एक वास्तविक समय ऐप के लिए है और संभावित रूप से बहुत सी स्क्रिप्ट चल रही हैं।
मैं शायद मल्टीटास्किंग कोड को काफी आसानी से रोल कर सकता हूं, बशर्ते स्क्रिप्ट को सहेजा जा सके और फिर से शुरू किया जा सके (संभवतः मूल रूप से एक अलग थ्रेड द्वारा)।
लूआ ने आपके गेम के साथ वास्तव में काम कैसे किया है? उदाहरण के लिए प्रत्येक स्क्रिप्ट पूरी तरह से अपने स्वयं के धागे में पूरी तरह से चलती है, क्या प्रत्येक स्क्रिप्ट एक फ़ंक्शन की तरह संभाली जाती है (यानी कॉलिंग थ्रेड में इसे तब तक चलाना), या अपने स्वयं के मिनी-प्रोग्राम (जैसे मैंने ऊपर वर्णित) की तरह? –
लुआ स्क्रिप्ट "थ्रेड" में चल सकती हैं और आवश्यक रूप से कार्यों की तरह इनलाइन को संभालने की आवश्यकता नहीं है। यह वही करेगा जो आप चाहते हैं। – Mark
ठीक है। मैं इसके बारे में एक और अधिक विस्तृत रूप ले जाऊंगा और कुछ परीक्षणों को लिखने के लिए लिखूंगा कि मैं इसे अपने कोड बेस के साथ कैसे एकीकृत करना चाहता हूं :) –