
Mir 2: Return of the King, एक बेहतरीन क्वालिटी वाला Legend IP मोबाइल गेम है. इसे Actoz Soft ने अनुमति दी है और HK ZHILI YAOAN LIMITED ने Unity Engine का इस्तेमाल करके इसे डेवलप किया है.
यह गेम, कोरियन फ़ैंटेसी एमएमओआरपीजी के प्रतिनिधि "Mir 2" की भावनाओं को पूरी तरह से फिर से बनाता है. साथ ही, यह गेम के सबसे लोकप्रिय कॉन्टेंट में से कई को भी उपलब्ध कराता है. जैसे, उपकरण इकट्ठा करना, बड़े पैमाने पर रेत का हमला, और अन्य मुख्य गेमप्ले.
इस गेम में Android फ़्रेम पेसिंग एपीआई (Swappy) का इस्तेमाल किया गया है. इससे, गेम के फ़्रेम रेट को स्थिर रखने, बेहतर तरीके से रेंडर करने, और 'Android की ज़रूरी जानकारी' (धीमे सेशन की मेट्रिक) को बेहतर बनाने में मदद मिलती है.
'Android की ज़रूरी जानकारी' में धीमे सेशन की सुविधा लॉन्च की गई
धीमा सेशन, Google Play Console में 'Android की ज़रूरी जानकारी' वाली मेट्रिक है. धीमे सेशन में 25% से ज़्यादा फ़्रेम धीमी रफ़्तार से रेंडर होते हैं. किसी फ़्रेम को धीमा तब माना जाता है, जब:
20fps पर, यह पिछले फ़्रेम के 50 मिलीसेकंड के अंदर नहीं दिखाया जाता.
30 एफ़पीएस (फ़्रेम प्रति सेकंड) पर, यह पिछले फ़्रेम के 34 मिलीसेकंड के अंदर नहीं दिखाया जाता.
आने वाले समय में, Play अपने उपयोगकर्ताओं को उन गेम से दूर रखना शुरू कर देगा जो उनके फ़ोन पर 20 FPS (फ़्रेम प्रति सेकंड) की दर से रेंडर नहीं हो पाते.
डेवलपर के टारगेट के मुकाबले, स्क्रीन पर फ़्रेम दिखने या रेंडर होने में ज़्यादा समय लगने की कई वजहें हो सकती हैं. ऐसा हो सकता है कि गेम, सीपीयू या जीपीयू पर निर्भर हो. साथ ही, गेम के ज़्यादा गरम होने की वजह से, डिवाइस की थर्मल स्टेटस की सुविधा चालू हो गई हो. इसके अलावा, गेम के फ़्रेम रेट और डिवाइस के डिसप्ले रीफ़्रेश रेट में अंतर भी हो सकता है.
Swappy क्या है
Android फ़्रेम पेसिंग लाइब्रेरी, जिसे Swappy भी कहा जाता है, AGDK लाइब्रेरी का हिस्सा है. Swappy की मदद से, OpenGL और Vulkan गेम को Android पर बेहतर तरीके से रेंडर किया जा सकता है. साथ ही, फ़्रेम की सही पेसिंग भी तय की जा सकती है.
अगर डिवाइस पर एक से ज़्यादा रीफ़्रेश रेट काम करते हैं, तो लाइब्रेरी उनका इस्तेमाल करती है. इससे गेम को फ़्रेम दिखाने में ज़्यादा आसानी होती है. उदाहरण के लिए, अगर किसी डिवाइस पर 60 हर्ट्ज़ और 90 हर्ट्ज़, दोनों रीफ़्रेश रेट काम करते हैं, तो ऐसा गेम जो 60 फ़्रेम प्रति सेकंड नहीं दिखा सकता है वह 30 के बजाय 45 फ़्रेम प्रति सेकंड पर चल सकता है, ताकि गेमिंग अनुभव बेहतर बना रहे. लाइब्रेरी, गेम के अनुमानित फ़्रेम रेट का पता लगाती है और इसके हिसाब से फ़्रेम के प्रज़ेंटेशन के समय में अपने-आप बदलाव करती है.
फ़्रेम पेसिंग लाइब्रेरी से बैटरी लाइफ़ भी बेहतर होती है, क्योंकि इससे डिसप्ले के ग़ैर-ज़रूरी अपडेट से बचा जा सकता है. उदाहरण के लिए, अगर कोई गेम 60 एफ़पीएस पर रेंडर हो रहा है, लेकिन डिसप्ले 120 हर्ट्ज़ पर अपडेट हो रहा है, तो हर फ़्रेम के लिए स्क्रीन दो बार अपडेट होती है. फ़्रेम पेसिंग लाइब्रेरी, रीफ़्रेश रेट को डिवाइस के लिए तय की गई वैल्यू पर सेट करके, इस समस्या से बचती है. यह वैल्यू, टारगेट फ़्रेम रेट के सबसे करीब होती है.
Swappy की मदद से, Mir 2 ने रेंडरिंग की परफ़ॉर्मेंस को कैसे बेहतर बनाया
Mir 2 (미르2: 왕의 귀환) में रेंडरिंग की परफ़ॉर्मेंस में अस्थिरता की समस्या आ रही थी. इसकी वजह से, 20 FPS के फ़्रेम रेट थ्रेशोल्ड पर 40% सेशन धीमे हुए. यह थ्रेशोल्ड, Google Play के थ्रेशोल्ड 20% से काफ़ी ज़्यादा है.

