C ++ गेम प्रोजेक्ट के लिए आप किस स्क्रिप्टिंग भाषा की सिफारिश करेंगे? [बन्द है]


14

यहाँ स्क्रिप्टिंग से मेरा मतलब है कि स्क्रिप्ट को सिर्फ स्क्रिप्ट में डालना नहीं, बल्कि प्रोजेक्ट के कुछ हिस्सों को स्क्रिप्ट करना जैसे कुछ क्लास मेथड्स, टेस्ट स्पेसिफिक गेम लूप, आदि। यह सिर्फ विकास को गति देने के लिए नहीं होगा, बल्कि खिलाड़ियों को इनमें से कुछ देखने की अनुमति भी देगा। स्क्रिप्ट खेल के कुछ पहलुओं को मोड़ने के लिए।

कुछ भाषा जैसे लुआ में कुछ रैपर होते हैं जैसे लुबाइंड, लेकिन जब मैंने इसे अतीत में उपयोग किया है तो इसमें समस्याएँ थीं क्योंकि यह वंशानुक्रम के संदर्भ में विधि पुनर्वितरण का समर्थन नहीं करता था।

उपयोग करने या न करने के लिए भाषा / आवरण के आपके सुझाव क्या हैं?

जवाबों:


9

लुआ-स्क्रिप्टेड वीडियो गेम
लुआ-स्क्रिप्टेबल गेम इंजन

मुझे लगता है कि लुआ सबसे अच्छा शॉट है।

यह लेख Lua और C ++ को एकीकृत करने के बारे में है। इसे कहते हैं:

LuaBind महान उत्पाद है लेकिन मेरे लिए यह बहुत जटिल लग रहा था। एक के लिए कोड का पालन करना आसान नहीं है जहां कक्षाएं और ऑब्जेक्ट हैं। यह भी देखकर कि मैं Lua को एक wxWidgets एप्लिकेशन में एकीकृत करना चाहता था, टेम्प्लेट का उपयोग करना कोई नहीं था (आप wxWidgets साइट पर क्रॉस-प्लेटफ़ॉर्म मुद्दों को पढ़ सकते हैं)।

कई अन्य बाध्यकारी पुस्तकालय हैं:

http://luabridge.sourceforge.net/
http://www.stackedboxes.org/~lmb/diluculum/
http://cpplua.sourceforge.net/
http://www.tecgraf.puc-rio.br/~ celes / tolua /

सबसे अच्छा C ++ / Lua आवरण क्या है?

बस चयन करें और आनंद लें।


हां, लुआ सी के साथ एकीकृत करने के लिए बहुत सरल और बहुत आसान है। वास्तव में, यह लुआ का मुख्य उद्देश्य है, एक एम्बेडेड भाषा होने के नाते।
मार्को मस्टैपिक

LuaBind पर संदर्भ के लिए धन्यवाद, शायद अन्य बाध्यकारी पुस्तकालयों में खुदाई मुझे फिर से Lua लेने के लिए मनाएगी
Frédérick Imbeault

मैं केवल मुख्य स्क्रिप्ट में आपकी स्क्रिप्ट चलाने का सुझाव दूंगा, और यदि प्रदर्शन एक चिंता का विषय है, तो इसके लिए एक पूल आवंटनकर्ता प्रदान करें।
काइलोतन

5

मैं Chaiscript पसंद कर रहा हूँ ; मैं बहुत लंबे समय से इसका उपयोग नहीं कर रहा हूं, लेकिन यह अब तक बहुत ठोस है।

पायथन या लुआ के विपरीत, यह जमीन से C ++ के साथ उपयोग किए जाने के लिए बनाया गया है। बाइंडिंग प्रक्रिया ल्युबिंड / आदि की तुलना में बहुत साफ लगती है।

यहां देखें वेबसाइट का सारांश:

