Android Performance Tuner की खास जानकारी (नेटिव)

इस विषय में, Android Performance Tuner को इंटिग्रेट करने का तरीका बताया गया है. इसे नेटिव (C) से फ़्रेम टाइम डेटा रिकॉर्ड और अपलोड करने के लिए, Fork लाइब्रेरी को ट्यून किया जा रहा है और C++) गेम इंजन शामिल करें.

Unity गेम इंजन के लिए, यह देखें Unity के लिए गाइड.

बैकग्राउंड

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

  • फ़्रेम रेट: फ़्रेम रेट कितनी बार बनाया जाता है.
  • ग्राफ़िकल क्वालिटी सेटिंग: फ़िडेलिटी का लेवल, जिस पर फ़्रेम दिखाया जाता है, जिसमें सिम्युलेशन फ़िडेलिटी और ग्राफ़िक्स शामिल हैं.

गेम के लिए, अच्छी रेंडरिंग परफ़ॉर्मेंस का मतलब है:

  • स्थिर और एक जैसा फ़्रेम रेट डिलीवर करना (यानी कि जो अपनी पसंद की फ़्रीक्वेंसी पर रेंडर हो रहे हैं).
  • फ़्रेम को सबसे ज़्यादा फ़्रीक्वेंसी पर रेंडर करना स्थिरता, आम तौर पर गेम के टाइप के हिसाब से 30 या 60 FPS.
  • किसी उपयोगकर्ता की स्क्रीन के साइज़ के हिसाब से ज़्यादा से ज़्यादा जानकारी और सघनता के साथ-साथ, उम्मीद के मुताबिक, स्थिर फ़्रेम रेट हासिल करते रहें.

Android फ़्रेम पेसिंग लाइब्रेरी, जिसमें फ्रेम टाइम में भिन्नता दिखाई गई है, जिससे गेम के लिए एक स्थिर फ़्रेम रेट मिलता है. शेष फ़्रेम टाइम में फ़र्क़, कुछ फ़्रेम के दौरान दिखाए गए ब्यौरे के लेवल की वजह से होता है गेमप्ले के सीन और डिवाइस की ग्राफ़िक क्षमताओं को शामिल करता है. इसका इस्तेमाल किया जा रहा है Android Performance Tuner, गेमप्ले के दौरान फ़्रेम टाइम की तारीख और समय का पता लगा सकता है. आपके टारगेट से धीमा या तेज़ है. साथ ही, इन समस्याओं को इससे आगे बढ़ने का मौका मिलता है:

  • अलग-अलग क्वालिटी की सेटिंग
  • आपके गेम के खास सीन
  • खास डिवाइस मॉडल या डिवाइस की जानकारी

डेटा रिकॉर्ड और अपलोड करें

ट्यूनिंग फ़ोर्क लाइब्रेरी टिक फ़ंक्शन Android फ़्रेम पेसिंग लाइब्रेरी से हर फ़्रेम को कॉल किया जा रहा है. लाइब्रेरी में, इस टिक जानकारी को हिस्टोग्राम में इकट्ठा किया जाता है, जो समय-समय पर को एचटीटीपी एंडपॉइंट से Google Play पर अपलोड किया जाता है. हर टिक को इस तरह रिकॉर्ड किया जाता है किसी इंस्ट्रुमेंट कुंजी और एनोटेशन, वह परिभाषाएं जिनके लिए आप प्रोटोकॉल में बताते हैं बफ़र फ़ाइल में सेव किया गया है.

इंस्ट्रुमेंट की कुंजियां

इंस्ट्रुमेंट की से पता चलता है कि टिक फ़्रेम में कहां से आता है और वह पूर्णांक, जिसे हर टिक फ़ंक्शन कॉल को पास किया जाना चाहिए. Android फ़्रेम पेसिंग लाइब्रेरी, swappy_common.h में बताए गए इंस्ट्रुमेंट की कुंजियों के पहले से तय किए गए सेट का इस्तेमाल करती है. फ़्रेम पेसिंग का इस्तेमाल न किए जाने पर, अपनी इंस्ट्रुमेंट की बटन भी तय की जा सकती है लाइब्रेरी.

