मान लीजिए कि मेरे पास C ++ में लिखा गया एक गेम है। लेकिन मैं इसमें कुछ मोडिंग या स्क्रिप्टिंग कार्यक्षमता जोड़ना चाहता हूं। कोई आपके खेल में स्क्रिप्टिंग की कार्यक्षमता जोड़ने के बारे में कैसे जाएगा?
मान लीजिए कि मेरे पास C ++ में लिखा गया एक गेम है। लेकिन मैं इसमें कुछ मोडिंग या स्क्रिप्टिंग कार्यक्षमता जोड़ना चाहता हूं। कोई आपके खेल में स्क्रिप्टिंग की कार्यक्षमता जोड़ने के बारे में कैसे जाएगा?
जवाबों:
सबसे पहले, आपको यह तय करना चाहिए कि आपके खेल का कौन सा हिस्सा स्क्रिप्टेड है। एक विकल्प पूरी तरह से स्क्रिप्टेड गेम है, इस अर्थ में कि समय-महत्वपूर्ण बैकएंड संचालन को C ++ में कोडित किया गया है, सभी गेम तर्क स्क्रिप्टिंग भाषा में है। उच्च बैक स्क्रिप्टिंग भाषा से बुलाए गए एपीआई के रूप में डिजाइनर बैकएंड का उपयोग करते हैं। अन्य चरम पर, आपके पास कुछ विशिष्ट स्थान हो सकते हैं जहां स्क्रिप्ट का उपयोग किया जाता है, जैसे कि उपयोगकर्ता इंटरफ़ेस या स्क्रिप्टेड अनुक्रम, गेम कोड के अधिकांश भाग में अभी भी C ++ है। प्रत्येक दृष्टिकोण (गति, लचीलापन, संकलन समय, खेल का दायरा, आदि) के फायदे हैं, लेकिन आपको पहले से तय करने की आवश्यकता है।
एक बार जब आप जानते हैं कि आप स्क्रिप्टिंग का उपयोग कैसे करना चाहते हैं, तो आपको अब यह तय करने की आवश्यकता है कि क्या आप मौजूदा स्क्रिप्टिंग भाषा या अपनी स्वयं की डोमेन-विशिष्ट भाषा का उपयोग करने जा रहे हैं । आज विभिन्न डिजाइन लक्ष्यों और लक्षित दर्शकों के साथ चुनने के लिए कई स्क्रिप्टिंग भाषाएं हैं, इसलिए मुझे यकीन नहीं है कि यह आपके खुद के बनाने के लायक है। यदि आप अपने स्वयं के कार्यान्वयन का निर्णय लेते हैं, तो यहां कुछ संसाधन दिए गए हैं:
Lua एक लोकप्रिय हल्का और स्क्रिप्टिंग भाषा को एम्बेड करने में आसान है। यह मेजबान और एम्बेडेड भाषा के बीच संचार के लिए एक स्टैक का उपयोग करता है और इसे कई पेशेवर खेलों में सफलतापूर्वक उपयोग किया गया था । सोल 2 लुआ और सी ++ को बांधने की प्रक्रिया को सरल करता है। यदि आप लुआ के वाक्यविन्यास के शौकीन नहीं हैं, तो Moonscript एक ऐसी भाषा है जो लुआ के लिए संकलित है और सुविधाओं का एक अच्छा सेट जोड़ता है।
अन्य विकल्पों में एंजेलकोड शामिल है , जो आपको सीधे C और C ++ फ़ंक्शन को कॉल करने की अनुमति देता है। पायथन और रूबी एम्बेड करने के लिए थोड़ा अधिक जटिल हैं, लेकिन प्रोग्राम में बहुत सुखद हैं। यदि आप पायथन को एम्बेड करना चाहते हैं तो Boost.Python पर एक नज़र डालें । एक अन्य विचार जावास्क्रिप्ट को ब्राउज़रों के लिए विकसित तेज स्क्रिप्टिंग इंजन का लाभ उठाने के लिए एम्बेड कर रहा है (देखें V8 और स्पाइडरमोंकी )।
मैंने यहां DragonFire SDK का उपयोग करते हुए GameMonkey स्क्रिप्ट को गेम में एम्बेड करने के बारे में एक पोस्ट लिखी ।
मूल रूप से विचार यह है कि आप अपने चुने हुए स्क्रिप्टिंग भाषा के लिए अपने C \ C ++ फ़ंक्शन को उजागर करें और उन्हें अपनी स्क्रिप्ट से उपयोग करें। अपने ट्यूटोरियल में, मैंने ड्रैगनफ़ायर एसडीके के 2 कार्यों को उजागर किया। गेम शुरू होने पर, मैं स्क्रिप्ट से ऑनस्टार्ट फ़ंक्शन को कॉल करता हूं और अपडेट पर, मैं स्क्रिप्ट से ऑनटाइम फ़ंक्शन को कॉल करता हूं।
उम्मीद है की वो मदद करदे!