APK चलने पर Android में खराब प्रदर्शन, ब्राउज़र में ठीक चलता है


12

मैंने Phaser इंजन का उपयोग करके HTML5 में एक छोटा गेम प्रोजेक्ट बनाया है (दोनों 1.1.5 और 1.1.6 की कोशिश की)। फिर इसे मोबाइल प्लेटफॉर्म पर पोर्ट करने के लिए, विंडोज फोन 8, एंड्रॉइड और आईओएस के लिए फोनगैप / कॉर्डोवा का इस्तेमाल किया।

मेरे खेल में, लगभग 10 तत्व हैं, जो एनिमेटेड हो जाते हैं (बिंदु से बिंदु बी तक और एक ही समय में कुछ रोटेशन)। IOS और विंडोज फोन 8 पर, मुझे किसी भी समस्या का सामना नहीं करना पड़ा।

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

मैंने जाँच की है कि एंड्रॉइड हार्डवेयर एक्सेलेरेशन फ्लैग को प्रकट फ़ाइल में "सही" पर सेट किया गया है। इसे भी बदलने की कोशिश की, लेकिन इससे प्रदर्शन में कोई बदलाव नहीं हुआ।

मैंने सैमसंग एस 2 डिवाइस पर एंड्रॉइड 4.2 पर समान जांच की है और उस पर प्रदर्शन बेहतर है। लेकिन आसुस नेक्सस टैब 7 (एंड्रॉइड 4.4 पर चल रहा है) पर यह बहुत ही झटकेदार है, जबकि ओएस और डिवाइस दोनों नवीनतम हैं। एंड्रॉइड 4.3 (सैमसंग गैलेक्सी ग्रांड डुओस) पर चलने वाले एक अन्य डिवाइस पर भी जांच की गई और उस पर भी प्रदर्शन बिल्कुल अच्छा नहीं है।

मेरे गेम में दोनों WebGL / Canvas रेंडरिंग की कोशिश की गई (Phaser इंजन Pixi.js का उपयोग करता है, जो Webd समर्थित नहीं है, तो 2d कैनवास पर वापस आ जाता है), लेकिन कोई परिवर्तन नहीं। इसी तरह से easeljs।

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


3
यह प्रश्न बहुत अच्छा लिखा गया है। मैं जानना चाहूंगा कि क्या आप एक बेंचमार्क या प्रोफाइलर को चलाने के लिए नीचे की तरफ अपराधी हो सकते हैं और यदि आपने इसे पुन: उत्पन्न करने के लिए आसान चरणों के साथ फोनगैप से संपर्क किया है?
अट्टुरसम्स

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

यह मेरी ओर से बहुत सतही अवलोकन है; ऐसा लगता है कि आप बग पर हो सकते हैं। मैं यह नहीं देखता कि उच्च अंत उपकरणों के बीच प्रदर्शन में एक मजबूत विसंगति क्यों होगी।
AturSams

1
मैं उत्सुक हूं कि आप कोकूनज मार्ग क्यों नहीं जाना चाहते हैं। मेरा मानना ​​है कि कोकून और पिक्सी दोनों कोकूनज के भीतर अच्छी तरह से चलते हैं। आपको उस विकल्प को आज़माने से क्या रोक रहा है?
ज्योफ

2
बग के कारण CSS3 और कैनवस रेंडरिंग बग नया क्रोमियम-आधारित वेबव्यू है और यह Android पर कॉर्डोवा / फोनगैप देवों के लिए कुल फैयास्को है ... घडाडज़ूक्स ने किटकैट को बूट करने से पहले गूगल टेस्ट वेबव्यू कैनवास / सीएसएस प्रदर्शन में किसी को नहीं किया था। ? मुझे आशा है कि यह तेजी से और उम्मीद है कि विशेष रूप से 3 जी पार्टी लॉक एंड्रॉइड के साथ सेलफोन पर लोगों के लिए तय है ... यूटर फियास्को .. यदि आप कॉर्डोवा / फोनगैप देव हैं या वेबव्यू का उपयोग कर रहे हैं, तो कृपया इस बग को Google एंड्रॉइड बग के साथ स्टार करें ... " । अधिक जानकारी: groups.google.com/forum/#!topic/phonegap/1ZxXe6chHZc code.googl

जवाबों:


2

क्रोमियम-आधारित वेबव्यू इस समस्या का कारण था, जिसे अंततः किटकैट संस्करण 4.4.3 / 4.4.4 में मध्य 2014 में अपडेट किया गया था, लेकिन यह ठंड को देखते हुए है कि कुछ विक्रेताओं ने कुछ मनमाने ढंग से निर्णय लिए हैं कि उनके फोन में से कौन सा अपडेट मिला और कौन सा किया नहीं। उदाहरण के लिए, सैमसंग गैलेक्सी एस 4 अभी भी 4.4.2 पर फंसा हुआ है।

अन्य उत्तरों द्वारा दी गई सलाह का पालन करें: यदि आपके पास एक कैनवास-आधारित गेम है तो PhoneGap से बचें जब तक आप यह निर्धारित नहीं कर सकते कि 4.4.3 से नीचे किटकैट संस्करण चलाने वाले फोन को छोड़कर अटक रहा है स्वीकार्य है।


1

