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

फ़्रेम प्रति सेकंड (एफ़पीएस) को मेज़र करने और धीमे फ़्रेम का पता लगाने का तरीका
Android dumpsys surfaceflinger timestats
कमांड, रेंडर की जा रही सभी लेयर के लिए, औसत FPS और प्रज़ेंट से प्रज़ेंट टाइमिंग का हिस्टोग्राम दिखाता है. किसी फ़्रेम के प्रज़ेंट से प्रज़ेंट समय का मतलब, मौजूदा फ़्रेम और ड्रॉ किए जा रहे पिछले फ़्रेम के बीच का इंटरवल होता है. अपने गेम का एफ़पीएस इकट्ठा करने के लिए, कमांड का इस्तेमाल करने का तरीका यहां बताया गया है:
जानकारी कैप्चर करना शुरू करने के लिए, फ़्लैग
enable
औरclear
के साथ कमांड चलाएं:adb shell dumpsys SurfaceFlinger --timestats -clear -enable
गेम को ज़रूरत के मुताबिक खेलने के बाद, जानकारी को डंप करने के लिए, कमांड को फिर से फ़्लैग
dump
के साथ चलाएं:adb shell dumpsys SurfaceFlinger --timestats -dump
डंप की गई जानकारी से, SurfaceFlinger की मदद से रेंडर की गई सभी लेयर के लिए, कुल फ़्रेम और presentToPresent हिस्टोग्राम की जानकारी मिलती है.
layerName
के आधार पर फ़िल्टर करके, आपको अपने गेम का सेक्शन ढूंढना होगा:layerName = SurfaceView[com.google.test/com.devrel.MainActivity]@0(BLAST)#132833
हर लेयर की जानकारी के आधार पर, सेशन के फ़्रेम रेट का हिसाब लगाया जा सकता है.
उदाहरण के लिए, 20 FPS पर धीमे फ़्रेम का प्रतिशत = (54 से 1,000 मिलीसेकंड तक की वैल्यू का जोड़) / कुल फ़्रेम 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 ...
सभी जानकारी इकट्ठा करने के बाद, आपको फ़्लैग
disable
का इस्तेमाल करके, टाइमस्टैट की सुविधा बंद करनी चाहिए:adb shell dumpsys SurfaceFlinger --timestats -disable
रेंडर होने में ज़्यादा समय लगने की वजहें और उनके समाधान
डेवलपर के टारगेट के मुकाबले, फ़्रेम को स्क्रीन पर दिखने या रेंडर होने में ज़्यादा समय लगने की कई वजहें हो सकती हैं. गेम सीपीयू/जीपीयू पर निर्भर हो सकता है. इसके अलावा, डिवाइस ज़्यादा गर्म हो सकता है और थर्मल कंट्रोल की सुविधा चालू हो सकती है. इसके अलावा, गेम के फ़्रेम रेट और डिवाइस के डिसप्ले के रीफ़्रेश रेट में अंतर भी हो सकता है.
इन समस्याओं को हल करने और अपने गेम की परफ़ॉर्मेंस को बेहतर बनाने के लिए, Android फ़्रेम पेसिंग (Swappy), Vulkan, और ADPF का इस्तेमाल करें.
Swappy क्या है
Android फ़्रेम पेसिंग लाइब्रेरी, जिसे Swappy भी कहा जाता है, AGDK लाइब्रेरी का हिस्सा है. Swappy की मदद से, OpenGL और Vulkan गेम को Android पर बेहतर रेंडरिंग और फ़्रेम पेसिंग मिलती है.
फ़्रेम पेसिंग, किसी गेम के लॉजिक और रेंडरिंग लूप को ऑपरेटिंग सिस्टम के डिसप्ले सबसिस्टम और डिसप्ले हार्डवेयर के साथ सिंक करने की प्रोसेस है. Android डिसप्ले सबसिस्टम को ऐसे विज़ुअल आर्टफ़ैक्ट (जिन्हें टियरिंग कहा जाता है) से बचने के लिए डिज़ाइन किया गया था जो अपडेट के दौरान, डिसप्ले हार्डवेयर के नए फ़्रेम पर स्विच करने पर हो सकते हैं. इन आर्टफ़ैक्ट से बचने के लिए, डिसप्ले सबसिस्टम ये काम करता है:
- पिछले फ़्रेम को अंदरूनी तौर पर बफ़र करता है
- देर से सबमिट किए गए फ़्रेम का पता लगाता है
- देर से आने वाले फ़्रेम का पता चलने पर, पिछले फ़्रेम को दोबारा दिखाता है
जानें कि Mir 2 ने Swappy का इस्तेमाल करके, अपने धीमे सेशन रेट को 40% से घटाकर 10%कैसे किया.
नेटिव प्रोजेक्ट में Swappy का इस्तेमाल करने का तरीका
अपने गेम में Android फ़्रेम पेसिंग लाइब्रेरी को इंटिग्रेट करने के लिए, ये गाइड देखें:
- अपने OpenGL रेंडरर में Android फ़्रेम पेसिंग को इंटिग्रेट करना
- अपने Vulkan रेंडरर में Android फ़्रेम पेसिंग को इंटिग्रेट करना
Unity गेम इंजन में Swappy का इस्तेमाल करने का तरीका
Unity ने अपने इंजन में Android फ़्रेम पेसिंग को इंटिग्रेट किया है. Unity 2019.2 या इसके बाद के वर्शन में इस सुविधा को चालू करने के लिए, Android > रिज़ॉल्यूशन और प्रज़ेंटेशन के लिए, प्रोजेक्ट सेटिंग > प्लेयर > सेटिंग में जाकर, ऑप्टिमाइज़ की गई फ़्रेम पेसिंग चेकबॉक्स को चुनें:

