धीमे सेशन (सिर्फ़ गेम के लिए)

धीमे सेशन, Google Play Console में 'Android की ज़रूरी जानकारी' की नई मेट्रिक है. बहुत धीमा सेशन वह सेशन है जिसमें 25% से ज़्यादा फ़्रेम रेंडर होने में ज़्यादा समय लेते हैं. फ़्रेम पिछले फ़्रेम के बाद 50 मि॰से॰ से कम के न होने पर, धीमा हो जाता है (20 FPS के बराबर). 'Android की ज़रूरी जानकारी' में, धीमे सेशन के दूसरे सेशन की भी जानकारी दी जाती है 34 मि॰से॰ के टारगेट वाली मेट्रिक (30 एफ़पीएस के बराबर). धीमे सेशन का इस्तेमाल करके, आपके गेम की फ़्रेम-रेट परफ़ॉर्मेंस को समझ सकता है. इससे गेम की परफ़ॉर्मेंस पर उसका इस्तेमाल करके, लोग आपके गेम को आसानी से खेल पाएंगे.

आने वाले समय में, Play अपने उपयोगकर्ताओं को उन गेम से दूर रखना शुरू कर देगा जो ये काम नहीं कर सकते उनके फ़ोन पर 20 FPS (फ़्रेम प्रति सेकंड) तक पहुंच सकते हैं. ध्यान दें कि 'Android की ज़रूरी जानकारी', सिर्फ़ निगरानी करना शुरू करती है आपका गेम एक मिनट तक चलने के बाद फ़्रेम रेट के हिसाब से दिखाया जाएगा.

ज़्यादा जानकारी के लिए, हमारे सहायता केंद्र पर जाएं मेट्रिक के बारे में जानकारी.

पाई चार्ट जैसे ग्राफ़िक, जो रेंडर होने में ज़्यादा समय लेने वाले फ़्रेम और रेंडर होने में ज़्यादा समय लेने वाले फ़्रेम की संख्या दिखाते हैं.
पहली इमेज. 'Android की ज़रूरी जानकारी' में धीमा सेशन.

FPS (फ़्रेम प्रति सेकंड) मापने और रेंडर होने में ज़्यादा समय लेने वाले फ़्रेम का पता लगाने का तरीका

Android dumpsys surfaceflinger timestats निर्देश से औसत FPS (फ़्रेम प्रति सेकंड) और सभी लेयर के लिए टाइम हिस्टोग्राम प्रज़ेंट करें रेंडर किया गया. किसी फ़्रेम के प्रज़ेंट से मौजूदा समय के बीच का इंटरवल होता है बनाए जाने वाले वर्तमान फ़्रेम और पिछला फ़्रेम. यहां दी गई हैं गेम के एफ़पीएस (फ़्रेम प्रति सेकंड) इकट्ठा करने के लिए, निर्देश का इस्तेमाल करने का तरीका:

  1. कैप्चर करना शुरू करने के लिए, enable और clear फ़्लैग के साथ निर्देश चलाएं जानकारी:

    adb shell dumpsys SurfaceFlinger --timestats -clear -enable
    
  2. जब गेम ज़्यादा देर तक खेला जाए, तो कमांड को जानकारी डंप करने के लिए dump को फ़्लैग करें:

    adb shell dumpsys SurfaceFlinger --timestats -dump
    

    डंप की गई जानकारी से हमें सभी लेयर, जो SurfaceFlinger ने रेंडर की हों. आपको सभी ज़रूरी शर्तें पूरी करनी होंगी layerName के हिसाब से फ़िल्टर करके, अपने गेम के सेक्शन को देखें:

    layerName = SurfaceView[com.google.test/com.devrel.MainActivity]@0(BLAST)#132833
    

    सेशन के धीमे फ़्रेम रेट का हिसाब इन चीज़ों की जानकारी के आधार पर किया जा सकता है हर लेयर पर.

    उदाहरण के लिए, 20 FPS (फ़्रेम प्रति सेकंड) धीमे फ़्रेम का प्रतिशत = (54 मि॰से॰ से 1000 मि॰से॰ तक वैल्यू का योग) / कुलफ़्रेम x 100

    totalFrames = 274
    ...
    presentToPresent histogram is as below:
    0ms=0 1ms=0 2ms=0 3ms=0 4ms=0 5ms=0 6ms=0 7ms=0 8ms=0 9ms=0 10ms=0 11ms=0 12ms=0
    13ms=0 14ms=0 15ms=0 16ms=1 17ms=0 18ms=0 19ms=0 20ms=0 21ms=0 22ms=0 23ms=0
    24ms=0 25ms=0 26ms=0 27ms=0 28ms=0 29ms=0 30ms=0 31ms=0 32ms=0 33ms=269 34ms=0
    36ms=0 38ms=0 40ms=0 42ms=0 44ms=0 46ms=0 48ms=0 50ms=1 54ms=0 58ms=0 62ms=0
    66ms=0 70ms=1 74ms=0 78ms=0 82ms=0 86ms=0 90ms=0 94ms=0 98ms=0 102ms=0 106ms=0
    110ms=0 114ms=0 118ms=0 122ms=0 126ms=0 130ms=0 134ms=0 138ms=0 142ms=0 146ms=0
    150ms=0 200ms=0 250ms=0 300ms=0 350ms=0 400ms=0 450ms=0 500ms=0 550ms=0 600ms=0
    650ms=0 700ms=0 750ms=0 800ms=0 850ms=0 900ms=0 950ms=0 1000ms=0
    

    हर लेयर का औसत FPS (फ़्रेम प्रति सेकंड) भी डंप में दिखता है:

    ...
    averageFPS = 30.179
    ...
    
  3. पूरी जानकारी इकट्ठा करने के बाद, आपको इसे बंद करना होगा disable फ़्लैग का उपयोग करके टाइमस्टेट:

    adb shell dumpsys SurfaceFlinger --timestats -disable
    