अपने खेल को libgdx में रीमेक करने का प्रयास करें। Libgdx काफी तेज है और उस तरह के मुद्दे नहीं हैं और यह सभी प्लेटफार्मों पर काम करता है। दुर्भाग्य से यह केवल वही है जो मैं अभी सोच सकता हूं और मुझे जेएस को एंड्रॉइड जावा या जो कुछ भी कवर करता है, कन्वर्ट करने का विचार पसंद नहीं है। हालाँकि इसमें कुछ समय लगेगा, LibGDX को एक परीक्षा दें।


1

ऐसा लगता है कि अधिकांश गेम डेवलपर्स के साथ यह एक मुद्दा है। इसी तरह का मुद्दा

"मैंने अक्सर सुना है कि कैनवास गेम बनाने के लिए फोनगैप सबसे अच्छा विकल्प नहीं था। यह देशी के लिए वेब ऐप के लिए अधिक अनुकूल है।"

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

मेरा सुझाव है कि आप कोकून के साथ जाएं


1

मैं फेज़र ( इस सरल खेल के साथ ) के साथ एक ही मुद्दे में भाग गया । दुर्भाग्य से, HTML5 और वेब / कैनवास रेंडरिंग के साथ, आप अपने फोन की दया पर हैं - टूटे हुए या खराब प्रदर्शन वाले ब्राउज़र (जैसे मेरा) के साथ उपयोगकर्ता होंगे।

जैसे @ Captainbuzz123 ने सुझाव दिया, एक गैर-एचटीएमएल 5 प्लेटफॉर्म पर जाने का एकमात्र वास्तविक समाधान है। अब के लिए मेरी पसंद का टूल OpenFL है

जबकि मेरा (बहुत सरल) Phaser ऐप OpenFL के साथ मेरे फोन पर लगभग 8-12FPS पर चलता है, (क्योंकि यह C ++ से ट्रांसप्लड है और Android NDK के माध्यम से चलता है), मैं अंत में अपने फोन पर बहुत चिकनी, द्रव प्रदर्शन प्राप्त कर रहा हूं।

यह निश्चित रूप से एक कोशिश के काबिल है।


1

2020 के पहले सप्ताह के लिए एक अपडेट:

Cocoonjs शायद अतीत में इस मुद्दे के लिए एक ठोस समाधान था, लेकिन वे बंद कर रहे हैं .. उनकी आधिकारिक वेब साइट से एक उद्धरण सभी कहते हैं

यह गहरे अफसोस के साथ है कि हम घोषणा करते हैं कि हम अपनी प्यारी सेवा कोकून प्रदान करना बंद कर देंगे।

हमने लुडी / कोकून की शुरुआत की क्योंकि हमें विश्वास था कि भविष्य में ऐप और गेम का विकास एचटीएमएल 5 पर आधारित होगा। दुर्भाग्य से, ऐसा नहीं हुआ और मूल विकास पहले से कहीं अधिक मजबूत है।

यह वास्तव में 2019 में मोबाइल के लिए एचटीएमएल 5 विकास को दर्शाता है। ऐसा नहीं है कि यह संभव नहीं है, लेकिन यह प्रभावी नहीं था जैसा कि अपेक्षित था ...

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

वर्तमान या निकट भविष्य में इसे देखने वाले किसी भी व्यक्ति से लेने के लिए मेरे अगले टेक / स्टैक समाधान विकल्पों को साझा करने के लिए बस:

  • Android के लिए IOS और LibGDX के लिए SpriteKit: यह संभवतः सबसे अधिक प्रदर्शन वाला समाधान होगा, हालांकि इसे प्रत्येक प्लेटफॉर्म के लिए अलग से विकसित करने की आवश्यकता होगी .. लेकिन यह भी सबसे "निम्न स्तर" होगा

  • Cocos2D-X वास्तव में सुनिश्चित नहीं है कि यह कितनी अच्छी तरह से समर्थित है और क्या यह अभी भी एक वैध विकल्प है लेकिन यह बहुत परिपक्व और प्रदर्शनशील होना चाहिए + आप C ++ में लिख सकते हैं और किसी भी मंच के लिए निर्माण कर सकते हैं।

  • कोरोना एक दिलचस्प (और मुक्त) क्रॉस प्लेटफॉर्म और परफॉर्मेंट फ्रेमवर्क की तरह लगता है, लुआ का उपयोग करके इसे यहां उल्लिखित अन्य समाधानों का परीक्षण करने की आवश्यकता होगी

  • एकता या गोडोट जैसे आधुनिक इंजनों में से एक का उपयोग करें । यह सुनिश्चित नहीं है कि यह उल्लेख किए गए चौखटे प्रदर्शन की तुलना में कैसे बुद्धिमान है

आशा है कि यह किसी को भी मदद करता है ..


0

दूसरे दिन देखा, इस समस्या को हल करने के लिए अच्छी तरह से देखने लायक हो सकता है। मेरे लिए एक बहुत अच्छा विचार की तरह लगता है: http://tmtg.net/glesjs/

तथ्य यह है कि यह ब्राउज़र में होने पर ठीक काम करता है, लेकिन तब नहीं जब फोनगैप / कॉर्डोवा वास्तव में बहुत अजीब हो। एंड्रॉइड पर पूरे कैनवास / वेबजीएल की स्थिति (आईओएस के लिए बात नहीं कर सकती) हमेशा मुझे बहुत सख्त लगती है। निश्चित रूप से कुछ Google को अधिक ऊर्जा डालने की आवश्यकता है, शायद लॉलीपॉप में सुधार होगा!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.