2013-07-16 3 views
6

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

अब तक मैं कोशिश की है:

  • लुआ: यह काम करता है, लेकिन वैश्विक सी ++ कार्यों लपेटकर के आसपास यह दर्द है, और वस्तुओं लपेटकर और भी मुश्किल है। इसके अलावा, मैं वास्तव में लुआ के वाक्यविन्यास से नापसंद करता हूं।
  • एंजेलस्क्रिप्ट: इसे काम पर नहीं मिल सका। शुरुआती दस्तावेज absymal है, क्योंकि पहले उदाहरण संकलित नहीं करते हैं, और आपको पहले बहुत सारे ऐड-ऑन बनाना होगा। लपेटना सी ++ ऑब्जेक्ट्स और फ़ंक्शंस लुआ से आसान दिखता है लेकिन यह अभी भी क्लीनर हो सकता है। सिंटेक्स ठीक लग रहा है।
  • चाइस्क्रिप्ट: इसे काम पर नहीं मिल सका। मुझे गैर-गिट और गिट सी ++ 11 संस्करणों के साथ बहुत सारी त्रुटियां मिलीं। मैं बूस्ट संस्करण का उपयोग नहीं करना चाहता, क्योंकि मैं अपनी परियोजना में निर्भरता के रूप में बढ़ावा देना नहीं चाहता हूं। लपेटना आसान लग रहा है, और वाक्यविन्यास ठीक है।

मैं भी जांच की है:

  • पाईक: वाक्य रचना अच्छा लग रहा है, लेकिन मैं embedding के बारे में कोई प्रलेखन पाया।
  • गिलहरी: मुझे वाक्यविन्यास पसंद नहीं है, और एम्बेडिंग/रैपिंग लुआ के रूप में परेशान है, जो ढेर से निपटने के लिए है।

तो:

  • वहाँ एक अच्छा तेजी, सी की तरह वाक्यविन्यास, आसान एम्बेड करने के लिए, आसान विकल्प रैप करने के लिए है?
  • यदि नहीं है - एक स्क्रिप्टिंग भाषा के निर्माण पर सबसे अच्छा सीखने के संसाधन क्या हैं? मुझे पहिया को फिर से शुरू करना पसंद है, और यह एक दिलचस्प सीखने का अनुभव हो सकता है।
+0

क्या संकलक आप उपयोग कर रहे हैं हो सकता है?वर्तमान में वीसी ++ को चैस्क्रिप्ट 5 द्वारा समर्थित नहीं है क्योंकि वीसी ++ में मौलिक सी ++ 11 फीचर्स की कमी है ... – MFH

+0

@ एमएफएच: क्लैंग 3.4 –

+0

एक स्क्रिप्टिंग भाषा बनाना स्वयं एक महान सीखने का अनुभव है। हालांकि इसमें कुछ समय लगेगा, बहुत अच्छे उपकरण हैं जो दर्द को आसान बनाता है। अग्रभाग के लिए मैं यह देखने की अनुशंसा करता हूं: http://goldparser.org/ – Tim

उत्तर

3

सी-तरह वाक्य रचना के लिए, चेकआउट

  • Ch एक वाणिज्यिक, तब एम्बेड सी दुभाषिया
  • CINT एक खुला स्रोत C/C++ दुभाषिया
  • Pawn - एक "सरल, typeless, 32- सी-जैसे सिंटैक्स के साथ बिट एक्सटेंशन भाषा "

शायद आपके लिए नहीं, लेकिन इस सवाल के रूप में अन्य विकल्पों की एक सूची को चालू करें जो दिलचस्प लगेगा, मैं आपको QtScript प्रदान करता हूं जो आपको जावास्क्रिप्ट-जैसी वाक्यविन्यास देता है। लपेटना सरल हो सकता है, लेकिन आपको इसे करने के लिए क्यूटी ढांचे को अपनाना होगा, विशेष रूप से सिग्नल और स्लॉट की अवधारणा।

फ़ायरफ़ॉक्स से जेएस इंजन भी SpiderMonkey है।

-1

आप अजगर को देख पर विचार हो सकता है: http://www.codeproject.com/Articles/14192/Embedding-Python-In-Your-C-Application

+0

ओपी ने विशेष रूप से "सी-जैसे" वाक्यविन्यास के लिए पूछा, एक दुभाषिया के साथ जो एम्बेड करना आसान है। लेटर काफी व्यक्तिपरक है, फिर भी पाइथन – Julien

0

मैं पटकथा भाषा के रूप में अजगर का उपयोग कर seconded, मैं अपने कार्यक्रम (नहीं एक खेल) और काफी इससे संतुष्ट में boost python से पहले हुआ करता था। यदि आप अपनी स्क्रिप्ट बनाने का प्रयास करना चाहते हैं, तो आप boost spirit

+0

को संदर्भित करने के लिए आसान नहीं है, लेकिन ओपी अपनी परियोजना में निर्भरता के रूप में बढ़ावा देना नहीं चाहता है। –

+2