Mir 2 (미르2: 왕의 귀환) एक हाई फ़िडेलिटी ग्राफ़िक गेम है. कुछ डिवाइसों पर, एफ़पीएस को स्थिर रखने में समस्या आ रही है. उनके फ़्रेम रेट डिस्ट्रिब्यूशन से पता चलता है कि कई सेशन 20 FPS से कम फ़्रेम रेट पर चल रहे हैं.

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

Swappy लाइब्रेरी, सिंक फ़ेंस (EGL_KHR_fence_sync
और VkFence
) का इस्तेमाल करके, इस समस्या को हल करती है. इससे ऐप्लिकेशन में इंजेक्ट किए गए इंतज़ार की अवधि, डिसप्ले पाइपलाइन को अप-टू-डेट होने में मदद करती है. इससे बैक प्रेशर बनने से रोका जा सकता है. फ़्रेम A में अब भी एक अतिरिक्त फ़्रेम दिख रहा है, लेकिन फ़्रेम B अब सही तरीके से दिख रहा है.

Mir 2 ने Unity में पहले से मौजूद ऑप्टिमाइज़ की गई फ़्रेम पेसिंग सुविधा का फ़ायदा उठाकर, Swappy लाइब्रेरी को आसानी से इंटिग्रेट किया. इस कार्रवाई की वजह से, रेंडरिंग की परफ़ॉर्मेंस में काफ़ी सुधार हुआ. खास तौर पर, धीमे सेशन की मेट्रिक 40% से घटकर 10% हो गई.

Swappy को इंटिग्रेट करने के बाद, Mir2 के लिए धीमे सेशन की संख्या काफ़ी कम हो गई है.

हर बकेट, उन सेशन का प्रतिशत दिखाती है जिनमें 75% फ़्रेम, बकेट लेबल से ज़्यादा तेज़ थे.
Swappy का इस्तेमाल शुरू करना
नेटिव गेम इंजन में Swappy का इस्तेमाल करने का तरीका
अपने गेम में Android फ़्रेम पेसिंग लाइब्रेरी को इंटिग्रेट करने के लिए, ये गाइड देखें:
- अपने Vulkan रेंडरर में Android फ़्रेम पेसिंग को इंटिग्रेट करना
- अपने OpenGL रेंडरर में Android फ़्रेम पेसिंग को इंटिग्रेट करना
Unity गेम इंजन में Swappy का इस्तेमाल करने का तरीका
Unity ने अपने इंजन में Android फ़्रेम पेसिंग को इंटिग्रेट किया है. Unity में इस सुविधा को चालू करने के लिए, प्रोजेक्ट सेटिंग > प्लेयर > Android के लिए सेटिंग > रिज़ॉल्यूशन और प्रज़ेंटेशन में जाकर, ऑप्टिमाइज़ की गई फ़्रेम पेसिंग चेकबॉक्स को चुनें:

इसके अलावा, प्रोग्राम के हिसाब से अपने लॉजिक कोड में ऑप्टिमाइज़ किया गया फ़्रेम पेसिंग विकल्प चालू करें. इससे Unity, फ़्रेम रेट में कम अंतर के लिए फ़्रेम को बराबर बांट पाएगी और गेमप्ले को बेहतर बना पाएगी.
Unreal गेम इंजन में Swappy का इस्तेमाल कैसे करें
Unreal 4.25 और उसके बाद के वर्शन में, Android फ़्रेम पेसिंग लाइब्रेरी इंटिग्रेट की गई है. यह Android Game Development Kit का हिस्सा है. मोबाइल फ़्रेम पेसिंग लेख में, Android फ़्रेम पेसिंग लाइब्रेरी को चालू करने और C++ कोड से फ़्रेम पेसिंग को कंट्रोल करने का तरीका बताया गया है.
ज़्यादा जानकारी के लिए, धीमे सेशन और Swappy के बारे में जानें.