2011-10-01 7 views
10

मैं अपने भविष्य के खेलों के लिए सी ++ में एक गेम इंजन रनटाइम पर्यावरण पर काम कर रहा हूं, और एक मंच के रूप में एंड्रॉइड पर विचार करना शुरू कर दिया है। मैंने देखा कि यह जावा से कसकर बाध्य था और जावा वीएम का भारी उपयोग करता है।एंड्रॉइड के लिए 100% सी ++ पर्यावरण में प्रोग्रामिंग?

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

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

कृपया जान लें कि मैं अभी भी एंड्रॉइड विकास के लिए बिल्कुल नया हूं, और सामान्य रूप से मल्टीप्लेट प्रोग्रामिंग। मेरा लक्ष्य एक गेम इंजन बनाना है जो विशेष रूप से फोन पर नए हार्डवेयर का सबसे अधिक फायदा उठाएगा!

किसी भी सलाह के लिए धन्यवाद जो आप लोग दे सकते हैं!

+1

एंड्रॉइड में एक विशेष जेआईटी जावा कंपाइलर है और एंड्रॉइड पर्यावरण का एक बड़ा हिस्सा जावा में है। एंड्रॉइड पर गति के लिए जावा में सी ++ को प्राथमिकता देने का वास्तव में कोई कारण नहीं है, पारंपरिक प्रदर्शन प्रभाव में से अधिकांश नहीं है। – dtech

+0