@PaperBirdMaster Boost.Python का उपयोग नहीं करना चाहता क्योंकि "यह बूस्ट पर निर्भरता पेश करता है" मुझे इस बारे में याद दिलाता है [एक डूबने वाले आदमी के बारे में मजाक] (http://www.spiritual-short-stories.com/spiritual-short- कहानी-101-डूबने + Man.html) कोई भी स्क्रिप्टिंग भाषा एक निर्भरता पेश करेगी, और बीसीपी का उपयोग केवल बूस्ट के आवश्यक हिस्सों को अलग कर सकती है। – TemplateRex

+0

मैं मूल रूप से आपके साथ @TemplateRex से सहमत हूं, लेकिन ओपी को बताता हूं, यह वह है जिसने प्रतिबंध लगाया था;) –

3

को आजमा सकते हैं आप जावास्क्रिप्ट का उपयोग कर सकते हैं। V8 स्क्रिप्टिंग इंजन को आपके प्रोग्राम में एम्बेड किया जा सकता है और expose your types पर दस्तावेज़ कैसे है।

+1

यह बहुत तेज है, कुछ कहने लायक है! – Tim

1

दूसरों ने जो सुझाव दिया है उसके अलावा, Cling भी है जिसे प्रयोगात्मक समझा जाता है। एक स्क्रिप्टिंग भाषा लिखना आसान नहीं है, लेकिन आजकल आप कम से कम बैक एंड के लिए LLVM का सहारा ले सकते हैं। एन। विर्थ द्वारा पुराने "एल्गोरिदम + डेटा स्ट्रक्चर = प्रोग्राम्स" में प्रोग्रामिंग भाषा डिजाइन पर संक्षेप में चर्चा की गई है (लेकिन नवीनतम संस्करण में सामग्री विषय की जांच करें, जिसे अध्याय हटा दिया गया था) और यदि आप Google पर लेखक की खोज करते हैं, तो आप ' विषय के बारे में कुछ अन्य प्रकाशन के साथ निश्चित रूप से खत्म हो जाएगा।

2

आप Cling जैसे कुछ के माध्यम से सी ++ का उपयोग कर सकते हैं।

आपको अपने स्थिर सी ++ प्रोग्राम के साथ परिचित वाक्यविन्यास और आसान एकीकरण मिलता है।

Qt + Cling, the LLVM based C++ interpreter (2:05)

3

आप दाव (http://daovm.net, https://github.com/daokoder/dao) में रुचि हो सकती।

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

#include "stdio.h" 
#include "daoValue.h" 
static void Square(DaoProcess *proc, DaoValue *param[], int nparam) 
{ 
    daoint num = param[0]->xInteger.value; 
    DaoProcess_PutInteger(proc, num*num); 
} 
int DaoOnLoad(DaoVmSpace *vmspace, DaoNamespace *nspace) 
{ 
    DaoNamespace_WrapFunction(nspace, Square, "Square(num : int) => int"); 
    return 0; 
} 

आपने गौर कर सकते हैं वहाँ लिपटे समारोह में पैरामीटर प्रकार की जाँच के लिए कोई बॉयलरप्लेट कोड है कि: यहाँ एक सरल उदाहरण है। ऐसा इसलिए है क्योंकि यह फ़ंक्शन Square(num:int)=>int के रूप में पंजीकृत है, जिसका अर्थ है कि यह फ़ंक्शन केवल पैरामीटर के रूप में पूर्णांक स्वीकार कर सकता है, और दाओ रनटाइम द्वारा इसकी गारंटी है।

आपको यह भी जानने में रुचि हो सकती है कि इसमें सी/सी ++ बाइंडिंग की स्वचालित/अर्धसूत्रीय पीढ़ी के लिए क्लैंग पर आधारित टूल भी है।

अस्वीकरण: मैं इस भाषा का लेखक हूं।

0

आप ObjectScript

ObjectScript, लघु लिए ओएस में रुचि हो सकती है, एक नई प्रोग्रामिंग भाषा है। यह मुफ़्त, क्रॉस-प्लेटफॉर्म, लाइटवेट, एम्बेड करने योग्य और ओपन-सोर्स है। यह जावास्क्रिप्ट, लुआ, रूबी, पायथन और PHP सहित कई भाषाओं के लाभों को जोड़ती है। ओएस में जावास्क्रिप्ट का सिंटैक्स, लुआ से "एकाधिक परिणाम" सुविधा, रुबी से सिंटैक्टिक शूगर के साथ-साथ PHP और रूबी से जादू विधियां भी शामिल हैं - और भी बहुत कुछ!

मिनिमल प्रोग्राम का उपयोग किया ObjectScript इस

#include <objectscript.h> 
using namespace ObjectScript; 
int main(int argc, char* argv[]) 
{ 
    OS * os = OS::create(); // craete ObjectScript instance 
    os->require("main.os"); // run ObjectScript program 
    os->release();   // release the ObjectScript instance 
    return 0; 
} 
संबंधित मुद्दे