आप किसी खेल में स्क्रिप्टिंग भाषा कैसे जोड़ते हैं?


25

मान लीजिए कि मेरे पास C ++ में लिखा गया एक गेम है। लेकिन मैं इसमें कुछ मोडिंग या स्क्रिप्टिंग कार्यक्षमता जोड़ना चाहता हूं। कोई आपके खेल में स्क्रिप्टिंग की कार्यक्षमता जोड़ने के बारे में कैसे जाएगा?


सबसे लोकप्रिय भाषा: देखें लुआ (प्रोग्रामिंग भाषा) और लुआ (प्रोग्रामिंग langugae) - सी एपीआई उदाहरण: : आईबीएम इस पर एक बड़ा लेख है एम्बेडिंग LUA
तमारा Wijsman

सटीक चरण उस भाषा पर व्यापक रूप से निर्भर करते हैं जिसे आप जोड़ना चाहते हैं। Gamedev.stackexchange.com/questions/11/…
tenpn

जवाबों:


27

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

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

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

अन्य विकल्पों में एंजेलकोड शामिल है , जो आपको सीधे C और C ++ फ़ंक्शन को कॉल करने की अनुमति देता है। पायथन और रूबी एम्बेड करने के लिए थोड़ा अधिक जटिल हैं, लेकिन प्रोग्राम में बहुत सुखद हैं। यदि आप पायथन को एम्बेड करना चाहते हैं तो Boost.Python पर एक नज़र डालें । एक अन्य विचार जावास्क्रिप्ट को ब्राउज़रों के लिए विकसित तेज स्क्रिप्टिंग इंजन का लाभ उठाने के लिए एम्बेड कर रहा है (देखें V8 और स्पाइडरमोंकी )।


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

व्यक्तिगत रूप से मुझे गिल पसंद है , इसमें सी के साथ महान एकीकरण है। केवल समस्या गति है, लेकिन अगले कुछ महीनों में 2.0 रिलीज के साथ इसमें भी सुधार होना चाहिए।
जो डी

बहुत बढ़िया जवाब। पहले पैराग्राफ को सारांशित किया जा सकता है "गेम डेवलपर्स एक एपीआई बनाते हैं जो सामग्री के लिए खपत होती है।"
ashes999

कस्टम भाषाओं के लिए सामान्य शब्द (स्क्रिप्टिंग या अन्यथा) डीएसएल है, जो यह जानने में मदद कर सकता है कि क्या आप पढ़ना चाहते हैं।
पैट्रिक ह्यूजेस

2

मैंने यहां DragonFire SDK का उपयोग करते हुए GameMonkey स्क्रिप्ट को गेम में एम्बेड करने के बारे में एक पोस्ट लिखी ।

मूल रूप से विचार यह है कि आप अपने चुने हुए स्क्रिप्टिंग भाषा के लिए अपने C \ C ++ फ़ंक्शन को उजागर करें और उन्हें अपनी स्क्रिप्ट से उपयोग करें। अपने ट्यूटोरियल में, मैंने ड्रैगनफ़ायर एसडीके के 2 कार्यों को उजागर किया। गेम शुरू होने पर, मैं स्क्रिप्ट से ऑनस्टार्ट फ़ंक्शन को कॉल करता हूं और अपडेट पर, मैं स्क्रिप्ट से ऑनटाइम फ़ंक्शन को कॉल करता हूं।

उम्मीद है की वो मदद करदे!


1
मैंने यहां एक वीडियो डेमो भी अपलोड किया है: bit.ly/dnCkar
astk
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.