यह इस बात पर निर्भर करता है कि आप अपने मॉड सिस्टम को कैसे डिजाइन करना चाहते हैं। मैं उनमें से दो का पता लगाऊंगा।
एसडीके
सबसे अधिक संभावना है कि आपको अपने मॉड्यूल्स को उसी भाषा का उपयोग करना होगा जैसा आप करते हैं, और प्रतिबिंब के माध्यम से मॉड्स को लोड करें (या इसी तरह, अपनी पसंद की भाषा पर निर्भर करता है)। यह स्पष्ट रूप से आपको उन भाषाओं तक सीमित कर देगा जो देर से बाध्यकारी कर सकते हैं - और ऐसे कई अच्छे हैं जो यह कर सकते हैं (यहां तक कि सी कुछ चतुर LoadLibrary
चाल के साथ देर से बाध्यकारी भी कर सकते हैं )। आप कुछ मेटा-मोडिंग भी कर सकते हैं, जहां एक मॉड दूसरे मॉड्स (जैसे स्क्रिप्टेड मॉड) को होस्ट कर सकता है।
इस दृष्टिकोण के साथ पहली समस्या आंतरिक स्थिति को छिपा रही है। उदाहरण के लिए C # लेना एक मॉडयर्ड निजी सदस्यों तक पहुंचने के लिए प्रतिबिंब का उपयोग कर सकता है, C यह भी कर सकता है (हालांकि अधिक प्रयास की आवश्यकता है)।
दूसरी समस्या होस्टिंग है। लोग वास्तव में अपने सिस्टम पर चलने वाले विदेशी कोड को पसंद नहीं करते हैं जिसमें कोई सैंडबॉक्स नहीं है। सबसे खराब स्थिति के रूप में आप एक ऐसा मोड लिख सकते हैं जो सीडबॉक्स सेट करता है; यदि यह ISP में स्थापित किया गया था, तो यह उनकी प्रतिष्ठा को कुछ गंभीर नुकसान पहुंचा सकता है।
स्क्रिप्टिंग
मोड्स भाषा बनाने के लिए लुआ जैसी भाषा का उपयोग करेंगे। आपको या तो एक भाषा की आवश्यकता होगी जो मूल कोड (लुआ के साथ इंटरफेस करने के लिए) को आमंत्रित कर सकती है; या आपको अपनी पसंद की भाषा में अपनी स्क्रिप्टिंग भाषा लिखनी होगी।
यहां पहली समस्या यह है कि अधिकांश स्क्रिप्टिंग भाषाओं की व्याख्या की जाती है, जो वास्तविक समय प्रणालियों के लिए स्वीकार्य नहीं हो सकती हैं (हालांकि, लुजाना देखें); जैसे खेल।
विडंबना यह है कि दूसरी समस्या अभी भी यहाँ मौजूद है; एक उदाहरण के रूप में लुआ को ले कर मैं बेहद निराश था कि कोर / डिफॉल्ट लाइब्रेरी में 'शेलिंग-आउट' फ़ंक्शन शामिल हैं - इसे सैंडबॉक्स वाले वातावरण के रूप में पूरी तरह से बेकार बना देता है (बड़ी मात्रा में प्रयास, भाग्य और रखरखाव के बिना), यह मुश्किल है इस बारे में मैं कितना नाराज हूं, यह चित्रित करें, लेकिन मुझे आशा है कि जब वे इन विरोधी विशेषताओं को शामिल करते हैं तो वे कुछ मजबूत कॉकटेल पी रहे थे । आप स्पष्ट रूप से आसानी से इससे बच सकते हैं यदि आप अपनी भाषा को रोल करते हैं (देखें: अवास्तविकस्क्रिप्ट)।
अंत में एक पटकथा इंजन के साथ बातचीत की लागत निषेधात्मक हो सकती है - फिर से Lua को एक उदाहरण के रूप में लेते हुए, C #: C # के साथ संयुक्त जब देशी कार्यों (P / Invoke) के माध्यम से पर्याप्त ओवरहेड होता है और Lua काफी एक '' चैटी '' एपीआई है। यदि आप जिस तरह से 'स्क्रिप्ट एसडीके' डिजाइन करते हैं, तो आपकी प्राथमिक भाषा और आपकी स्क्रिप्टिंग भाषा के बीच बहुत अधिक चैटिंग की आवश्यकता होती है (सी ध्यान दें कि वास्तव में यह समस्या नहीं है)। फिर से आप अपनी स्वयं की स्क्रिप्टिंग भाषा (और C # के मामले में इसे MSIL में संकलित) लिखकर और इसे अपने [आभासी] पर्यावरण के तहत त्वरित तरीके से निष्पादित करके चकमा दे सकते हैं।
क्योंकि स्क्रिप्ट अनिवार्य रूप से आपके प्राथमिक कोड के लिए पूरी तरह से अलग प्रणाली पर चल रही है, आप आंतरिक स्थिति तक पहुंच को पूरी तरह से नियंत्रित कर सकते हैं (जब तक कि वे पहले उल्लेखित शेल फ़ंक्शन के साथ कुछ फैंसी सामान नहीं करते हैं)।
निष्कर्ष
मैंने थोड़ा ऑफ-टॉपिक किया है, हालाँकि, आप मूल रूप से पाठ की दीवार से क्या प्राप्त कर सकते हैं, यह है कि आप किसी भी भाषा में एक व्यवहार्य खेल बनाने में सक्षम होना चाहिए (मैं यह कहने के लिए उद्यम करूँगा कि आप कर सकते हैं ) - लेकिन कुछ भाषाओं में अधिक काम हो सकता है। क्या मैं सुरक्षा के बारे में थोड़ा गुदा हूँ? हां, आपको उपयोगकर्ता-कोड की बात आती है।