धीमे फ़्रेम की वजहें और समाधान

स्क्रीन पर कोई फ़्रेम दिखने या लंबे समय तक रेंडर होने की कई वजहें हो सकती हैं टारगेट नहीं किया जाता. गेम सीपीयू/जीपीयू के लिए सीमित हो सकता है. या डिवाइस बहुत ज़्यादा गर्म हो रहा है और थ्रॉटल की गई थर्मल स्टेट को चालू कर देता है. या गेम के फ़्रेम रेट और डिवाइस के डिसप्ले में अंतर था रीफ़्रेश दर.

Android फ़्रेम पेसिंग (स्वैपी) का इस्तेमाल करें, Vulkan और ADPF को इन समस्याओं को हल करें और अपने गेम की परफ़ॉर्मेंस को बेहतर बनाएं.

Swippy क्या है

Android फ़्रेम पेसिंग लाइब्रेरी को स्वैपी के नाम से भी जाना जाता है. यह लाइब्रेरी, AGDK लाइब्रेरी. स्वैपी से OpenGL और Vulkan गेमों में मदद मिलती है Android पर आसान रेंडरिंग और सही फ़्रेम पेसिंग पाने के लिए.

फ़्रेम पेसिंग, गेम के लॉजिक और रेंडरिंग लूप के साथ सिंक होती है ओएस के डिसप्ले सबसिस्टम और उसका डिसप्ले हार्डवेयर. Android डिसप्ले सबसिस्टम को विज़ुअल आर्टफ़ैक्ट (जिसे चीरा गया है) से बचाने के लिए डिज़ाइन किया गया है ऐसा तब हो सकता है, जब डिसप्ले हार्डवेयर किसी नए फ़्रेम के पार्टवे पर स्विच हो जाता है अपडेट किया जा सकता है. इन आर्टफ़ैक्ट से बचने के लिए, डिसप्ले सबसिस्टम यह काम करता है: निम्न:

  • पिछले फ़्रेम को अंदरूनी रूप से बफ़र करता है
  • देरी से सबमिट किए गए फ़्रेम का पता लगाता है
  • देर से फ़्रेम का पता चलने पर, पिछले फ़्रेम का डिसप्ले दोहराया जाएगा

नेटिव प्रोजेक्ट में स्वैपी का इस्तेमाल कैसे करें

Android फ़्रेम पेसिंग लाइब्रेरी को इंटिग्रेट करने के लिए, नीचे दी गई गाइड देखें अपने गेम में शामिल करें:

Unity गेम इंजन में Swippy का इस्तेमाल कैसे करें

