/ / मोबाइल गेम पोर्टिंग के बारे में - मोबाइल

मोबाइल गेम पोर्टिंग के बारे में - मोबाइल

मैं मोबाइल गेम पोर्टिंग के संबंध में कुछ प्रश्न पूछना चाहता हूं...

मान लें कि मेरे पास एक साधारण 2D C++ गेम इंजन है और उस इंजन के आधार पर एक पीसी गेम है और मैं इसे विभिन्न मोबाइल प्लेटफॉर्म BREW, J2ME, iPhone, Android, Symbian, आदि पर पोर्ट करना चाहता हूं।

क्या मुझे इंजन और गेम को फिर से कोड करने की आवश्यकता हैप्रत्येक मंच? या क्या कोई आसान और अधिक कुशल तरीका है? मुझे यकीन है कि प्रक्रिया जटिल है क्योंकि अलग-अलग फोन में अलग-अलग ग्राफिक/प्रोसेसर/मेमोरी/आदि होते हैं। मैं मोबाइल गेम पोर्टिंग प्रक्रिया के अवलोकन के बारे में उत्सुक हूं। :)

धन्यवाद!

उत्तर:

जवाब के लिए 5 № 1

मोबाइल गेम पर हमला करने के कई तरीके हैंपोर्टिंग सबसे पहले, हाल तक यह ज्यादातर BREW और J2ME था। IPhone, Android और BlackBerry इस परिदृश्य को बदल रहे हैं और मोबाइल गेम पोर्टिंग के असंभव कार्य को और भी असंभव बना रहे हैं। मैंने हाल तक कई वर्षों तक तृतीय पक्ष मोबाइल गेम विकास में काम किया है। मैंने BREW को गायब होते देखा और देखा कि प्रकाशक पूरी तरह से J2ME पर ध्यान केंद्रित कर रहे हैं क्योंकि पोर्टिंग की लागत उद्योग का गला घोंट रही है। इसकी लागत, समय और धन दोनों का अनुमान है, और ऐसा लगता है कि प्रत्येक खेल के लिए कुल विकास लागत का लगभग 50-60% घंटी बज रहा है।

हमारी कंपनी में, हमने दो . करके पोर्टिंग को संभालाइंजन जो एक दूसरे के समानांतर हैं, एक BREW में, एक J2ME में। हमने कभी सिम्बियन का समर्थन नहीं किया क्योंकि सिम्बियन विकास से कोई पैसा नहीं बनता है। यह मुख्य रूप से हाई-एंड टेक डेमो के लिए है जो एक या दो उपकरणों पर हो सकता है, ऐसा कुछ भी नहीं जो बड़े पैमाने पर बाजार तक पहुंच सके। साथ ही, अधिकांश सिम्बियन फोन J2ME को सपोर्ट करते हैं।

प्रकाशकों द्वारा हमें कोई भी प्रदान करने की आवश्यकता होगीजहां 7-23 से संदर्भ गेम का निर्माण करता है, जो कई अलग-अलग उपकरणों को लक्षित करता है, BREW और J2ME दोनों में। आगे बढ़ने से ठीक पहले, प्रकाशकों को भी J2ME टच स्क्रीन संदर्भ संस्करण की आवश्यकता होने लगी थी, और एक iPhone SKU को अंतिम उत्पाद के आधार पर "निर्धारित किया जाना" के रूप में छोड़ा जा रहा था और उस समय एक iPhone संस्करण कितना प्रभावी होगा। हजारों अन्य आवश्यक एसकेयू के विभिन्न संदर्भों का अनुवाद करने के लिए संदर्भ संस्करणों को एक पोर्टिंग हाउस में भेज दिया जाएगा।

गेमलोफ्ट जैसी कंपनियां अभी भी अपने पर जबरदस्ती करती हैंपोर्टिंग के माध्यम से। यही कारण है कि गेमलोफ्ट के खेल बाकी उद्योग की तुलना में लगातार उच्च गुणवत्ता पर हैं। हालांकि, लागत के कारण छोटी कंपनियों के लिए इस तरह से समस्या पर हमला करना संभव नहीं है। हर कोई बीजिंग में 5000 डेवलपर्स के साथ कार्यालय नहीं खरीद सकता

कई कंपनियां हैं जो पोर्टिंग लागत में कटौती के लिए इंजन विकसित कर रही हैं। मोबाइल-डिस्टिलरी क्या मैं काफी संपर्क में था, लेकिन हमइसका उपयोग कभी नहीं समाप्त हुआ। इसलिए, मैं उनकी पुष्टि नहीं कर सकता। यहां समस्या यह है कि आप किसी अन्य कंपनी के इंजन की दया पर होंगे। प्रदर्शन इस तथ्य के कारण समस्याग्रस्त हो सकता है कि इसे हजारों SKU को लक्षित करने के लिए बनाया जा रहा है। साथ ही, आपके पास वास्तव में है इस उदाहरण में आपके गेम के निम्न स्तर के कार्यान्वयन पर थोड़ा नियंत्रण। अंतिम परिणाम एक ऐसा गेम प्रतीत होता है जो फोन के सबसे कम आम भाजक को लक्षित करता है।