ChaiScript पहली और एकमात्र स्क्रिप्टिंग भाषा है जिसे C ++> संगतता को ध्यान में रखते हुए जमीन से तैयार किया गया है। यह एक ECMAScript- प्रेरित, एम्बेडेड कार्यात्मक जैसी भाषा है।

ChaiScript BSD लाइसेंस के तहत लाइसेंस प्राप्त है।


दिलचस्प। प्रदर्शन परीक्षणों के बारे में क्या? क्या कोई ChaiScript / Lua / Python तुलना है?
२:३१

काफी दिलचस्प है, क्या आपके पास अब तक के माध्यम से आया कोई भी नुकसान / बग / प्रदर्शन इस्स है?
Frédérick Imbeault

मैंने कोई मानदंड नहीं देखा है, लेकिन मुझे अभी तक कोई प्रदर्शन समस्या नहीं हुई है ... मेरी मुख्य पकड़ अभी तक यह है कि यह संख्यात्मक प्रकारों के बीच परिवर्तित नहीं होता है (इसलिए यदि आप कोई इंट पास करते हैं तो आपको एक त्रुटि मिलती है एक समारोह एक नाव ले, आदि)।
रिले एडम्स

1
सिर्फ एक FYI करें, क्योंकि यह टिप्पणी अभी 6 साल पुरानी है - ChaScript अब निहित सांख्यिक रूपांतरण करता है।
लेनिकस जू

5

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

आप इस गेम इंजन अवलोकन को पढ़ सकते हैं । एक Scriptingकॉलम है। आप देख सकते हैं कि लुआ और पायथन सबसे लोकप्रिय स्क्रिप्टिंग भाषाएं हैं।


बूस्ट के बारे में, मुझे लगता है कि शायद यह एक विशाल पुस्तकालय है और सभी परियोजनाओं में बहुत सी चीजें काफी उपयोगी नहीं हैं। वास्तव में luabind बूस्ट का उपयोग करते हैं और यह उन चीजों में से एक है जो मुझे पसंद नहीं थे।
फ्रैडरिक इमबुल्ट

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

1
और आप केवल उन बूस्ट लाइब्रेरी (हेडर) को शामिल करते हैं जिनकी आपको आवश्यकता है। बूस्ट बहुत बड़ा है, लेकिन आपको तब तक कोई परवाह नहीं है, जब तक आपको इसकी आवश्यकता नहीं है।
21२१०

और अजगर और लुआ के बारे में, क्या सी ++ के लिए कुछ रैपर हैं जो आपको क्लास के तरीकों को फिर से परिभाषित करने, नए तरीके बनाने आदि की अनुमति देते हैं? और क्या यह सुविधा C ++ कोड (सुरक्षा के लिए) से नियंत्रित की जा सकती है? जैसा कि मैंने कहा, LuaBind इन चीजों को करता है, लेकिन विरासत के संदर्भ में विफल रहता है, जो एक गेम प्रोजेक्ट में काफी आम है। मैं जिन तरीकों को पुनर्परिभाषित करना चाहूंगा, वे उदाहरण के लिए हैं, विशिष्ट गेम लूप का परीक्षण, खिलाड़ियों की संस्थाओं के अपडेट के तरीके, खेल की दुनिया की अपडेट विधि, आदि
Frédérick Imbeault

लुआ में कक्षाएं और ऑब्जेक्ट नहीं हैं, लेकिन उन्हें तालिकाओं द्वारा अनुकरण किया जा सकता है। यहाँ OOP के लिए एक Lua लाइब्रेरी है जो मुझे पसंद है: love2d.org/wiki/MiddleClass
13

4

अपना खुद का निर्माण क्यों नहीं?

यदि आपके पास समय, धैर्य और सीखने की इच्छा है - आप हमेशा अपने स्वयं के स्क्रिप्टिंग इंजन को उन सभी विशेषताओं और सिंटैक्स के साथ विकसित करने का प्रयास कर सकते हैं जिनकी आपको आवश्यकता है।

