रीफ़्रेश रेट ऑप्टिमाइज़ करना

Android 15 में, पावर की खपत को ऑप्टिमाइज़ करने के लिए, गेम के लिए डिफ़ॉल्ट रीफ़्रेश रेट 60 हर्ट्ज़ सेट किया गया है. 120 एफ़पीएस जैसे ज़्यादा फ़्रेम रेट पाने के लिए, अब आपको Frame Rate API या Swappy लाइब्रेरी का इस्तेमाल करके, साफ़ तौर पर अनुरोध करना होगा.

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

setFrameRate() एपीआई का इस्तेमाल करना

The setFrameRate() एपीआई की मदद से, गेम डेवलपर डिसप्ले के लिए कोई खास रीफ़्रेश रेट इस्तेमाल कर सकते हैं. इसके लिए, ये दो चरण पूरे करने होंगे:

  1. डिवाइस और Android वर्शन की कंपैटिबिलिटी की पुष्टि करना.
  2. setFrameRate() का इस्तेमाल करके, ज़्यादा एफ़पीएस के लिए अनुरोध करना.

डिवाइस और Android वर्शन की कंपैटिबिलिटी की पुष्टि करना:

यह पता करने के लिए कि डिवाइस 90 हर्ट्ज़, 120 हर्ट्ज़ या अन्य रीफ़्रेश रेट के साथ काम करता है या नहीं, Display.getSupportedModes() तरीकों का इस्तेमाल करें. अगर डिवाइस सिर्फ़ 60 हर्ट्ज़ पर काम करता है, तो इस सीमा से ज़्यादा रीफ़्रेश रेट का इस्तेमाल नहीं किया जा सकता.

Kotlin

val display = windowManager.defaultDisplay
val supportedModes = display.supportedModes
for (mode in supportedModes) {
  Log.d("DisplayInfo", "Supported mode: ${mode.physicalWidth}x${mode.physicalHeight}, ${mode.refreshRate}Hz")
}

ज़्यादा एफ़पीएस के लिए अनुरोध करना

रेंडरिंग लूप शुरू होने पर, गेम विंडो शुरू होने पर या टारगेट एफ़पीएस को डिसप्ले रीफ़्रेश रेट में बदलाव करने की ज़रूरत पड़ने पर, setFrameRate() को कॉल करें.

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

यहां दिए गए स्निपेट से पता चलता है कि setFrameRate() एपीआई की मदद से, बहुत ज़्यादा रीफ़्रेश रेट से कैसे बचा जा सकता है.

Kotlin

val targetFps = 120f
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
  window.setFrameRate(
      targetFps,
      Window.FrameRateCompatibility.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE,
      0
  )
}

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

फ़्रेम पेसिंग लाइब्रेरी का इस्तेमाल करना

फ़्रेम पेसिंग लाइब्रेरी या Swappy, एक ओपन सोर्स लाइब्रेरी है. इसे C/C++ Android गेम इंजन में, VSync मैनेजमेंट और फ़्रेम शेड्यूलिंग को आसान बनाने के लिए डिज़ाइन किया गया है. यह टूल, रीफ़्रेश रेट को ऑप्टिमाइज़ करने की प्रोसेस को आसान बनाता है. साथ ही, यह प्रभावी ढंग से एक बेहतर ऐब्स्ट्रैक्शन लेयर के तौर पर काम करता है, जैसे कि setFrameRate(). इसके अलावा, Swappy में ऐसी अतिरिक्त सुविधाएं भी मिलती हैं जिनसे आपके गेम की परफ़ॉर्मेंस और स्मूदनेस बेहतर हो सकती है.

ज़्यादा जानकारी के लिए, Swappy पेज पर जाएं.

बेहतर नतीजों के लिए अतिरिक्त सुझाव

यहां कुछ अहम सुझाव दिए गए हैं:

  1. डाइनैमिक फ़्रेम रेट स्विचिंग.
  2. परफ़ॉर्मेंस मॉनिटर करना.
  3. डिसप्ले के ज़्यादा से ज़्यादा रीफ़्रेश रेट के आधार पर, एफ़पीएस के विकल्प देना.

डाइनैमिक फ़्रेम रेट स्विचिंग

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

परफ़ॉर्मेंस मॉनिटर करना

यह पक्का करने के लिए कि आपका गेम ज़्यादा रीफ़्रेश रेट पर बेहतर तरीके से काम करे, परफ़ॉर्मेंस मॉनिटरिंग टूल इंटिग्रेट करें. जैसे, फ़्रेम काउंटर या परफ़ॉर्मेंस ओवरले. इन टूल से, आपके गेम के असल फ़्रेम रेट के बारे में रीयल-टाइम फ़ीडबैक मिलता है. इससे यह पुष्टि की जा सकती है कि आपको लगातार 120 एफ़पीएस का टारगेट मिल रहा है या नहीं.

अगर आपके फ़्रेम रेट में काफ़ी उतार-चढ़ाव आता है, तो दिए गए डिवाइस पर, कम फ़्रेमरेट को टारगेट करें. इससे, बेहतर अनुभव मिल सकता है. साथ ही, सबसे ज़्यादा रीफ़्रेश रेट पाने की कोशिश में होने वाली परफ़ॉर्मेंस से जुड़ी समस्याएं भी कम हो सकती हैं.

डिसप्ले के ज़्यादा से ज़्यादा रीफ़्रेश रेट के आधार पर, एफ़पीएस के विकल्प देना

आपके गेम को मौजूदा डिवाइस के डिसप्ले के ज़्यादा से ज़्यादा रीफ़्रेश रेट का पता लगाना चाहिए. जैसे, 60 हर्ट्ज़, 90 हर्ट्ज़ या 120 हर्ट्ज़. इसके बाद, एफ़पीएस सेटिंग को उसी के मुताबिक सीमित करना चाहिए. उदाहरण के लिए, अगर डिवाइस सिर्फ़ 60 हर्ट्ज़ तक काम करता है, तो गेम सेटिंग में 60 एफ़पीएस से ज़्यादा के सभी विकल्पों को बंद कर देना चाहिए. ऐसा करने से, खिलाड़ी को कोई भ्रम नहीं होगा.