इसके अलावा, अपने लॉजिक कोड में प्रोग्राम के हिसाब से ऑप्टिमाइज़ की गई फ़्रेम पेसिंग का विकल्प चालू करें. इससे Unity, फ़्रेम रेट में कम अंतर के लिए फ़्रेम को बराबर से बांट पाएगी और गेमप्ले को बेहतर बना पाएगी.
Unreal गेम इंजन में Swappy का इस्तेमाल करने का तरीका
Unreal 4.25 और उसके बाद के वर्शन में, Android फ़्रेम पेसिंग लाइब्रेरी इंटिग्रेट की गई है. यह लाइब्रेरी, Android Game Development Kit का हिस्सा है. मोबाइल फ़्रेम पेसिंग लेख में, Android फ़्रेम पेसिंग लाइब्रेरी को चालू करने और C++ कोड से फ़्रेम पेसिंग को कंट्रोल करने का तरीका बताया गया है.
Vulkan क्या है
Vulkan एक आधुनिक क्रॉस-प्लैटफ़ॉर्म 3D ग्राफ़िक्स एपीआई है. इसे डिवाइस के ग्राफ़िक हार्डवेयर और आपके गेम के बीच के अंतर को कम करने के लिए डिज़ाइन किया गया है. Vulkan, Android पर मुख्य लो-लेवल ग्राफ़िक एपीआई है. यह OpenGL ES की जगह लेता है. OpenGL ES अब भी Android पर काम करता है, लेकिन इस सुविधा पर अब काम नहीं किया जा रहा है.
Vulkan, OpenGL ES की तुलना में ये फ़ायदे देता है:
- ग्राफ़िक्स ड्राइवर में सीपीयू ओवरहेड कम होने के साथ-साथ, ज़्यादा बेहतर आर्किटेक्चर
- सीपीयू की परफ़ॉर्मेंस को बेहतर बनाने के लिए, ऑप्टिमाइज़ेशन की नई रणनीतियां
- OpenGL ES में उपलब्ध नहीं होने वाली नई ग्राफ़िक सुविधाएं, जैसे कि बाइन्डलेस एपीआई और रे ट्रेसिंग
नेटिव Android प्रोजेक्ट में Vulkan का इस्तेमाल करने का तरीका
Android पर Vulkan का इस्तेमाल शुरू करना कोडलैब में, आपको अपनी Vulkan रेंडरिंग पाइपलाइन सेट अप करने के साथ-साथ, स्क्रीन पर टेक्सचर वाले घूमते हुए त्रिकोण को रेंडर करने का तरीका बताया गया है. अपने गेम के ग्राफ़िक को रेंडर करने का तरीका जानने के लिए, कोडलैब का इस्तेमाल करें.
Unity गेम इंजन में Vulkan का इस्तेमाल करने का तरीका
Unity पर डिवाइस अपने-आप चुनने की सुविधा चालू करने के लिए, Auto Graphics API को कॉन्फ़िगर करने का तरीका अपनाएं.

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

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

