मैं त्वरित ग्राफिक्स के लिए विकसित करने के लिए (या लगता है, अगर एक विकास में पहले से ही है) समर्थन के साथ एक रूपरेखा और एक प्रणाली इतनी छूट को संकलित करने के लिए पर बनाया गया ध्वनि चाहते हैं निम्नलिखित:एक खेल ढांचा दोनों वेब और देशी भाषाओं को लक्षित के निर्माण के लिए एक अच्छा मंच क्या है?
- देशी पीपीसी/86/x86_64/हाथ बाइनरी या एक भाषा है जो उन्हें संकलित
- जावास्क्रिप्ट
- ActionScript बाईटकोड या एक भाषा है जो यह करने के लिए संकलित (ActionScript 3, Haxe)
- वैकल्पिक जावा
मैं कल्पना, उदाहरण के लिए, एक API जहाँ मैं विंडो खोलने और ओपन की तरह कॉल कर सकते हैं बनाने और रूपरेखा एक कैनवास वस्तु, फ्लैश में 3 डी ग्राफिक्स, OpenGL ES 2 EGL के साथ साथ या तो WebGL के लिए एक अपेक्षाकृत कुशल तरीके से इस नक्शे , या एक्स 11, विंडोज, या कोको विंडो में डेस्कटॉप ओपनजीएल।
मैं अब तक इन रास्ते में देखा है में Haxe
- पेशेवरों
- खेल पुस्तकालय का निर्माण:
- लक्ष्य पीएचपी, जावास्क्रिप्ट, ActionScript बाईटकोड लिए मौजूद हैं, सी ++
- उच्च स्तर, वस्तु उन्मुख भाषा
- विपक्ष:
- अंत में {} ब्लॉक या विनाशकर्ता के लिए कोई समर्थन, संसाधन सफाई कठिन बना
- सी ++ लक्ष्य अत्यधिक अनुकूलित पुस्तकालयों का निर्माण करने के लिए कमरे की अनुमति नहीं है - विदेशी समारोह इंटरफेस सभी आदिम प्रकार की आवश्यकता है बॉक्सिंग जा एक रैपर ऑब्जेक्ट में, जैसे कि एक स्क्रिप्टिंग भाषा के लिए बाइंडिंग लिखना; ये रीयल-टाइम ग्राफिक्स और ऑडियो के लिए अनौपचारिक महसूस करते हैं, विशेष रूप से निम्न-स्तर के कार्यों का निर्यात करते हैं।
- प्रतीत नहीं करता है अभी तक
- खेल पुस्तकालय का निर्माण:
- परिपक्व एक अनुवादक बनाने के लिए सी पूर्वप्रक्रमक का उपयोग करना, मैक्रो
- पेशेवरों के साथ पूरी तरह से कार्यक्रमों लेखन:
- सीपीपी व्यापक और सरल है
- विपक्ष का उपयोग करने के लिए:
- यह एक कठिन कार्य है और शायद काम
- सीपीपी कार्यान्वयन सुविधाओं के लिए समर्थन में व्यापक रूप से भिन्न के लिए गलत उपकरण है (उदाहरण के लिएxcode सीपीपी का दावा C99 अनुपालन के बावजूद कोई variadic मैक्रो)
- नहीं है बहुत कम-से-नहीं इस मार्ग
- पेशेवरों के साथ पूरी तरह से कार्यक्रमों लेखन:
- में अनुकूलन के लिए कमरे में लक्षित करने के लिए C/C++ कई बैकेंड llvm के समर्थन का उपयोग करना वेब भाषाओं
- सकारात्मक:
- C/C++
- LLVM में कोड कर सकते हैं एक बहुत ही परिपक्व हाय है ghly अनुकूलन संकलक प्रदर्शन उदाहरण उदा।
- Actionscript लक्ष्य बंद स्रोत, unmaintained और त्रुटिपूर्ण है: वैश्विक इनलाइनिंग
- लक्ष्य actionscript (रसायन विद्या) और जावास्क्रिप्ट (emscripten)
- विपक्ष लिए मौजूद हैं।
- जावास्क्रिप्ट लक्ष्य उचित अनुकूलन के लिए एचटीएमएल 5 की सुविधाओं (टाइप किया गया सरणियों के साथ जैसे रैखिक स्मृति) का उपयोग नहीं करते और
- एक LLVM लक्ष्य निम्न स्तर के बाईटकोड से बदलना होगा, तो उच्च स्तरीय निर्माणों खो दिया है और फूला हुआ कर रहे हैं अपठनीय कोड अपरिपक्व हैं व्यक्तिगत निर्देशों का अनुवाद करने से बनाया गया है, जो एक तैयार किए गए जेआईटी को अनुकूलित करने के लिए और अधिक कठिन हो सकता है। "कूदें" निर्देशों में "गोटो" बयान वाले भाषाओं के लिए समस्याएं होती हैं।
- सकारात्मक:
- वेब भाषाओं
- पेशेवरों के लिए सी/C++ से एक अनुवादक लिखने के libclang का उपयोग करना:
- एक सुंदर पार्स कोड संरचना करने के लिए आसान पहुँच प्रदान पुस्तकालय
- कोड कर सकते हैं सी/सी ++
- में ऐप्पल से डेवलपर प्रयास प्रायोजित किया गया है
- विपक्ष:
- अधूरा; वर्तमान सुविधा सेट आईडीई लक्ष्य। मूल ऑपरेटर अप्रत्याशित होते हैं और उन्हें पहचानने के लिए लौटाए गए एएसटी तत्व से मैन्युअल रूप से पार्स किया जाना चाहिए।
- संकलन से पहले कोड का अनुवाद करना सी/सी ++ जैसे मानकों में माना गया अनुकूलन छोड़ सकता है।
- libclang के रूप में/C++ सी में कोड कर सकते हैं
- विपक्ष:
- पेशेवरों के लिए सी/C++ से एक अनुवादक लिखने के libclang का उपयोग करना:
- वेब भाषाओं
- पेशेवरों में अनुवाद करने clang के लिए नए कोड जनरेटर का निर्माण
- कोई एपीआई नहीं है; कोड संरचना अस्थिर है
- libclang का उपयोग करने से कहीं अधिक बड़ी नौकरी; बजना के धर्मशाला जटिल
- पेशेवरों में अनुवाद करने clang के लिए नए कोड जनरेटर का निर्माण
- में Common Lisp
- पेशेवरों खेल लाइब्रेरी बनाई हैं:
- लचीला, अच्छी तरह से विकसित भाषा
- व्यापक आत्मनिरीक्षण अनुवादकों लेखन को कम करना चाहिए
- अनुवादक कम से कम जावास्क्रिप्ट के लिए मौजूद हैं
- विपक्ष:
- अपरिचित भाषा
- कोई मानकीकृत पुस्तकालय कार्यों, व्यापक रूप से अलग कार्यान्वयन
- पेशेवरों खेल लाइब्रेरी बनाई हैं:
मैं इन रास्तों में से कौन सा आगे बढ़ाने चाहिए? क्या आप किसी अन्य, या किसी भी सिस्टम के बारे में जानते हैं जो उपयोगी हो सकता है?
क्या इस तरह की एक सामान्य परियोजना पहले से मौजूद है?
किसी भी इनपुट के लिए धन्यवाद।
मुझे उम्मीद है कि आपको कोई सार्थक समाधान नहीं मिलेगा। ये लक्ष्य प्लेटफॉर्म + भाषाएं कुछ मामलों में इतनी अलग हैं कि उन्हें एक साथ लक्षित करने की कोशिश करने की कोई बात नहीं है ... –
यह प्रश्न gamedev.se के लिए बेहतर अनुकूल हो सकता है। – Sean
इस समस्या से निपटने के लिए अन्य दृष्टिकोण हैं। इन कोडों के लिए एकल कोड बेस से पूरे गेम या गेम इंजन को लिखना असंभव के बगल में है। लेकिन आप स्क्रिप्ट का उपयोग कर सकते हैं या "प्लेयर इंजन" के शीर्ष पर वास्तविक गेम बनाने के लिए सी-प्रीप्रोसेसर मार्ग के साथ जा सकते हैं जो कम-स्तर की सामग्री का ख्याल रखता है। इन सभी प्लेटफॉर्म पर ऐसे इंजन को लिखना एक बड़ा काम होगा, लेकिन फिर भी दिलचस्प परियोजना होगी। स्वामित्व वाली प्रणालियों जैसे विशेष रूप से मोबाइल कंपनियों में हैं। कुछ विचारों के लिए कम से कम एकता 3 डी देखें। ऐसा लगता है कि आजकल मल्टीप्लार्टर गेम डेवलपमेंट के लिए काफी हिट है। – Virne