Unity ने अपने इंजन में Android फ़्रेम पेसिंग को इंटिग्रेट किया है. इसे चालू करने के लिए Unity 2019.2 की सुविधा या उससे ज़्यादा के लिए, प्रोजेक्ट सेटिंग > खिलाड़ी > Android की सेटिंग > रिज़ॉल्यूशन और प्रज़ेंटेशन:

प्रोजेक्ट सेटिंग का डायलॉग बॉक्स.
दूसरी इमेज. Unity Engine में फ़्रेम पेसिंग चालू करें.

इसके अलावा, Unity को समान रूप से काम करने की अनुमति देने के लिए, अपने लॉजिक कोड में ऑप्टिमाइज़ किए गए फ़्रेम पेसिंग के विकल्प को प्रोग्राम के हिसाब से चालू करें बेहतर गेमप्ले बनाने के लिए, फ़्रेम रेट में कम बदलाव होने पर फ़्रेम डिस्ट्रिब्यूट करें.

Unरियल गेम इंजन में स्वैप करने की सुविधा इस्तेमाल करने का तरीका

Unreal 4.25 और इसके बाद के वर्शन में Android फ़्रेम पेसिंग लाइब्रेरी को इंटिग्रेट किया जाता है, जो Android गेम डेवलपमेंट किट. मोबाइल फ़्रेम पेसिंग लेख में, Android को चालू करने का तरीका बताया गया है फ़्रेम पेसिंग लाइब्रेरी और C++ कोड से फ़्रेम पेसिंग कंट्रोल करने का तरीका.

Vulkan क्या है

Vulkan एक आधुनिक क्रॉस-प्लैटफ़ॉर्म 3D है ग्राफ़िक्स एपीआई को डिवाइस ग्राफ़िक हार्डवेयर के बीच एब्स्ट्रक्शन को कम करने के लिए डिज़ाइन किया गया है और आपका गेम. Vulkan, Android पर लो-लेवल का प्राइमरी ग्राफ़िक्स एपीआई है. OpenGL ES को बदला जा रहा है. OpenGL ES यह अब भी Android पर काम करता है, लेकिन अब यह सुविधा चालू नहीं है डेवलपमेंट.

OpenGL ES के मुकाबले Vulkan के ये फ़ायदे हैं:

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

खास Android प्रोजेक्ट में Vulkan इस्तेमाल करने का तरीका

Android पर Vulkan का इस्तेमाल शुरू करना कोडलैब (कोड बनाना सीखना) से आपको इन्हें सेट अप करने में मदद मिलती है आपकी Vulkan रेंडरिंग पाइपलाइन और फिर एक टेक्सचर्ड (घुमावदार) त्रिभुज को रेंडर करना स्क्रीन पर. अपने गेम के ग्राफ़िक को रेंडर करने का तरीका जानने के लिए कोडलैब का इस्तेमाल करें.

Unity गेम इंजन में Vulkan इस्तेमाल करने का तरीका

Unity पर डिवाइस अपने-आप चुने जाने की सुविधा चालू करने के लिए, कॉन्फ़िगर करने के निर्देशों का पालन करें Auto Graphics API.

प्रोजेक्ट सेटिंग का डायलॉग बॉक्स.
तीसरी इमेज. Unity Auto Graphics API को चालू करें.

इसके अलावा, Auto Graphics API को बंद करके, Vulkan को मैन्युअल तरीके से चालू किया जा सकता है. और Graphics API की सूची में, Vulkan को सबसे ज़्यादा प्राथमिकता पर रखा जाएगा. अगर आप: Unity 2021.1 या इससे पहले के वर्शन में, Vulkan का इस्तेमाल करने का सिर्फ़ यही एक तरीका है.

प्रोजेक्ट सेटिंग का डायलॉग बॉक्स.
चौथी इमेज. Unity में, Vulkan को मुख्य Graphics API के तौर पर मैन्युअल तरीके से चुनें.

Vkक्वालिटी Unity इंजन प्लगिन का इस्तेमाल करें ग्राफ़िक एपीआई के लॉन्च के समय सुझाव देने के लिए, ताकि आप गेम का इस्तेमाल कर सकें चुनिंदा डिवाइसों पर.

Unreal गेम इंजन में Vulkan इस्तेमाल करने का तरीका