अंत में, बहुत सारे डेवलपर्स बस छोड़ रहे हैंसभी मोबाइल प्लेटफॉर्म का समर्थन करने का विचार। IPhone पर गेम पर भारी बाढ़ है क्योंकि 1) इसके लिए केवल एक प्लेटफॉर्म को लक्षित करने की आवश्यकता है और 2) डेवलपर्स के लिए AppStore के माध्यम से 70 प्रतिशत लाभ हिस्सा है। वाहक रिलीज के माध्यम से, प्रतिशत तुलनीय भी नहीं है।


जवाब के लिए 2 № 2

यह निश्चित रूप से इस बात पर निर्भर करता है कि आप किस भाषा में हैं"सरल इंजन" लिखा है। जावा को प्लेटफार्मों के बीच स्थानांतरित करना आसान माना जाता है, क्योंकि यह वास्तव में स्वयं का एक मंच है। यदि आपका इंजन कुछ अधिक निम्न-स्तर में लिखा गया है, जैसे C++, तो यह संभवतः ग्राफ़िक्स और इनपुट के लिए प्लेटफ़ॉर्म-विशिष्ट पुस्तकालयों पर निर्भर करेगा, क्योंकि C++ आपको वह प्रदान नहीं करता है।


जवाब के लिए 2 № 3

मैं व्यक्तिगत रूप से मोबाइल गेम्स और एप्लिकेशन डेवलपमेंट के लिए एक क्रॉस प्लेटफॉर्म लेयर के रूप में एडगेलिब की सिफारिश कर सकता हूं।

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

आप इसे यहां पा सकते हैं: http://www.edgelib.com

आप साइट पर इस प्लेटफॉर्म पर आधारित गेम्स और अन्य प्रोजेक्ट्स का शोकेस देख सकते हैं।

दुर्भाग्य से, BREW हालांकि समर्थित नहीं है।और चूंकि यह एक वास्तविक खुला मंच नहीं है, यह अन्य मोबाइल ओएस प्लेटफार्मों की तुलना में काफी चुनौती भरा है क्योंकि इसका विकास समुदाय ज्यादातर पेशेवर है और ऑनलाइन शब्दों में बहुत "बातूनी" नहीं है ... यह शायद बदल जाएगा क्योंकि प्रतियोगिता मिनट के हिसाब से और अधिक खुली होती जा रही है।

मैं एडगेलिब से संबद्ध नहीं हूं... यह सिर्फ मेरी निजी राय है। :)


उत्तर के लिए 1 № 4

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

J2ME और Android के बारे में वे जावा प्लेटफॉर्म हैं, इसलिए कम से कम किसी विशेष VM lib के बिना वहां कोई C/C++ नहीं चलाया जा सकता है। इस मामले में आपको सी/सी++ कोड को जावा में पोर्ट करने की आवश्यकता है जो अधिक मात्रा में हो सकता है।

तो इसका मेरा जवाब तब है जब आप एक बना सकते हैंजब तक आप उनके लिए एक ही कंपाइलर का उपयोग कर सकते हैं, तब तक आप कई प्लेटफार्मों में एक ही इंजन का उपयोग करने में सक्षम हो सकते हैं।

उदाहरण के लिए इस इंजन पर एक नज़र डालें क्यूबिकवीआर यह आपको पीसी/लिनक्स/मैक/आईफोन (शायद)/सोनी प्लेस्टेशन पोर्टेबल के लिए एक ही इंजन को संकलित करने की अनुमति देता है


उत्तर के लिए 1 № 5

मैंने मल्टीप्लेटफार्म विकास के लिए जो प्रयोग किया है वह हैएक हार्डवेयर अमूर्त परत को लागू करने के लिए। इंजन को C++ में कोडित किया गया है लेकिन सिस्टम कॉल को लागू करने के लिए एक सादे C इंटरफ़ेस का उपयोग किया गया है। यह आपको अपने गेम और इंजन के लिए पूर्ण विकसित C++ का उपयोग करने की अनुमति देता है और आपके प्लेटफॉर्म की किसी भी भाषा में लिखे गए सिस्टम एब्स्ट्रैक्शन के साथ लिंक करता है। सिम्बियन सी ++ की 100% सुविधाओं का समर्थन नहीं करता है, और अभी भी कुछ बग हैं, और आईफोन एपीआई उद्देश्य सी का उपयोग करता है। सी संगत है जो आपके द्वारा उल्लेख किए गए अधिकांश प्लेटफॉर्म (ठीक है, जावा नहीं) और सी को लिंक करना सी ++ से आसान है , क्योंकि कम समस्याएं हैं (ABI और वह सब सामान)।

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


जवाब के लिए 0 № 6
  1. यदि आपके पास जो इंजन है वह जावा या फ्लैश में नहीं लिखा है, तो मुझे ऐसा कोई तरीका नहीं दिखाई देता है जिससे आप अपने इंजन को किसी ऐसी भाषा में रिकोड किए बिना बॉक्स से बाहर का उपयोग कर सकें जो मोबाइल फोन पर चल सकती है।
  2. यदि इसे जावा या फ्लैश में कोडित किया गया है, तो मुझे लगता है कि आप "पुनः" हैंमुख्य समस्या (फोन और पीसी के बीच प्रदर्शन अंतर के अलावा) मुख्य मेमोरी है। जैसा कि मैंने सुना है, मोबाइल फोन गेम के विकास में मुख्य मेमोरी सबसे बड़ी समस्या है।

उत्तर के लिए 0 № 7

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

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

दुर्भाग्य से, यह सबसे अच्छा जवाब है जो मैं आपको दे सकता हूं।