मैं अपने सी ++ गेम इंजन में स्क्रिप्टिंग क्षमताओं को जोड़ना चाहता हूं।रैकेट एक गेम इंजन में स्क्रिप्टिंग भाषा के रूप में
मैं Engine.exe
, Physics.dll
, Audio.dll
है और मैं Scripting.dll
जो एक उच्च स्तरीय रैकेट आवरण है जोड़ रहा।
Engine.exe
Physics.dll
लोड करता है और भौतिकी दुनिया सेट करता है, Audio.dll
लोड करता है और ऑडियो दुनिया सेट करता है। यह Physics.dll
, Audio.dll
पर बाइंडिंग सेट करने और गेम स्क्रिप्ट लोड करने के लिए Scripting.dll
लोड करना है।
AFAIK वहाँ एक सी ++ प्रोग्राम में रैकेट एम्बेड करने के लिए दो संभव तरीके हैं:
Foreign Interface का उपयोग Physics.dll
, Audio.dll
दो बार लोड करने के लिए आवश्यकता के कारण विचित्र लगता है: पहले Engine.exe
और फिर गेम स्क्रिप्ट से।
लेखन Extensions अधिक आकर्षक लग रहा है, क्योंकि यह सी ++ पक्ष पर स्क्रिप्ट बाइंडिंग करने की अनुमति देता है। दूसरी तरफ आपको raco ctool
के साथ अपना एक्सटेंशन बनाना होगा, इसे mzdyn
ऑब्जेक्ट फ़ाइल से लिंक करें - जो अजीब दिखता है: क्यों mzdyn
एक स्थिर लाइब्रेरी नहीं बनाते?
मैं एक विधि को लागू करना चाहता हूं, उदा। setupScriptBindings()
, Physics.dll
और Audio.dll
दोनों में, और इसे स्टार्टअप पर Engine.exe
से कॉल करने के लिए।
क्या ऐसा करने का कोई सीधा तरीका है?
एचएम, शायद [यह] (http://docs.racket-lang.org/inside/embedding.html) विवरण मदद करता है। –
एचएम ... आपके द्वारा प्रदान किए गए लिंक सी/अन्य कोड ** को ** रैकेट प्रोग्राम में एम्बेड करने के बारे में बात करते हैं। आपके विवरण से, मुझे लगता है कि आप इसे दूसरी तरफ चाहते हैं, उदा। रैकेट को अपने सी ++ एप्लिकेशन में एम्बेड करना: http://docs.racket-lang.org/inside/embedding.html हालांकि सबसे आसान और संभवतः सबसे साफ समाधान आपके गेम इकाइयों को नियंत्रित करने के लिए कुछ प्रकार के प्रोटोकॉल को परिभाषित करना होगा, और फिर रैकेट शुरू करना होगा एक नई प्रक्रिया के रूप में, सॉकेट या कुछ अन्य आईपीसी तंत्र का उपयोग करके संचार। –
ऑफटॉपिक: रैकेट का सफलतापूर्वक शरारती कुत्ते द्वारा वीडियो गेम उत्पादन में उपयोग किया गया है। देखें [«प्लेस्टेशन 3 पर रैकेट]] (http://www.youtube.com/watch?v=oSmqbnhHp1c) और [« अनचाहे 2 में राज्य-आधारित स्क्रिप्टिंग: चोरों के बीच »] (http: //www.gameenginebook .com/संसाधन/gdc09-statescripting-uncharted2.pdf)। –