Vulkan ग्राफ़िक एपीआई को चालू करने के लिए, प्रोजेक्ट सेटिंग > प्लैटफ़ॉर्म > Android > बिल्ड बनाएं और Vulkan के साथ काम करें को चुनें. जब आप सहायता Vulkan और OpenGL ES3.2 के साथ काम करने वाले वर्शन के लिए, Unreal पर डिफ़ॉल्ट रूप से Vulkan का इस्तेमाल किया जाता है. अगर डिवाइस Vulkan पर काम नहीं करता. इसलिए, Unreal का ES 3.2 वर्शन पर काम करता है.

प्रोजेक्ट सेटिंग का डायलॉग बॉक्स.
पांचवीं इमेज. Unreal Engine में Vulkan को चालू करें.

अगर आपके पास Vulkan की ऐसी सुविधाएं हैं जो ठीक से काम नहीं करतीं कुछ डिवाइसों के लिए, आपके पास अपनी BaseDeviceProfile.ini फ़ाइल को कस्टमाइज़ करने का विकल्प होता है, ताकि उन्हें बाहर रखा जा सके उन डिवाइस पर. डिवाइस की प्रोफ़ाइल को पसंद के मुताबिक बनाने और बड़े स्तर पर इस्तेमाल करने की सुविधा के बारे में जानें ताकि Android को BaseDeviceProfile.ini कस्टमाइज़ करें. नए डिवाइस ड्राइवर पहले से ही समस्याओं को ठीक कर सकते हैं ज्ञात खराब डिवाइस, सभी पाने के लिए अपनी BaseDeviceProfile.ini फ़ाइल को अपडेट रखें ऑप्टिमाइज़ करना.

ADPF क्या है

Android डाइनैमिक परफ़ॉर्मेंस फ़्रेमवर्क (एडीएपी) यह डाइनैमिक थर्मल, सीपीयू, और जीपीयू मैनेजमेंट की सुविधाओं पर आधारित गेम ऑप्टिमाइज़ करता है Android पर देखें. इसमें गेम पर फ़ोकस किया गया है. हालांकि, इसके अलावा, अन्य गेम के लिए भी सुविधाओं का इस्तेमाल ज़्यादा इस्तेमाल करते हैं.

ADPF, ऐसे एपीआई का एक सेट है जो गेम और परफ़ॉर्मेंस पर ज़्यादा असर डालने वाले ऐप्लिकेशन को Android डिवाइसों के पावर और थर्मल सिस्टम के साथ ज़्यादा सीधे तौर पर इंटरैक्ट करते हैं. के साथ के लिए डिज़ाइन किया गया है, तो आप Android सिस्टम पर डायनामिक व्यवहार की निगरानी कर सकते हैं और इससे गेम की परफ़ॉर्मेंस को ईको-फ़्रेंडली बनाया जाता है, जो डिवाइसों को ज़रूरत से ज़्यादा गर्म नहीं करता.

यहां मुख्य ADPF सुविधाओं के बारे में बताया गया है:

  • Thermal API: डिवाइस के थर्मल स्टेटस पर नज़र रखें, ताकि डिवाइस लंबे समय तक काम करने से पहले ही वर्कलोड में बदलाव कर सके.
  • सीपीयू परफ़ॉर्मेंस हिंट एपीआई: परफ़ॉर्मेंस से जुड़े संकेत दें, ताकि Android, वर्कलोड के लिए सही परफ़ॉर्मेंस सेटिंग चुन सके. जैसे, सीपीयू ऑपरेटिंग पॉइंट या कोर.
  • गेम मोड एपीआई और गेम स्टेट एपीआई: उपयोगकर्ता की सेटिंग और गेम के हिसाब से कॉन्फ़िगरेशन के आधार पर, परफ़ॉर्मेंस या बैटरी लाइफ़ की विशेषताओं को प्राथमिकता देकर, गेम खेलने के अनुभव को बेहतर बनाने की सुविधा चालू करें.
  • तय परफ़ॉर्मेंस वाला मोड: यह विकल्प, मानदंड के दौरान किसी डिवाइस पर फ़िक्स्ड-परफ़ॉर्मेंस मोड चालू करता है. इससे, ऐसे मेज़रमेंट मिलते हैं जिन्हें डाइनैमिक सीपीयू क्लॉकिंग की वजह से बदला नहीं जाता.
  • पावर एफ़िशिएंसी मोड: यह सेशन को बताता है कि परफ़ॉर्मेंस हिंट सेशन में थ्रेड को सुरक्षित तरीके से शेड्यूल किया जा सकता है, ताकि परफ़ॉर्मेंस के मुकाबले पावर दक्षता को प्राथमिकता दी जा सके. यह सुविधा, Android 15 (एपीआई leve 35) में उपलब्ध है.