एनोटेशन

एनोटेशन आपको इस बारे में जानकारी देते हैं कि गेम टिक को रिकॉर्ड किया जाता है. उदाहरण के लिए, एनोटेशन इनमें से किसी एक फ़ॉलो किया जा रहा है:

  • गेम का मौजूदा लेवल
  • "बिग बॉस" स्क्रीन पर है
  • गेम की स्थिति के बारे में अन्य काम की जानकारी

एनोटेशन com.google.tuningfork.Annotation प्रोटोकॉल से तय किए जाते हैं बफ़र मैसेज. मौजूदा एनोटेशन को सेट करने के लिए, आपने मैसेज जिसे आपने तय किया है TuningFork_setCurrentAnnotation(). इसके बाद, बाद के सभी टिक डेटा को इस एनोटेशन से तब तक जोड़ा जाता है, जब तक कि एनोटेशन सेट हो गया है. एनोटेशन की प्रोटो परिभाषा के बारे में यहां एक उदाहरण दिया गया है:

import "tuningfork.proto"
enum Level {
  INVALID_LEVEL = 0;
  Level_1 = 1;
  Level_2 = 2;
  Level_3 = 3;
}
message Annotation {
  optional Level level = 1;
}

फ़िडेलिटी पैरामीटर

फ़िडेलिटी पैरामीटर आपके डिवाइस की परफ़ॉर्मेंस और ग्राफ़िक की क्वालिटी पर असर डालते हैं गेम, जैसे कि मेश लेवल ऑफ़ डिटेल, टेक्सचर रिज़ॉल्यूशन, और एंटी-एलियासिंग तरीका. एनोटेशन की तरह, फ़िडेलिटी पैरामीटर को com.google.tuningfork.FidelityParams प्रोटोकॉल बफ़र का मैसेज. नीचे दी गई चीज़ें हैं फ़िडेलिटी पैरामीटर की प्रोटो परिभाषा का उदाहरण:

import "tuningfork.proto"
message FidelityParams {
  int32 texture_quality_level = 1;
  int32 shadow_resolution = 2;
  float terrain_details_percent = 3;
  int32 post_processing_effects_level = 4;
}

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

इससे Google Play, एनोटेशन और फ़िडेलिटी के पैरामीटर को समझ पाएगा जिसे आप परिभाषित करते हैं, इन परिभाषाओं को होल्ड करने वाली प्रोटोकॉल बफ़र फ़ाइल ऐप्लिकेशन के APK में बंडल किए गए हों. साथ ही, इन्हें शुरू करने की सेटिंग भी शामिल हों. आपको यह भी में फ़िडेलिटी पैरामीटर के सामान्य कॉम्बिनेशन के लिए डिफ़ॉल्ट वैल्यू देना ज़रूरी है ताकि आपका डेटा Google Play यूज़र इंटरफ़ेस (यूआई) में उनके हिसाब से सेगमेंट किया जा सके. ज़्यादा जानकारी के लिए, यह देखें क्वालिटी के लेवल तय करें.

मेमोरी और सीपीयू ओवरहेड

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

सबमिट करने की प्रोसेस एक अलग थ्रेड पर होती है. इससे टिक कॉल ब्लॉक नहीं होते. अगर नहीं अपलोड कनेक्शन उपलब्ध है, इसे बाद में अपलोड किया जा सकता है.

टिक फ़ंक्शन को कॉल करने के लिए, थोड़ी प्रोसेसिंग ओवरहेड होती है: इसे बस हिस्टोग्राम बकेट की श्रेणी में इंडेक्स की गणना करता है और पूर्णांक की संख्या.

ट्यूनिंग फ़ोर्क लाइब्रेरी को जोड़ना

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