गेम मोड इंटरवेंशन, गेम के हिसाब से ऑप्टिमाइज़ेशन होते हैं. इन्हें ओरिजनल इक्विपमेंट मैन्युफ़ैक्चरर (ओईएम) सेट करते हैं. इनका मकसद, उन गेम की परफ़ॉर्मेंस को बेहतर बनाना है जिन्हें डेवलपर अब अपडेट नहीं कर रहे हैं. उदाहरण के लिए:
- WindowManager backbuffer resize का इस्तेमाल करना.
- नेटिव GLES ड्राइवर के बजाय ANGLE का इस्तेमाल करना.
आपके पास अपने गेम में Game Mode API को मैनेज करने का विकल्प है. इससे, OEM की ओर से दिए गए गेम मोड के इंटरवेंशन को बदला जा सकता है.
Game Mode API और इंटरवेंशन इन पर उपलब्ध हैं:
- Android 12 वाले डिवाइसों को चुनना
- Android 13 या उसके बाद के वर्शन वाले डिवाइस
हर गेम में ये काम किए जा सकते हैं:
- Game Mode API के व्यवहार को लागू करना,
- OEM को गेम मोड के लिए इंटरवेंशन सेटिंग का सुझाव देना या
- गेम मोड के इंटरवेंशन से साफ़ तौर पर ऑप्ट आउट करें.
बैकग्राउंड
इस सेक्शन में बताया गया है कि गेम मोड के इंटरवेंशन क्या करते हैं और हर मोड के लिए अपने गेम को ऑप्टिमाइज़ करने का तरीका क्या है.
WindowManager के बैकबफ़र का साइज़ बदलना
WindowManager के बैकबफ़र के साइज़ में बदलाव करने की सुविधा से, डिवाइस के जीपीयू पर लोड कम हो सकता है. जब किसी गेम को टारगेट फ़्रेम रेट पर चलाया जाता है, तो इससे बैटरी खपत भी कम हो सकती है.
रीसाइज़ करने की सुविधा चालू करने से, जीपीयू के इस्तेमाल में 30% और पूरे सिस्टम के लिए बिजली की खपत में 10% तक की कमी आ सकती है. इस्तेमाल किए गए डिवाइस, आस-पास के वातावरण, और एक साथ कई प्रोसेस करने जैसी अन्य वजहों से, नतीजे अलग-अलग हो सकते हैं.
जीपीयू पर निर्भर ऐसे गेम में, जीपीयू लोड कम होने पर ज़्यादा फ़्रेम रेट दिख सकते हैं.
हमारा सुझाव है कि सभी गेम धीमे-धीमे आगे बढ़ें. ऐसा इसलिए, क्योंकि फ़्रेम रेट में उतार-चढ़ाव होने पर, उपयोगकर्ताओं को गेम की परफ़ॉर्मेंस का पता नहीं चल पाता.
एफ़पीएस थ्रॉटलिंग
Android FPS थ्रॉटल, गेम मोड का एक तरीका है. इससे गेम को ज़्यादा स्थिर फ़्रेम रेट पर चलाने में मदद मिलती है, ताकि बैटरी की खपत कम हो. यह सुविधा, Android 13 या इसके बाद के वर्शन में उपलब्ध है. ज़्यादा जानकारी के लिए, एफ़पीएस को कम करने की सुविधा के बारे में खास जानकारी देखें.
गेम मोड के इंटरवेंशन का आकलन करना
इस सेक्शन में adb कमांड का इस्तेमाल किया जाता है.
मोड सेट अप करना
गेम मोड के इंटरवेंशन की जांच करने से पहले, आपको ऐप्लिकेशन की गेम मोड कॉन्फ़िगरेशन फ़ाइल में जाकर, गेम मोड से ऑप्ट आउट करना होगा. ऐसा न करने पर, प्लैटफ़ॉर्म इन निर्देशों को बायपास कर देगा और सिर्फ़ गेम में मौजूद ऑप्टिमाइज़ेशन का इस्तेमाल करेगा.
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
xmlns:android="http://schemas.android.com/apk/res/android"
android:supportsBatteryGameMode="false"
android:supportsPerformanceGameMode="false"
/>
(ज़रूरी नहीं) डिवाइस के मौजूदा कॉन्फ़िगरेशन का बैक अप लेना
Pixel या अन्य डिवाइसों के लिए, आपके डिवाइस कॉन्फ़िगरेशन में पहले से मौजूद गेम इंटरवेंशन कॉन्फ़िगरेशन हो सकता है. इस निर्देश का इस्तेमाल करके कॉन्फ़िगरेशन के बारे में क्वेरी की जा सकती है:
adb shell device_config get game_overlay <PACKAGE_NAME>
अगर क्वेरी से null
मिलता है, तो पहले से मौजूद कॉन्फ़िगरेशन को अनदेखा करें. अगर ऐसा नहीं है, तो उसे सेव करें और जांच के बाद उस पर रीसेट करें.
इंटरवेंशन का आकलन करना
WindowManager के बैकबफ़र के साइज़ में बदलाव करने की सुविधा का अपने-आप आकलन करने के लिए, नीचे दिए गए निर्देश का इस्तेमाल करके, गेम मोड में WindowManager के बैकबफ़र के साइज़ में बदलाव करने की अलग-अलग वैल्यू सेट करें.
adb shell device_config put game_overlay <PACKAGE_NAME>
mode=2,downscaleFactor=0.9:mode=3,downscaleFactor=0.5
ऊपर दिए गए उदाहरण में, mode=2
“परफ़ॉर्मेंस” और mode=3
“बैटरी सेवर” है. downscaleFactor
वैल्यू को प्रतिशत के तौर पर दिखाया जाता है, जो स्क्रीन के साइज़ को बदलने की सेटिंग पर लागू होता है. उदाहरण के लिए, 0.7 का मतलब 70% और 0.8 का मतलब 80% है. 90% (0.9) का साइज़ बदलना मामूली बात है, जबकि 50% (0.5) का साइज़ बदलना अहम है.
चेतावनी: ऐसा हो सकता है कि Android 12 में, चाइल्ड प्रोसेस का साइज़ सही से न बदले. खास तौर पर, पक्का करें कि टॉस्ट और पॉप-अप सही तरीके से रेंडर हों. हमारा सुझाव है कि आप इमेज का साइज़ बदलने की सेटिंग को कम से कम 70% पर सेट करें.
साइज़ बदलने की नई वैल्यू सेट अप करने के बाद, गेम मोड के बीच स्विच करके देखें कि WindowManager के बैकबफ़र के साइज़ में बदलाव करने से आपके गेम पर क्या असर पड़ता है:
adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>
गेम मोड चुनने के बाद, गेम को रीस्टार्ट करना न भूलें. स्क्रीन रिज़ॉल्यूशन को कम करने के लिए, ऐप्लिकेशन को रीस्टार्ट करना ज़रूरी है.
इंटरवेंशन से ऑप्ट-आउट करना
ऑप्ट आउट करके, यह कंट्रोल किया जा सकता है कि आपके गेम पर कोई इंटरवेंशन लागू किया जाए या नहीं. हर इंटरवेंशन की अपनी ऑप्ट-आउट सेटिंग होती है.
- गेम मोड के ऑप्ट-इन और ऑप्ट-आउट को कंट्रोल करने के लिए इस्तेमाल की जाने वाली कॉन्फ़िगरेशन एक्सएमएल फ़ाइल का इस्तेमाल, इंटरवेंशन सेटिंग के लिए भी किया जाता है:
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
xmlns:android="http://schemas.android.com/apk/res/android"
android:allowGameDownscaling="false"
android:allowGameFpsOverride="false"
/>
- ऑप्ट-आउट करने के लिए, अपने गेम को फिर से बनाएं और सबमिट करें.
डिफ़ॉल्ट रूप से, ओरिजनल इक्विपमेंट मैन्युफ़ैक्चरर (ओईएम) के सेट किए गए इंटरवेंशन का इस्तेमाल तब तक किया जाएगा, जब तक कि आपने अपने गेम को साफ़ तौर पर इनका इस्तेमाल करने से ऑप्ट आउट नहीं कर दिया.
संसाधन
गेम की परफ़ॉर्मेंस को मेज़र करने और उसे ऑप्टिमाइज़ करने के बारे में ज़्यादा जानकारी के लिए:
सिस्टम प्रोफ़ाइलर - सीपीयू के इस्तेमाल और ग्राफ़िक कॉल का विश्लेषण करते हैं.
Android GPU Inspector - Android पर ग्राफ़िक्स की प्रोफ़ाइल.
Android फ़्रेम पेसिंग लाइब्रेरी - इससे OpenGL और Vulkan गेम को आसानी से रेंडर करने और फ़्रेम पेसिंग को सही करने में मदद मिलती है.
Android Performance Tuner - इसकी मदद से, कई Android डिवाइसों पर फ़्रेम रेट और ग्राफ़िक को मेज़र और ऑप्टिमाइज़ किया जा सकता है.
पावर प्रोफ़ाइलर - इससे पता चलता है कि आपका ऐप्लिकेशन कहां ज़रूरत से ज़्यादा एनर्जी का इस्तेमाल करता है.