नेटिव Android प्रोजेक्ट में ADPF का इस्तेमाल करने का तरीका

अपने नेटिव गेम में ज़रूरत के हिसाब से ढलने की सुविधाओं को इंटिग्रेट कोडलैब की मदद से, ADPF सुविधाओं को अपने गेम में इंटिग्रेट किया जा सकता है गेम में अलग-अलग चरणों को पूरा करें, जिन्हें अपनी रफ़्तार से पूरा किया जा सकता है. आखिर में कोडलैब का इस्तेमाल करके, आपने ये सुविधाएं इंटिग्रेट की होंगी:

  • Thermal API: डिवाइस के थर्मल स्टेटस को सुनें और उसके थर्मल थ्रॉटलिंग मोड में जाने से पहले प्रतिक्रिया करें.
  • गेम मोड एपीआई: खिलाड़ी को बेहतर बनाने से जुड़ी प्राथमिकताएं समझें (परफ़ॉर्मेंस को बेहतर बनाएं या बैटरी की बचत करें) और उसके हिसाब से बदलाव करें.
  • गेम की स्थिति एपीआई: सिस्टम को आपके गेम की स्थिति (लोडिंग, प्ले, यूज़र इंटरफ़ेस (यूआई) वगैरह) के बारे में बताता है. इससे सिस्टम इसके हिसाब से संसाधनों में बदलाव कर सकता है (बूस्ट I/O या सीपीयू, जीपीयू वगैरह).
  • परफ़ॉर्मेंस हिंट एपीआई: सिस्टम को अपने थ्रेडिंग मॉडल और वर्कलोड के बारे में बताएं, ताकि सिस्टम उसके हिसाब से संसाधन बांट सके.

Unity गेम इंजन में ADPF का इस्तेमाल करने का तरीका

Unity की अडैप्टिव परफ़ॉर्मेंस उन गेम डेवलपर के लिए टूल जो मोबाइल डिवाइस पर अपने गेम को ऑप्टिमाइज़ करना चाहते हैं, खास तौर पर, अलग-अलग तरह के Android नेटवर्क के लिए. अडैप्टिव परफ़ॉर्मेंस की सुविधा चालू होने पर, आपका गेम, डिवाइस की परफ़ॉर्मेंस और थर्मल विशेषताओं के हिसाब से अडजस्ट हो जाए यह पक्का करता है कि गेम खेलने का आसान और बेहतरीन अनुभव मिले.

अडैप्टिव परफ़ॉर्मेंस की जानकारी देने वाला Android ऐप्लिकेशन Unity में ADPF को लागू करने का तरीका बताया गया है.

प्रोजेक्ट सेटिंग का डायलॉग बॉक्स.
छठी इमेज. Unity इंजन में ADPF को इंटिग्रेट करें.

Unreal गेम इंजन में ADPF का इस्तेमाल करने का तरीका

प्रोजेक्ट सेटिंग का डायलॉग बॉक्स.
सातवीं इमेज. अनरियल इंजन में ADPF को इंटिग्रेट करें.
  1. प्लग इन डाउनलोड करें
  2. प्लग इन को प्रोजेक्ट प्लग इन फ़ोल्डर में कॉपी करें
  3. अनरियल एडिटर में ADPF Unreal Engine प्लगिन को चालू करें
  4. अनरियल एडिटर को फिर से लॉन्च करें
  5. गेम बनाएं और पकाएं

Android डाइनैमिक परफ़ॉर्मेंस फ़्रेमवर्क(ADPF) प्लगिन अनरियल इंजन के लिए की परफ़ॉर्मेंस अच्छी है और यह थर्मल थ्रॉटलिंग से बचाता है. प्लग इन डाउनलोड करें GitHub से लिया गया है. यह प्लग इन सेटिंग के आधार पर सुविधाओं को बदलता है कंसोल की अरियल वैल्यू.