परफ़ॉर्मेंस की प्रोफ़ाइलिंग और ट्यूनिंग एक मुश्किल काम है. यह विज्ञान से ज़्यादा कला जैसा लगता है. किसी गेम में कई ऐसे कॉम्पोनेंट होते हैं जिन्हें एक साथ काम करना होता है. साथ ही, किसी सीन में मौजूद जटिलता की वजह से, समस्याओं को समझना और उन्हें अलग करना मुश्किल हो सकता है. ChromeOS पर, कई टूल को एआरएम चिपसेट को ध्यान में रखकर डिज़ाइन किया गया है. इस प्रोसेस को तेज़ करने के लिए, यहां कुछ सुझाव दिए गए हैं.
ChromeOS पर अपने गेम की परफ़ॉर्मेंस को ऑप्टिमाइज़ करते समय, इस बात का ध्यान रखें कि परफ़ॉर्मेंस से जुड़ी समस्याएं सभी डिवाइसों पर दिखती हैं. साथ ही, परफ़ॉर्मेंस में सुधार करने से, सभी उपयोगकर्ताओं को परफ़ॉर्मेंस और बैटरी लाइफ़ के मामले में फ़ायदा मिलेगा. ChromeOS में बड़े डिसप्ले और डेस्कटॉप इनपुट डिवाइसों का इस्तेमाल किया जाता है. इसलिए, इसमें कुछ समस्याएं ज़्यादा आसानी से दिख सकती हैं. उदाहरण के लिए, टेक्सचर लोड करने वाला कोई एल्गोरिदम, ज़्यादा बेहतर मोबाइल डिवाइसों पर “ठीक से काम” कर सकता है. हालांकि, 4K डिसप्ले वाले Chromebook पर वह ठीक से काम नहीं कर पाएगा. एल्गोरिदम को बेहतर बनाने से, सभी डिवाइसों पर गेम को बेहतर बनाया जा सकेगा.
अगर आपने पहले कभी प्रोफ़ाइलिंग नहीं की है, तो सामान्य तौर पर यह तरीका अपनाएं:
- यह पता लगाएं कि परफ़ॉर्मेंस इन वजहों से सीमित है या नहीं:
- सीपीयू
- GPU
- अन्य: इनपुट/डिस्क/नेटवर्क
- समस्या की मुख्य वजह का पता लगाना
- ऑप्टिमाइज़ करने की कोशिश करें
- दोहराएं
ज़्यादातर मामलों में, गेम “सीपीयू-बाउंड” या “जीपीयू-बाउंड” के तौर पर दिखेंगे. यहां दी गई प्रोफ़ाइलिंग से जुड़ी सलाह और टूल का इस्तेमाल करके, यह पता लगाने की कोशिश करें कि सिस्टम हर फ़्रेम पर “कितना समय खर्च कर रहा है”. उदाहरण के लिए, अगर जीपीयू रेंडरिंग शुरू करने से पहले वर्टेक्स की गिनती और उन्हें लोड करने में ज़्यादा समय लग रहा है, तो हो सकता है कि आपका गेम सीपीयू-बाउंड हो. इसके बजाय, अगर आपने जीपीयू पर आधारित कई फ़िल्टर इस्तेमाल किए हैं, तो हो सकता है कि आपका गेम जीपीयू पर निर्भर हो. ध्यान रखें कि कई मोबाइल फ़ोन और ChromeOS डिवाइसों में अलग से ग्राफ़िक्स कार्ड नहीं होते हैं. डेस्कटॉप गेम में, जीपीयू फ़िल्टर को तेज़ी से काम करने वाला माना जाता है. हालांकि, इंटिग्रेटेड जीपीयू को हर सीन को रेंडर करने में ज़्यादा समय लग सकता है.
प्रोफ़ाइलिंग करने के तरीके के बारे में ज़्यादा जानकारी के लिए, ‘ऑप्टिमाइज़ेशन की प्रोसेस’ के बारे में ARM की गाइड देखें.
टूल
हालांकि, खुद से भी परफ़ॉर्मेंस से जुड़ी समस्याओं का पता लगाया जा सकता है, लेकिन सही टूल की मदद से, गेम की परफ़ॉर्मेंस का विश्लेषण करना आसान हो जाता है. साथ ही, आपको यह भरोसा मिलता है कि आप सही चीज़ों पर ध्यान दे रहे हैं. ऐसे कई टूल उपलब्ध हैं. हालांकि, यहां हमारे कुछ पसंदीदा प्रोग्राम दिए गए हैं.
Android Studio Profiler
किसी भी Android ऐप्लिकेशन की प्रोफ़ाइलिंग शुरू करने का सबसे आसान तरीका, इंटिग्रेट किया गया Android Studio profiler इस्तेमाल करना है. Android Studio में, “चलाएं” पर क्लिक करने के बजाय, अपने ऐप्लिकेशन को चलाने के लिए “प्रोफ़ाइल” को चुनें. इससे आपको सीपीयू, मेमोरी, और नेटवर्क के इस्तेमाल के बारे में रीयल-टाइम में जानकारी मिलेगी. सीपीयू के सामान्य ट्रेस की मदद से, कोड के उन हिस्सों को तुरंत अलग किया जा सकता है जिन पर आपको ध्यान देना है.
यह टूल, जीपीयू के इस्तेमाल के बारे में सही जानकारी नहीं देता. साथ ही, यह भी नहीं बताता कि हर फ़्रेम सिंक के बीच क्या हो रहा है. इसलिए, टूलबॉक्स में यह टूल होना अच्छा है. हालांकि, इससे आपके गेम को बेहतर परफ़ॉर्मेंस के साथ चलाने में मदद नहीं मिलेगी.
Snapdragon Profiler
आपके गेम का व्यवहार सभी डिवाइसों पर एक जैसा होगा. इसलिए, परफ़ॉर्मेंस के बारे में ज़्यादा जानकारी पाने का एक अच्छा तरीका यह है कि Qualcomm पर आधारित ARM फ़ोन पर Snapdragon Profiler का इस्तेमाल किया जाए. हालांकि, यह ChromeOS डिवाइस पर सीधे तौर पर प्रोफ़ाइलिंग नहीं करता है, लेकिन इससे आपको यह जानकारी मिल सकती है कि आपका गेम हर फ़्रेम में ज़्यादा समय कहां बिता रहा है. साथ ही, इससे आपको यह जानकारी भी मिल सकती है कि खास तौर पर कौनसे जीपीयू कॉल इस्तेमाल किए जा रहे हैं.
उदाहरण के लिए, अगर आपको दिखता है कि आपके ऐनिसोट्रॉपिक जीपीयू फ़िल्टर में ज़्यादा समय लग रहा है और यह हर फ़्रेम में किए जा रहे काम पर हावी है, तो इस सेटिंग को बदलकर परफ़ॉर्मेंस में काफ़ी सुधार किया जा सकता है.
अगर आपको लगता है कि जीपीयू के काम में कम समय लगता है और यह नियमित रूप से काम करता है, लेकिन सीपीयू के काम में ज़्यादा समय लगता है और इस वजह से फ़्रेम सिंक नहीं हो पा रहे हैं, तो टेक्सचर लोड करने/फ़्रेम तैयार करने वाले एल्गोरिदम पर एक नज़र डालें.
ज़्यादा जानकारी के लिए, इस्तेमाल से जुड़ा आधिकारिक दस्तावेज़ देखें.
ARM Mobile Studio
ARM Mobile Studio, ARM डिवाइस के परफ़ॉर्मेंस की जानकारी देने वाला एक और काम का टूल है. कुछ डेवलपर इसे Snapdragon Profiler के मुकाबले ज़्यादा पसंद कर सकते हैं. हालांकि, इसका इस्तेमाल भी उसी तरह किया जा सकता है. इस्तेमाल से जुड़ा आधिकारिक दस्तावेज़ देखें.
Android GPU Inspector
Android GPU Inspector, Google का बनाया हुआ एक नया टूल है. इसे खास तौर पर, OpenGL और Vulkan, दोनों के साथ आपके गेम की परफ़ॉर्मेंस को बेहतर बनाने के लिए डिज़ाइन किया गया है. फ़िलहाल, यह सुविधा डेवलपर के लिए झलक के तौर पर उपलब्ध है. इसे सेट अप करने में कुछ समय लग सकता है. साथ ही, फ़िलहाल यह सिर्फ़ कुछ डिवाइसों पर काम करती है. यह आने वाले समय में, ग्राफ़िक्स की प्रोफ़ाइलिंग के लिए इस्तेमाल किए जाने वाले मुख्य टूल में से एक होगा. आधिकारिक दस्तावेज़ देखें.
एआरसी की खास जानकारी को ट्रेस करना
इसके अलावा, एक और सामान्य टूल भी है - एआरसी की खास जानकारी को ट्रेस करना. यह ऊपर दिए गए एआरसी ग्राफ़िक्स ट्रेसिंग टूल की तरह ही काम करता है. यह ट्रेसर, किसी ऐप्लिकेशन और ChromeOS की परफ़ॉर्मेंस के बारे में अहम मेट्रिक उपलब्ध कराएगा. रीड आउट में, आपको ऐप्लिकेशन और Chrome के एफ़पीएस के साथ-साथ सीपीयू और जीपीयू के इस्तेमाल, बैटरी की खपत वगैरह के बारे में जानकारी मिलेगी. इस टूल को कई बार चलाया जा सकता है. साथ ही, हर बार के नतीजों को एक ही ग्राफ़ में अलग-अलग रंगों से दिखाया जाता है, ताकि उन्हें अलग-अलग पहचाना जा सके. हर ट्रेसिंग मॉडल को आपके डाउनलोड फ़ोल्डर में सेव किया जाएगा. साथ ही, आने वाले समय में तुलना करने के लिए, इन्हें फिर से इंपोर्ट किया जा सकता है. ऐप्लिकेशन की परफ़ॉर्मेंस की सामान्य जांच के लिए, एआरसी की खास जानकारी देने वाली ट्रेसिंग से शुरुआत करना बेहतर होता है.
इस टूल को ऐक्सेस करने के लिए, ChromeOS पर ब्राउज़र में chrome://arc-overview-tracing पर जाएं.
अगले चरण
इसलिए, हो सकता है कि आपको कुछ समस्याएं मिली हों, लेकिन आपको यह न पता हो कि उन्हें कैसे ठीक किया जाए. या आपने इन समस्याओं का पता लगा लिया है और उन्हें ठीक कर दिया है, लेकिन आपको नहीं पता कि आगे क्या करना है. यहां हमने आपके लिए, Android और इंजन से जुड़ी सामान्य सलाह और संसाधनों की एक सूची तैयार की है.
सामान्य सलाह
Android Developers पोर्टल पर, आपके ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाने के लिए कुछ बेहतरीन सुझाव दिए गए हैं. वहां आपको लोड होने में लगने वाले समय, मल्टीथ्रेडिंग का इस्तेमाल करने के तरीके, इनपुट लैग को मैनेज करने के तरीके वगैरह के बारे में जानकारी मिल सकती है.
प्रोफ़ाइलिंग को जल्दी और बार-बार करें. खास तौर पर, अगर आपको कम परफ़ॉर्मेंस वाली मशीनों को टारगेट करना है या हाई-एंड आर्किटेक्चर की सीमाओं को बढ़ाना है. अपने ऐप्लिकेशन की परफ़ॉर्मेंस के आंकड़ों पर नज़र रखने से, आपको यह पता लगाने में मदद मिलेगी कि किन बदलावों की वजह से फ़्रेम रेट में गिरावट आई है. साथ ही, यह भी पता चलेगा कि किन बदलावों से आपको बेहतर अनुभव बनाए रखने में मदद मिल रही है.
Unity इंजन
Unity, सामान्य Android दस्तावेज़ के अलावा, ChromeOS के लिए खास दस्तावेज़ भी उपलब्ध कराता है. इससे आपको उनके इंजन का इस्तेमाल करके, बेहतर परफ़ॉर्म करने वाला ChromeOS ऐप्लिकेशन बनाने में मदद मिलती है. शुरू करना, इनपुट, डीबग करना, और बनाना के बारे में उनके ChromeOS दस्तावेज़ देखें. इनमें x86 बिल्ड बनाने का तरीका भी शामिल है. परफ़ॉर्मेंस से जुड़े कॉन्टेंट के लिए, ऑप्टिमाइज़ेशन को समझना और परफ़ॉर्मेंस और ऑप्टिमाइज़ेशन से जुड़ा उनका कोर्स देखें.
Unity गेम की प्रोफ़ाइलिंग और उन्हें ऑप्टिमाइज़ करने के बारे में ARM की गाइड पढ़ें. साथ ही, इससे जुड़े सबसे सही तरीके जानें. इससे आपको Streamline टूल की मदद से, Unity में किसी उदाहरण गेम की प्रोफ़ाइल बनाने की प्रोसेस के बारे में जानकारी मिलेगी. Streamline टूल, ARM Mobile Studio का एक हिस्सा है.
Unreal Engine
Unreal ने परफ़ॉर्मेंस के दिशा-निर्देश और सलाह और तरकीबें वाले दस्तावेज़ लिखे हैं. इनसे आपको इंजन के कई विकल्पों और सेटिंग का बेहतर तरीके से इस्तेमाल करने का तरीका पता चलता है. यहां आपको कई तरह के सुझाव मिलेंगे. जैसे, ज़्यादा जानकारी वाले लेवल की ट्रिक्स, लाइटिंग का ज़्यादा से ज़्यादा फ़ायदा पाने का तरीका, मटीरियल क्वालिटी सेटिंग और शेडर के बारे में चरण-दर-चरण गाइड वगैरह.
ग्राफ़िक से जुड़े ऑप्टिमाइज़ेशन के बारे में ज़्यादा जानने के लिए, ARM ने मोबाइल गेम को ऑप्टिमाइज़ करने के लिए एक गाइड लिखी है. यहां आपको ऑप्टिमाइज़ेशन के सामान्य सुझावों के साथ-साथ, Unreal के लिए खास तौर पर ग्राफ़िक से जुड़ी बातों का ध्यान रखने के बारे में जानकारी मिलेगी.