ठीक है, यह एक बड़ी बात है जिसके बारे में मैं सोच रहा था, धन्यवाद। मुझे वास्तव में मूल एक्टिविटी क्लास (http://developer.android.com/reference/android/app/NativeActivity.html) मिला है, जो वास्तव में आशाजनक दिखता है, खासकर जब ऐसा लगता है कि वे इसे C++ गेम पर लक्षित कर रहे हैं। क्या काम करने के लिए मुझे अभी भी एंड्रॉइड एसडीके और जेआईटी कंपाइलर की आवश्यकता होगी? – AutoBotAM

+0

जेआईटी दलविक (एंड्रॉइड के वीएम) का हिस्सा है और डाल्विक सिस्टम पर हर प्रक्रिया में मौजूद है चाहे आप मूल गतिविधि का उपयोग करें या नहीं - इसका उपयोग बाकी सिस्टम के साथ संवाद करने के लिए किया जाता है। – adamp

उत्तर

9

एंड्रॉइड 2.3 (एपीआई 9) में जोड़ा गया एक्टिव एक्टिविटी, जो आप केवल सी ++ का उपयोग करके एंड्रॉइड गेम लिखने के मामले में देख रहे हैं। http://developer.android.com/reference/android/app/NativeActivity.html

हालांकि जब आप कहते हैं कि आप इसके लिए नए हैं तो आप वर्तमान में अपने स्वयं के लिखने के बजाय वर्तमान में उपलब्ध एंड्रॉइड गेम इंजनों में से एक के साथ शुरुआत करना चाहेंगे। अन्य उपकरणों के मुकाबले मोबाइल उपकरणों में बाधाओं का एक बहुत अलग सेट है। यदि बैटरी दोपहर के मध्य में मर जाती है तो एक फोन बहुत उपयोगी नहीं होता है, इसलिए "संसाधन-गहन" होने के निर्धारित लक्ष्य के साथ एक परियोजना शुरू करना पहले से ही खराब शुरुआत हो रहा है। यहां कुछ लोग 20 मिनट के लिए अपने खेल खेलना चाहेंगे, अगर इसका मतलब है कि वे शाम को फोन कॉल नहीं कर पाएंगे।

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

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

यहां शुरू करने के लिए कुछ लिंक दिए गए हैं। ये इंजन एंड्रॉइड मार्केट पर कुछ बहुत लोकप्रिय गेम पावर करते हैं और कई डेवलपर्स ने उन्हें उपयोगी पाया है:

http://www.andengine.org/ एंडेंगिन जावा में लिखा गया है और यह खुला स्रोत है।

http://unity3d.com/ एकता सी # और मोनो पर आधारित है।

http://www.madewithmarmalade.com/ मार्मलाडे, पूर्व में एयरप्ले एसडीके सी ++ पर आधारित है।

+0

यह एक बहुत अच्छी प्रतिक्रिया है। और आप सही हैं, मैं उच्च अंत ग्राफिक्स का लक्ष्य रख रहा हूं। मुझे लगता है कि मेरा मतलब है कि मैं बैटरी जीवन/फ्रेम दर को अपंग किए बिना संसाधनों का लाभ लेना चाहता हूं, और मुझे उम्मीद है कि मेरे गेम फोन की ग्राफिक्स क्षमताओं को अनुकूलित करने में सक्षम होंगे (अर्थात् पॉली गिनती समायोजित करना, शेडर गुणवत्ता , और आदि)।मैं हाल ही में गेम इंजन आर्किटेक्चर का अध्ययन कर रहा हूं, लेकिन आप सही हैं कि मुझे अपने अंतिम रनटाइम पर्यावरण को बनाने के तरीके के बारे में फैसला करने से पहले मौजूदा इंजनों का उपयोग और विश्लेषण करना चाहिए। बहुत बहुत धन्यवाद! – AutoBotAM

2

उत्तर आप जिस पर ध्यान देना चाहते हैं वह @ adamp है। अपने जवाब को अपने जोखिम पर नजरअंदाज करें।

अपने प्रश्न में अन्य बिंदुओं के एक जोड़े को संबोधित करने के लिए, हालांकि:

मैं अधिकतम प्रदर्शन के लिए समय से आगे Android के लिए एक संकलित खेल निष्पादन योग्य बनाने में सक्षम हो सकते हैं?

नहीं, एंड्रॉइड के रूप में "संकलित गेम निष्पादन योग्य" का उपयोग नहीं करता है। आपका सी/सी ++ कोड एक लिनक्स साझा ऑब्जेक्ट (.so) फ़ाइल में संकलित किया जाएगा और एक एपीके फ़ाइल में अन्य सामान (जैसे आपके मैनिफेस्ट) के साथ पैक किया जाएगा। .so संकलन समय से पहले होगा, हालांकि।

क्या मैं अपने गेम को संकलित करने के लिए मिनजीडब्लू का उपयोग कर सकता हूं, क्या मुझे एक अलग कंपाइलर का उपयोग करने की आवश्यकता होगी?

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

भले ही, एनडीके अपने स्वयं के जीसीसी कंपाइलर के साथ आता है। AFAIK, MinGW एक क्रॉस-कंपाइलर नहीं है, और अधिकांश एंड्रॉइड डिवाइस x86 CPUs पर नहीं चल रहे हैं।

यदि मुझे जावा का उपयोग किसी अन्य तरीके से करना था, तो सी ++ कोड का संकलन भी आवश्यक होगा?

हां। अब, हनीकॉम के लिए, आपके पास ओपनजीएल काम के लिए रेंडरस्क्रिप्ट का उपयोग करने का विकल्प है - जो कि सी 99 पर्यावरण की मात्रा है जिसका कोड आपको एनडीके के साथ संकलित करने की आवश्यकता नहीं होगी।

+0

ठीक है, मुझे कुछ बिंदु पर उबंटू के साथ वर्चुअलबॉक्स स्थापित किया जाएगा यदि मुझे आवश्यकता है। काश मैं एक अच्छी ओएस एक्स देव मशीन थी जो 600 डॉलर से कम है, क्योंकि मैं वास्तव में आईओएस पर भी विकसित करना चाहता हूं। मुझे लगता है कि हालांकि अभी के लिए इंतजार कर सकते हैं। – AutoBotAM

0

मैंने उनमें से एक समूह की कोशिश की है, और सबसे अच्छा मैंने पाया है कि क्रॉस को अन्य उपकरणों के समूह में तुरंत संकलित करता है और चलो आप एचटीएमएल 5/सी ++ कॉम्बो (sweeeeet) में अपनी गुड्स प्रोग्राम करते हैं MoSync (http://www.mosync.com/) और एक और छोटा ज्ञात जो थोड़ा और अधिक अनुकूल है, मोटोरोला द्वारा 0 मोटोडेव (http://developer.motorola.com/tools/motodevstudio/?utm_campaign=mhp01092012&utm_source=mhp&utm_medium=mws)

मैंने देखा है कि कुछ वर्चुअल मशीन छवियां और ट्यूटोरियल हैं जिनका उपयोग आप परेशानी को स्थापित करने से रोकने के लिए कर सकते हैं।

संबंधित मुद्दे