इस गाइड में, Android डिवाइसों पर गेम की परफ़ॉर्मेंस का विश्लेषण करने और उसे ऑप्टिमाइज़ करने का तरीका बताया गया है. इससे उपयोगकर्ताओं को बेहतर अनुभव मिलता है. इसमें परफ़ॉर्मेंस से जुड़ी समस्याओं का पता लगाना, सीपीयू और जीपीयू से जुड़ी समस्याओं के बीच अंतर करना, और ऑप्टिमाइज़ेशन के नतीजों की पुष्टि करना शामिल है.
कोई गेम कितना भी मज़ेदार या दिलचस्प क्यों न हो, अगर वह फ़ोन या टैबलेट पर ठीक से नहीं चलता है, तो गेम खेलने वालों को उसमें मज़ा नहीं आएगा. साथ ही, वह गेम उतना लोकप्रिय नहीं होगा. मज़ेदार गेम में भी समस्याएं हो सकती हैं. जैसे, फ़्रेम प्रति सेकंड (एफ़पीएस) कम होना या डिवाइस का ज़्यादा गर्म हो जाना. इन समस्याओं की वजह से, खिलाड़ियों को परेशानी होती है. इसलिए, गेम की परफ़ॉर्मेंस को बेहतर बनाना ज़रूरी है. साथ ही, आपको यह समझना होगा कि इसे कैसे ऑप्टिमाइज़ किया जाए.
परफ़ॉर्मेंस ऑप्टिमाइज़ेशन की प्रोसेस में ये चरण शामिल होते हैं:
गेम की कुल परफ़ॉर्मेंस को मेज़र करना. अनियमितताओं का पता लगाने के लिए, हर सीन के हिसाब से परफ़ॉर्मेंस में गिरावट का आकलन करें.
सीपीयू और जीपीयू के इस्तेमाल की जांच. सीपीयू या जीपीयू से जुड़ी समस्या की वजह का पता लगाएं.
टूल: Unreal Insight, Unity Profiler, Perfetto, और परफ़ॉर्मेंस मेज़रमेंट टूल.
सीपीयू ऑप्टिमाइज़ेशन. परफ़ॉर्मेंस से जुड़ी समस्याओं को ठीक करें.
टूल: Unreal Insight, Unity Profiler, Perfetto, और Simpleperf.
जीपीयू ऑप्टिमाइज़ेशन. परफ़ॉर्मेंस से जुड़ी समस्याओं को ठीक करें.
टूल: RenderDoc, Arm mobile studio, AGI, वेंडर के हिसाब से टूल.
A/B टेस्टिंग. लागू किए गए ऑप्टिमाइज़ेशन की परफ़ॉर्मेंस की पुष्टि करने के लिए, A/B टेस्टिंग करें.
टूल: Unreal Insight, Unity Profiler, Perfetto, और परफ़ॉर्मेंस मापने वाले टूल, सीपीयू या जीपीयू फ़्रीक्वेंसी लॉक, और RenderDoc.
इस प्रोसेस (1-5) को तब तक दोहराया जाता है, जब तक टारगेट किए गए एफ़पीएस और थर्मल पैरामीटर हासिल नहीं हो जाते.
ज़रूरी शर्तें
आपके पास Android डिवाइस पर टेस्ट करने के लिए, गेम का बिल्ड तैयार होना चाहिए.
ये टूल इंस्टॉल करें:
गेम की परफ़ॉर्मेंस का पूरी तरह से विश्लेषण करना
आपको गेम की परफ़ॉर्मेंस की जांच करनी होगी. साथ ही, सीन के हिसाब से परफ़ॉर्मेंस में गिरावट या असामान्यताओं का पता लगाना होगा. अपने गेम को ऑप्टिमाइज़ करने से पहले, उसकी मौजूदा परफ़ॉर्मेंस देखें. गेम में कई यूज़र इंटरफ़ेस (यूआई) और सीन शामिल होते हैं. इसलिए, उन सीन का विश्लेषण करें जिनमें सीपीयू या जीपीयू का इस्तेमाल ज़्यादा होता है या ऐसे लेआउट का विश्लेषण करें जो उम्मीद के मुताबिक काम नहीं करते. इससे, परफ़ॉर्मेंस में गिरावट और हर सीन के लिए सीपीयू या जीपीयू के इस्तेमाल पर नज़र रखी जा सकती है.
- परफ़ॉर्मेंस में गिरावट का आकलन करें: गेम की परफ़ॉर्मेंस का आकलन करने के लिए, परफ़ॉर्मेंस मेज़रमेंट टूल का इस्तेमाल करें. हर सीन के हिसाब से परफ़ॉर्मेंस को मेज़र करें, ताकि उन खास जगहों का पता लगाया जा सके जहां क्वालिटी खराब हुई है या कोई गड़बड़ी हुई है.
- समस्या वाले सीन की पहचान करना: डेटा का विश्लेषण करके, ऐसे सीन ढूंढें जिनमें सीपीयू या जीपीयू का इस्तेमाल ज़्यादा हो या जहां स्क्रीन लेआउट से उम्मीद के मुताबिक परफ़ॉर्मेंस न मिल रही हो.
- ट्रेस डेटा इकट्ठा करना: ट्रेस टूल का इस्तेमाल करके, समस्या वाले सीन के लिए परफ़ॉर्मेंस का ज़्यादा जानकारी वाला डेटा इकट्ठा करें.
सीपीयू या जीपीयू की परफ़ॉर्मेंस में आने वाली रुकावटों का पता लगाना
अगर गेम अपने टारगेट एफ़पीएस तक नहीं पहुंच पाता है, तो पता लगाएं कि यह सीपीयू पर निर्भर है या जीपीयू पर. सीपीयू और जीपीयू के व्यवहार का विश्लेषण करना, ऑप्टिमाइज़ेशन के अवसरों का पता लगाने के लिए ज़रूरी है. भले ही, गेम खेलने के दौरान डिवाइस गर्म हो जाए या बहुत ज़्यादा बैटरी खर्च हो. यह पता लगाने के लिए कि सिस्टम सीपीयू-बाउंड है या जीपीयू-बाउंड, अलग-अलग तरीकों का इस्तेमाल किया जा सकता है.
ट्रेस डेटा का विश्लेषण करना: ट्रेस डेटा का विश्लेषण करने के लिए, अपने पसंदीदा टूल का इस्तेमाल करें:
- Unreal Insight (Unreal Engine): ट्रेस का विश्लेषण करके,
GameThread,RenderThread, औरRHIThreadके लिए समय देखें.- अगर
GameThreadयाRenderThread, फ़्रेम के लिए तय की गई समयसीमा से ज़्यादा है (उदाहरण के लिए, 30 एफ़पीएस के लिए 33.3 मि॰से॰), तो गेम सीपीयू-बाउंड है. - अगर
RHIThreadको पूरा होने में ज़्यादा समय लगता है या यह फ़्रेम टाइम का ज़्यादातर हिस्सा होता है, तो गेम जीपीयू-बाउंड होता है.
- अगर
दूसरी इमेज. GameThread, RenderThread, और RHIThread के साथ Unreal इनसाइट ट्रेस (बड़ा करने के लिए क्लिक करें). - Unity Profiler (Unity): अगर रेंडर थ्रेड
Gfx.PresentFrameया<GraphicsAPIName>.WaitForLastPresentदिखाता है, जबकि मुख्य थ्रेडGfx.WaitForPresentOnGfxThreadजैसे मार्कर पर ज़्यादा समय लेता है, तो इसका मतलब है कि गेम जीपीयू पर निर्भर है.
तीसरी इमेज. Unity Profiler के लिए जीपीयू बाउंड का उदाहरण (बड़ा करने के लिए क्लिक करें). - Perfetto: सीपीयू कोर असाइनमेंट और थ्रेड एक्ज़ीक्यूशन की जानकारी का विश्लेषण करें. इस विश्लेषण से, थ्रेड के एक्ज़ीक्यूशन की जानकारी की बारीकी से समीक्षा करके, परफ़ॉर्मेंस से जुड़ी समस्याओं का पता लगाने में मदद मिलती है.
सीपीयू ओवरहेड: ट्रेस से पता चलता है कि VSync के साथ-साथ
GameThreadऔरRenderThreadपर वर्कलोड की वजह से, RHI थ्रेड केQueuePresentमें देरी हो रही है. इससे पता चलता है कि सीपीयू पर ज़्यादा लोड है.
चौथी इमेज. सीपीयू के इस्तेमाल की जानकारी के साथ Perfetto ट्रेस (बड़ा करने के लिए क्लिक करें). जीपीयू ओवरहेड: अगर जीपीयू को फ़्रेम रेंडर करने में लगने वाला समय, फ़्रेम टाइम की सीमा से ज़्यादा है, तो गेम को जीपीयू-बाउंड माना जाता है. उदाहरण के लिए, 25 मि॰से॰. ट्रेस से पता चलता है कि जीपीयू को काम पूरा करने में 25 मि॰से॰ से ज़्यादा समय लगा. इसका मतलब है कि जीपीयू पर ज़्यादा लोड है.
पांचवीं इमेज. जीपीयू ओवरहेड की जानकारी के साथ Perfetto ट्रेस (बड़ा करने के लिए क्लिक करें).
- Unreal Insight (Unreal Engine): ट्रेस का विश्लेषण करके,
Unreal Engine की stat कमांड का इस्तेमाल करना:
stat unit: गेम, ड्रॉ, और आरएचआई थ्रेड को दिए गए समय की तुलना करें. अगर गेम और ड्रॉ टाइम कम हैं, लेकिन आरएचआई टाइम लगातार फ़्रेम टाइम की सीमा से ज़्यादा है, तो इसका मतलब है कि गेम जीपीयू पर निर्भर है. उदाहरण के लिए, अगर ज़रूरी एफ़पीएस 30 है (हर फ़्रेम के लिए 33.33 मि॰से॰ के बराबर) और गेम और ड्रॉ, दोनों थ्रेड लगातार 10 से 15 मि॰से॰ की रेंज में बने रहते हैं, लेकिन आरएचआई लगातार 30 मि॰से॰ से ज़्यादा है, तो इससे पता चलता है कि जीपीयू पर ज़्यादा लोड है.
छठी इमेज. स्टेट यूनिट, जीपीयू से जुड़ी स्थितियों का अनुमान लगाने में मदद करती है. stat VulkanRHI: कतार में सबमिट करने और कतार में मौजूद रहने की अवधि देखें.
सातवीं इमेज. Stat VulkanRHI, जीपीयू से जुड़ी स्थितियों का अनुमान लगाने में मदद करता है (बड़ा करने के लिए क्लिक करें). stat slow: गेम, रेंडर, और आरएचआई थ्रेड को दिए गए समय की जांच करें, ताकि रुकावटों का पता लगाया जा सके.
परफ़ॉर्मेंस मेट्रिक देखें: गेम की परफ़ॉर्मेंस के बारे में ज़्यादा जानकारी देने वाले विश्लेषण के नतीजों का इस्तेमाल करें. Android पर:
- सीपीयू पर निर्भर: सीपीयू (सामान्य किया गया) का इस्तेमाल 15% से ज़्यादा हो रहा है. साथ ही, जीपीयू का इस्तेमाल कम हो रहा है और एफ़पीएस भी कम है.
- जीपीयू पर निर्भर: जीपीयू का इस्तेमाल 90% से ज़्यादा हो.
आम तौर पर, अगर सीपीयू का इस्तेमाल 15% से ज़्यादा हो रहा है और एफपीएस और जीपीयू का इस्तेमाल कम हो रहा है, तो इसे सीपीयू पर निर्भर माना जा सकता है.
आठवीं इमेज. सीपीयू और जीपीयू के इस्तेमाल से जुड़ी परफ़ॉर्मेंस मेट्रिक.
सीपीयू की परफ़ॉर्मेंस को ऑप्टिमाइज़ करना
अगर विश्लेषण से पता चलता है कि गेम सीपीयू पर निर्भर है, तो आगे की जांच करके यह पता लगाएं कि कौनसे थ्रेड या एपीआई की वजह से परफ़ॉर्मेंस में गिरावट आ रही है.
ज़्यादा जानकारी के लिए, Android के लिए सीपीयू और जीपीयू को ऑप्टिमाइज़ करने से जुड़ी सलाह लेख पढ़ें.
जीपीयू की परफ़ॉर्मेंस को ऑप्टिमाइज़ करना
अगर विश्लेषण से पता चलता है कि गेम जीपीयू पर निर्भर है, तो फ़्रेम डीबगर का इस्तेमाल करके ज़्यादा जांच करें. इससे रेंडर पाइपलाइन और ड्रॉ कॉल का विश्लेषण किया जा सकता है.
ज़्यादा जानकारी के लिए, Android के लिए सीपीयू और जीपीयू को ऑप्टिमाइज़ करने से जुड़ी सलाह लेख पढ़ें.
ऑप्टिमाइज़ेशन के असर की पुष्टि करना
- A/B टेस्टिंग करें: लागू किए गए ऑप्टिमाइज़ेशन के साथ एक बिल्ड बनाएं.
- परफ़ॉर्मेंस मेज़र करें: ऑप्टिमाइज़ किए गए बिल्ड की परफ़ॉर्मेंस मेज़र करने के लिए, शुरुआती विश्लेषण में इस्तेमाल किए गए टूल और तरीकों का इस्तेमाल करें.
- नतीजों की तुलना करें: नए परफ़ॉर्मेंस डेटा की तुलना शुरुआती डेटा से करें. इससे यह पुष्टि की जा सकेगी कि पहचान की गई समस्याएं हल हो गई हैं और एफपीएस और थर्मल टारगेट पूरे हो गए हैं.
- दोहराएं: विश्लेषण और ऑप्टिमाइज़ेशन के चरणों को तब तक दोहराएं, जब तक कि परफ़ॉर्मेंस बेहतर न हो जाए.