अगर आपने Vulkan की कुछ ऐसी सुविधाओं का इस्तेमाल किया है जो कुछ डिवाइसों पर ठीक से काम नहीं करती हैं, तो उन डिवाइसों को बाहर रखने के लिए, अपनी BaseDeviceProfile.ini
फ़ाइल में पसंद के मुताबिक बदलाव किए जा सकते हैं. BaseDeviceProfile.ini
को पसंद के मुताबिक बनाने का तरीका जानने के लिए, Android के लिए डिवाइस प्रोफ़ाइलों को पसंद के मुताबिक बनाना और उन्हें स्केल करना लेख पढ़ें. नए डिवाइस ड्राइवर, पहले से काम न करने वाले डिवाइसों को ठीक कर सकते हैं. इसलिए, सभी ऑप्टिमाइज़ेशन पाने के लिए, अपनी BaseDeviceProfile.ini फ़ाइल को अपडेट रखें.
ADPF क्या है
Android डाइनैमिक परफ़ॉर्मेंस फ़्रेमवर्क (ADPF), Android पर डाइनैमिक थर्मल, सीपीयू, और जीपीयू मैनेजमेंट की सुविधाओं के आधार पर गेम को ऑप्टिमाइज़ करता है. इन सुविधाओं का मकसद गेम पर फ़ोकस करना है. हालांकि, इन्हें बेहतर परफ़ॉर्मेंस वाले अन्य ऐप्लिकेशन के लिए भी इस्तेमाल किया जा सकता है.
ADPF, एपीआई का एक सेट है. इसकी मदद से, गेम और परफ़ॉर्मेंस पर ज़्यादा असर डालने वाले ऐप्लिकेशन, Android डिवाइसों के पावर और थर्मल सिस्टम के साथ सीधे तौर पर इंटरैक्ट कर सकते हैं. इन एपीआई की मदद से, Android सिस्टम पर डिवाइस के व्यवहार को मॉनिटर किया जा सकता है. साथ ही, गेम की परफ़ॉर्मेंस को ऐसे लेवल पर ऑप्टिमाइज़ किया जा सकता है जिससे डिवाइसों को ज़्यादा गर्म न किया जा सके.
यहां ADPF की मुख्य सुविधाएं दी गई हैं:
- थर्मल एपीआई: किसी डिवाइस की थर्मल स्थिति को मॉनिटर करता है, ताकि ऐप्लिकेशन, डिवाइस के खराब होने से पहले ही, वर्कलोड में बदलाव कर सके.
- सीपीयू परफ़ॉर्मेंस के बारे में अहम जानकारी देने वाला API: परफ़ॉर्मेंस के बारे में अहम जानकारी देकर, Android को वर्कलोड के लिए सही परफ़ॉर्मेंस सेटिंग (उदाहरण के लिए, सीपीयू ऑपरेटिंग पॉइंट या कोर) चुनने में मदद करता है.
- Game Mode API और Game State API: उपयोगकर्ता की सेटिंग और गेम के खास कॉन्फ़िगरेशन के आधार पर, परफ़ॉर्मेंस या बैटरी लाइफ़ की विशेषताओं को प्राथमिकता देकर, गेमप्ले को ऑप्टिमाइज़ करने की सुविधा चालू करें.
- फ़िक्स्ड परफ़ॉर्मेंस मोड: बेंचमार्किंग के दौरान, डिवाइस पर फ़िक्स्ड परफ़ॉर्मेंस मोड चालू करें. इससे, आपको ऐसे मेज़रमेंट मिलेंगे जिनमें सीपीयू की डाइनैमिक क्लॉकिंग की वजह से बदलाव नहीं होता.
- बैटरी बचाने वाला मोड: इससे सेशन को पता चलता है कि परफ़ॉर्मेंस के बजाय, बैटरी बचाने के लिए, परफ़ॉर्मेंस हिंट सेशन में मौजूद थ्रेड को सुरक्षित तरीके से शेड्यूल किया जा सकता है. यह सुविधा Android 15 (एपीआई लेवल 35) में उपलब्ध है.
नेटिव Android प्रोजेक्ट में ADPF का इस्तेमाल करने का तरीका
अपने नेटिव गेम में, अलग-अलग डिवाइसों के हिसाब से बदलने की सुविधाएं इंटिग्रेट करना कोडलैब में, अपने गेम में ADPF की सुविधाओं को इंटिग्रेट करने का तरीका बताया गया है. इसमें दिए गए चरणों को अपनी गति से पूरा किया जा सकता है. कोडलैब के आखिर में, आपके पास ये सुविधाएं इंटिग्रेट हो जाएंगी:
- थर्मल एपीआई: डिवाइस के गर्म होने की स्थिति को मॉनिटर करता है और डिवाइस के गर्म होने से पहले ही कार्रवाई करता है.
- गेम मोड एपीआई: गेम खेलने वाले लोगों की ऑप्टिमाइज़ेशन से जुड़ी प्राथमिकताओं (परफ़ॉर्मेंस को बेहतर बनाना या बैटरी बचाना) को समझें और उसके हिसाब से बदलाव करें.
- Game State API: इससे सिस्टम को आपके गेम की स्थिति (लोड हो रहा है, चल रहा है, यूज़र इंटरफ़ेस वगैरह) के बारे में पता चलता है. साथ ही, सिस्टम उसी हिसाब से संसाधनों में बदलाव कर सकता है (I/O, सीपीयू, जीपीयू वगैरह को बढ़ाएं).
- परफ़ॉर्मेंस के बारे में अहम जानकारी देने वाला एपीआई: सिस्टम को अपने थ्रेडिंग मॉडल और वर्कलोड के बारे में बताएं, ताकि सिस्टम उसी हिसाब से संसाधनों को बांट सके.
Unity गेम इंजन में ADPF का इस्तेमाल करने का तरीका
Unity की अडैप्टिव परफ़ॉर्मेंस, गेम डेवलपर के लिए एक टूल है. इसकी मदद से, वे मोबाइल डिवाइसों पर अपने गेम को ऑप्टिमाइज़ कर सकते हैं. खास तौर पर, अलग-अलग Android नेटवर्क के लिए. अडैप्टिव परफ़ॉर्मेंस की मदद से, आपका गेम डिवाइस की परफ़ॉर्मेंस और तापमान से जुड़ी विशेषताओं के हिसाब से, रीयल-टाइम में बदलाव कर सकता है. इससे, गेमिंग का बेहतर और आसान अनुभव मिलता है.
अडैप्टिव परफ़ॉर्मेंस Android प्रोवाइडर, Unity में ADPF को लागू करने के तरीके के बारे में आपको बताता है.

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

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