2012-07-27 17 views
5

मुझे एहसास है कि उपरोक्त प्रश्न इतना व्यापक है इसलिए मैं इसे कम कर दूंगा। मेरे पास एक साधारण ओपनग्ल सी ++ गेम इंजन है जो स्थिर पुस्तकालय में रहता है (गतिशील lib में परिवर्तित किया जा सकता है)।वेब पर पोर्ट सी ++ गेम का सबसे अच्छा तरीका

मैं इसे वेब पर चलाने के तरीकों के बारे में सोच रहा हूं। जो मैं देख सकता हूं उससे मैं ब्राउजर में सी ++ कोड चलाने के लिए ActiveX या Google NaCl का उपयोग कर सकता हूं। लेकिन ये प्रौद्योगिकियां आसानी से पार मंच नहीं लगती हैं? या शायद मैंने गलत समझा है।

मैंने देखा एक और विकल्प इंजन को जावास्क्रिप्ट और वेबजीएल में परिवर्तित कर रहा है और एचटीएमएल 5 कैनवास में चल रहा है। क्या यह सी ++ से धीमा होगा? हालांकि यह बहुत पार मंच होगा।

आपको क्या लगता है कि सबसे अच्छा विकल्प है, या बेहतर अभी तक कोई अन्य विकल्प है जिसे मैंने याद किया है?

संपादित करें: एकता वेबप्लेयर के समान कस्टम प्लगइन के बारे में क्या?

+0

मुझे डर है कि ऐसा करने का कोई आसान और पोर्टेबल तरीका नहीं है। शामिल प्रौद्योगिकियां बहुत अधिक भिन्न हैं। मुझे पता है कि क्वैक III को वेब पर "पोर्ट किया गया" था, लेकिन मुझे विश्वास है कि उन्हें बहुत कुछ लिखना था। – ereOn

+0

इसलिए यदि मैं ActiveX प्रकार तकनीकों का उपयोग करना चाहता हूं तो मुझे प्रत्येक वेब ब्राउज़र के लिए एक अलग संस्करण लिखना होगा? – Constan7ine

उत्तर

4

वास्तव में इसके साथ मदद करने के लिए वहां कई तकनीकें हैं। यहाँ तीन मैं पार चला गया है, लेकिन साथ कम से कम/कोई अनुभव नहीं है है:

+0

मर्मलेड बहुत अच्छा लग रहा है! बहुत बहुत धन्यवाद! – Constan7ine

+0

ईएमएसस्क्रिप्ट दिलचस्प दिखता है - यह वास्तव में जावास्क्रिप्ट में सी ++ कोड संकलित कर सकता है। –

5

@ क्रिपकेन द्वारा बनाई गई लाइब्रेरी है जो अभी भी विकास में है। यह एलएलवीएम बिटकोड लेता है और जावास्क्रिप्ट में परिवर्तित होता है।

आप कामकाजी उदाहरणों के साथ यहां प्रोजेक्ट पेज देख सकते हैं। https://github.com/kripken/emscripten/

1

आप एक ब्राउज़र में कुछ पोर्टेबल चाहते हैं, तो यह करने के लिए है जावास्क्रिप्ट पर भरोसा करें (और संभवतः वेबजीएल, हालांकि आईई इसका समर्थन नहीं करता है)।

ActiveX और NaCL किसी भी तरह, आकार या रूप में पोर्टेबल नहीं हैं।

मैं यह नहीं कह सकता कि कौन सा आसान है, लेकिन आपके पास जावास्क्रिप्ट में अपने गेम को फिर से लिखने का विकल्प है, या अपने सी ++ को जावास्क्रिप्ट में संकलित करने के लिए Emscripten जैसे टूल का उपयोग करना है।

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

+0

कृपया ध्यान दें कि पीएनएसीएल पूरी तरह से पोर्टेबल है। वर्तमान में X86 (-32, -64) और एआरएम के लिए, लेकिन इसे अन्य प्लेटफॉर्म तक बढ़ाया जा सकता है क्योंकि यह एलएलवीएम बिटकोड पर आधारित है। ऑपरेटिंग सिस्टम के अनुसार - वर्तमान में यह निम्नानुसार काम करता है: लिनक्स, मैक, क्रोमोज़, विंडोज ... यह अभी तक मोबाइल पर अभी तक नहीं है (हालांकि मुझे तकनीकी बाधाएं नहीं दिखाई देती हैं, यह समय के सवाल की तरह दिखती है)। चूंकि यह सवाल डेस्कटॉप/मोबाइल या बस क्रॉस-डेस्कटॉप संगतता के बारे में नहीं है, तो मैं कहूंगा कि यह पोर्टेबल क्रॉस-प्लेटफॉर्म है - http://stackoverflow.com/a/11685887/544721। –

3

मैं दृढ़ता से NaCl को पोर्टिंग करने का सुझाव दूंगा।

लाभ:

  1. प्रदर्शन: आप अपने खेल प्रस्तुत करने के लिए सीपीयू का संपूर्ण उपयोग कर सकते हैं। यदि आपका गेम अच्छा 3 डी ग्राफिक्स या भौतिकी का उपयोग करता है, तो आप पुराने सिस्टम कॉन्फ़िगरेशन पर भी चिकनी दिख सकते हैं। NaCl का प्रदर्शन मूल ओएस अनुप्रयोगों के साथ तुलनीय है, जब मैं उसी गेम की तुलना Win32 संस्करण से करता हूं तो यह केवल 5 से 10% एफपीएस खो देता है।
  2. पहले से ही पोर्ट किए गए उदाहरण हैं, NaCl के लिए गेम जो आपको आसानी से करने में मदद कर सकते हैं।
  3. यह पहले से ही क्रॉस-प्लेटफार्म है। क्रोम विंडोज, लिनक्स, मैक ओएसएक्स पर चलता है।

नुकसान:

  1. बंदरगाह के लिए एक सप्ताह के आसपास आप ले सकते हैं। आपको ओपनजीएल ईएस 2.0 पर पोर्ट करना होगा (हालांकि, यह किसी भी ब्राउज़र आधारित विधियों, विशेष रूप से एचटीएमएल 5) के साथ होना चाहिए
  2. केवल क्रोम पर चलता है।
+1

मैंने इर्लिच रेंडरिंग इंजन को NaCl पर पोर्ट किया है और प्रदर्शन किसी भी जावास्क्रिप्ट आधारित गेम प्रदर्शन की तुलना में वास्तव में अच्छा है। – codetiger