2K ने Android Game Development Kit का इस्तेमाल करके, ANR रेट को 35% तक कम किया

बैकग्राउंड

Cat Daddy Games, वॉशिंगटन के किर्कलैंड में मौजूद एक स्टूडियो है. यह 2K का मालिकाना हक वाला स्टूडियो है. साथ ही, यह NBA 2K Mobile का डेवलपर भी है. टीम को अपने गेम की क्वालिटी और परफ़ॉर्मेंस को बेहतर बनाना था. इसके लिए, टीम ने “ऐप्लिकेशन काम नहीं कर रहा है” (ANR) वाली गड़बड़ियों को कम करने पर फ़ोकस किया. ANR तब होते हैं, जब किसी Android ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) थ्रेड को बहुत ज़्यादा देर तक ब्लॉक किया जाता है. ऐसा होने पर, ऐप्लिकेशन का मुख्य थ्रेड, यूज़र इंटरफ़ेस (यूआई) को अपडेट करने की ज़िम्मेदारी नहीं निभा पाता. साथ ही, उपयोगकर्ता के इनपुट वाले इवेंट को ड्रॉ या प्रोसेस नहीं कर पाता. इससे उपयोगकर्ता को परेशानी होती है. अगर ऐप्लिकेशन फ़ोरग्राउंड में चल रहा है, तो सिस्टम एक डायलॉग दिखाता है. इससे उपयोगकर्ता, ऐप्लिकेशन को जबरदस्ती बंद कर सकता है.

उन्होंने क्या किया

Cat Daddy के लिए, ANR को कम करना सबसे ज़्यादा प्राथमिकता है. क्यूए टीम ने लगातार काम किया और एएनआर के एक सामान्य पैटर्न का पता लगाया: उन्हें पता चला कि जब ऐप्लिकेशन को रोका गया और फिर तुरंत शुरू किया गया, तो ज़्यादा टच इनपुट की वजह से एएनआर हो सकता है. Firebase Crashlytics की मदद से की गई ज़्यादा जांच से पता चला कि यह ANR, android.os.MessageQueue.nativePollOnce टाइप का था. यह NBA 2K Mobile के लिए, ANR का सबसे सामान्य टाइप है.

Cat Daddy को यह भी पता चला कि GameActivity में इनपुट मैनेज करने की बेहतर सुविधा से, इस तरह के ANR से बचा जा सकता है. इसलिए, उन्होंने GameActivity का इस्तेमाल करने का फ़ैसला लिया.

GameActivity, Android Game Development Kit का एक कॉम्पोनेंट है. इसे ऐप्लिकेशन के C/C++ कोड में, ऐप्लिकेशन साइकल के निर्देशों, इनपुट इवेंट, और टेक्स्ट इनपुट को प्रोसेस करने में Android गेम की मदद करने के लिए डिज़ाइन किया गया है. GameActivity, NativeActivity के मुकाबले गेम पर फ़ोकस करने वाली कई सुविधाएं देता है. जैसे, Fragment, SurfaceView में रेंडर करना, और गेम डेवलपमेंट से जुड़ी लोकप्रिय लाइब्रेरी के लिए अन्य सहायता.

GameActivity अपने इनपुट बफ़र में डबल बफ़रिंग का भी इस्तेमाल करता है. इससे गेम को इनपुट के ज़्यादा वॉल्यूम को बेहतर तरीके से मैनेज करने में मदद मिलती है.

नतीजे

GameActivity को लागू करके, Cat Daddy ने गेम के इनपुट मैनेजमेंट को काफ़ी बेहतर बनाया. इससे ANR से जुड़ी गड़बड़ियों में 35% की कमी आई. इससे उपयोगकर्ता अनुभव बेहतर हुआ और गेमप्ले का अनुभव ज़्यादा बेहतर हुआ.

एक और फ़ायदा यह है कि GameActivity, FragmentActivity से इनहेरिट करता है. इसलिए, CatDaddy ने EmbeddedWebView और EmbeddedVideoView को भी इंटिग्रेट किया. ये कुछ सबसे लोकप्रिय सोशल गेम इंटिग्रेशन के लिए ज़रूरी थे.

शुरू करें

GameActivity और Android Game Development Kit की अन्य सुविधाओं की मदद से, अपने गेम का अनुभव बेहतर बनाएं.