लाभ

  1. आप कंप्यूटर विज्ञान के एक दिलचस्प हिस्से के बारे में जानेंगे।
  2. एक 'इन-हाउस' स्क्रिप्टिंग इंजन विकसित करके, यह आपको शुरू से अंत तक पूरा नियंत्रण देता है कि आप इंजन को ठीक उसी तरह से अनुमति दे सकें जो आपको चाहिए।
  3. यदि आपको बाद में सड़क के नीचे कोई बदलाव करने की आवश्यकता है, तो वे किसी और के बाहर और बाहर सीखने के बजाय, अपने खुद के कोडबेस के अंदर और बाहर जानने में कुछ आसान बना सकते हैं।
  4. आपको अपने इंजन को किसी और के पैच के साथ अद्यतित रखने के बारे में चिंता करने की आवश्यकता नहीं होगी।

नुकसान

  1. समय। बहुत से लोगों के पास नहीं है। यदि आपको अभी कुछ चाहिए, तो पहले से मौजूद इंजन (जैसे पहले से सुझाए गए लोगों में से एक) को आज़माएँ।

  2. स्पीड। बहुत सारे मौजूदा स्क्रिप्टिंग इंजन बहुत तेज़ हैं - एक कस्टम समाधान उतना तेज़ नहीं हो सकता है।

  3. समुहआकार। बहुत सारे मौजूदा स्क्रिप्टिंग इंजनों में कोडबेस पर काम करने वाले लोगों की बड़ी टीमें होती हैं, चाहे वह निजी टीम हो या वैश्विक स्वयंसेवक हों, कोड के लिए कही जाने वाली चीज़ होती है जिसे कई अन्य लोगों द्वारा चेक और री-चेक किया जाता है।

  4. एक स्क्रिप्टिंग इंजन को प्रभावी ढंग से खींचने के लिए प्रारंभिक योजना की एक निश्चित मात्रा की आवश्यकता होती है। बहुत सारे जमीनी कार्य करने की आवश्यकता है जो कि वास्तविक पटकथा इंजन के साथ बिल्कुल भी नहीं हो सकते हैं।

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

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

मुझे लगता है कि लोगों को "आलस्य" और "पहिया का फिर से आविष्कार नहीं करना" का आनंद लेना चाहिए, लेकिन मुझे लगता है कि यह सीखने के बारे में कुछ कहा जाना चाहिए कि यह सामान कैसे किया जाता है। और एक विशिष्ट कार्यान्वयन संभवतः जेनेरिक कार्यान्वयन की तुलना में आपकी परियोजना के लिए बेहतर होने वाला है।

"C ++ में स्क्रिप्टिंग सिस्टम बनाना" उस पसंदीदा लेख (लेखों) को लगता है, जिसे लोग चर्चा करते समय साझा करते हैं: http://www.gamedev.net/reference/list.asp?categoryid=76


2
मैंने इस बात पर सहमति जताई कि इसका एक विशेष शैक्षिक लाभ है। फिर भी इसके लिए प्रोग्रामिंग भाषाओं के सिद्धांत में कुछ ज्ञान और कौशल की आवश्यकता होती है (जो कि बहुत से लोगों को लगता है कि उनके पास है) और कम्प्यूटिंग के सिद्धांत में कुछ ज्ञान है। यदि यह किसी को अपील करने वाले सीम का उत्तर देता है, तो मैं दो पुस्तकों का सुझाव दूंगा: amazon.com/gp/product/0136073476/ref=oss_product और amazon.com/gp/product/0534950973/ref/oss_product
Frédérick Imbeault

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

वहाँ किया गया था कि। पार्सिंग, कंपाइलर डिज़ाइन, बाइटकोड मशीन, यह सब सामान के बारे में बहुत कुछ सीखा । अगली बार मैं शायद लूआ का उपयोग करूँगा और इसकी सराहना करूँगा। :)
काज़ ड्रैगन

2

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


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.