गेम मोड इंटरवेंशन गेम मोड के लिए खास तौर पर बनाए गए ऑप्टिमाइज़ेशन हैं, जिन्हें ओरिजनल इक्विपमेंट मैन्युफ़ैक्चरर (OEM) की ओर से सेट किया जाता है. इससे उन गेम की परफ़ॉर्मेंस को बेहतर बनाया जाता है जिन्हें अब डेवलपर अपडेट नहीं करते हैं. उदाहरण के लिए:
- WindowManager backbuffer resize का इस्तेमाल करना.
- नेटिव GLES ड्राइवर के बजाय ANGLE का इस्तेमाल करना.
गेम मोड एपीआई को गेम से जुड़ी सहायता देने और उसे मैनेज करने के लिए, आपके पास ओईएम से मिले गेम मोड के इंटरवेंशन को बदलने का विकल्प होता है.
गेम मोड एपीआई और इंटरवेंशन इन पर उपलब्ध हैं:
- Android 12 डिवाइसों को चुनें
- Android 13 या उसके बाद के वर्शन वाले डिवाइस
हर गेम में ये काम किए जा सकते हैं:
- Game Mode API को लागू करें,
- ओईएम को गेम मोड इंटरवेंशन सेटिंग का प्रस्ताव दें या
- गेम मोड के इंटरवेंशन से साफ़ तौर पर ऑप्ट आउट करें.
बैकग्राउंड
इस सेक्शन में बताया गया है कि गेम मोड के इंटरवेंशन क्या करते हैं और हर मोड के लिए अपने गेम को ऑप्टिमाइज़ करने का तरीका क्या है.
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% पर सेट करें.
साइज़ बदलने की नई वैल्यू सेट अप हो जाने के बाद, गेम मोड के बीच स्विच करके देखें कि विंडोमैनेजर के बैकबफ़र का साइज़ बदलने वाले इंटरवेंशन से आपके गेम पर क्या असर पड़ा है:
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 जीपीयू इंस्पेक्टर - Android पर प्रोफ़ाइल ग्राफ़िक.
Android फ़्रेम पेसिंग लाइब्रेरी - OpenGL और Vulkan गेम की मदद से, रेंडर होने में आसान और सही फ़्रेम पेसिंग मिलती है.
Android Performance Tuner - इसकी मदद से, कई Android डिवाइसों पर फ़्रेम रेट और ग्राफ़िक को मेज़र और ऑप्टिमाइज़ किया जा सकता है.
पावर प्रोफ़ाइलर - इससे पता चलता है कि आपका ऐप्लिकेशन कहां ज़रूरत से ज़्यादा एनर्जी का इस्तेमाल करता है.