অ্যান্ড্রয়েড পারফরম্যান্স টিউনারের ওভারভিউ (নেটিভ)

এই বিষয়টি বর্ণনা করে কিভাবে Android পারফরম্যান্স টিউনারকে সংহত করতে হয়, যা টিউনিং ফর্ক লাইব্রেরি নামেও পরিচিত, নেটিভ (C এবং C++) গেম ইঞ্জিন থেকে ফ্রেম টাইম ডেটা রেকর্ড এবং আপলোড করতে।

ইউনিটি গেম ইঞ্জিনের জন্য, ইউনিটির গাইড দেখুন।

পটভূমি

গেমের অভিজ্ঞতার একটি মূল উপাদান হল পারফরম্যান্স রেন্ডারিং । রেন্ডারিং কর্মক্ষমতা নিম্নলিখিত দুটি ইনপুটের একটি ফলাফল:

  • ফ্রেমের হার: কত ঘন ঘন একটি ফ্রেম আঁকা হয়।
  • গ্রাফিকাল গুণমান সেটিংস: বিশ্বস্ততার স্তর যেখানে একটি ফ্রেম উপস্থাপন করা হয়, সিমুলেশন ফিডেলিটি এবং গ্রাফিক্স সহ।

গেমগুলির জন্য, ভাল রেন্ডারিং পারফরম্যান্স নিম্নলিখিত হিসাবে সংজ্ঞায়িত করা হয়:

  • একটি স্থিতিশীল, সামঞ্জস্যপূর্ণ ফ্রেম রেট প্রদান করা (অর্থাৎ, পছন্দসই ফ্রিকোয়েন্সিতে রেন্ডারিং ফ্রেমের শতাংশ)।
  • স্থিতিশীলতা বজায় রাখার সময় সম্ভাব্য সর্বোচ্চ ফ্রিকোয়েন্সিতে ফ্রেম রেন্ডারিং, সাধারণত 30 বা 60 FPS গেমের ধরনের উপর নির্ভর করে।
  • একটি পছন্দসই, স্থিতিশীল ফ্রেম রেট অর্জন করার সময়ও ব্যবহারকারীর স্ক্রীনের আকার এবং ঘনত্বের ভিত্তিতে বিশদ স্তর সর্বাধিক করা।

অ্যান্ড্রয়েড ফ্রেম পেসিং লাইব্রেরি ফ্রেমের সময়ের অনেক বৈচিত্র্যকে সীমিত করে, গেমগুলির জন্য একটি স্থিতিশীল ফ্রেম রেট প্রদান করে। ফ্রেমের সময়ের মধ্যে অবশিষ্ট বৈচিত্রটি গেমপ্লেতে নির্দিষ্ট দৃশ্যের সময় এবং ডিভাইসের গ্রাফিকাল ক্ষমতার সময় প্রদর্শিত বিশদ স্তরের কারণে। অ্যান্ড্রয়েড পারফরম্যান্স টিউনার ব্যবহার করে, আপনি গেমপ্লে চলাকালীন সময় নির্ধারণ করতে পারেন যখন ফ্রেম সময় আপনার লক্ষ্যের চেয়ে ধীর বা দ্রুত হয় এবং এই সমস্যাগুলি এবং সুযোগগুলির সাথে সম্পর্কযুক্ত:

  • নির্দিষ্ট মানের সেটিংস
  • আপনার খেলায় নির্দিষ্ট দৃশ্য
  • নির্দিষ্ট ডিভাইসের মডেল বা ডিভাইসের চশমা

রেকর্ড করুন এবং ডেটা আপলোড করুন

টিউনিং ফর্ক লাইব্রেরি অ্যান্ড্রয়েড ফ্রেম পেসিং লাইব্রেরি দ্বারা প্রতিটি ফ্রেম নামে পরিচিত একটি টিক ফাংশনের উপর নির্ভর করে। লাইব্রেরির মধ্যে, এই টিক তথ্য হিস্টোগ্রামে একত্রিত করা হয় যা পর্যায়ক্রমে একটি HTTP এন্ডপয়েন্টের মাধ্যমে Google Play-এ আপলোড করা হয়। প্রতিটি টিক একটি ইন্সট্রুমেন্ট কী এবং একটি টীকা , যে সংজ্ঞাগুলির জন্য আপনি একটি প্রোটোকল বাফার ফাইলে উল্লেখ করেন তার সাথে যুক্ত হিসাবে রেকর্ড করা হয়।

যন্ত্র কী

একটি ইন্সট্রুমেন্ট কী নির্দেশ করে যে ফ্রেমে টিকটি কোথা থেকে এসেছে এবং এটি একটি পূর্ণসংখ্যা যা প্রতিটি টিক ফাংশন কলে পাস করতে হবে। অ্যান্ড্রয়েড ফ্রেম পেসিং লাইব্রেরি 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 UI-তে আপনার ডেটা সেগমেন্ট করার জন্য আপনাকে আপনার APK-এ সাধারণ বিশ্বস্ততা প্যারামিটার সমন্বয়ের জন্য ডিফল্ট মান প্রদান করতে হবে। আরও তথ্যের জন্য, গুণমানের স্তর নির্ধারণ করুন দেখুন।

মেমরি এবং সিপিইউ ওভারহেড

গেমপ্লে চলাকালীন বিস্ময় এড়াতে টিউনিং ফর্ক লাইব্রেরি দ্বারা ব্যবহৃত সমস্ত মেমরি প্রাথমিককরণে বরাদ্দ করা হয়। ডেটার আকার প্রতিটি হিস্টোগ্রামে উপকরণ কী, সম্ভাব্য টীকাগুলির সংখ্যা এবং বালতির সংখ্যার উপর নির্ভর করে; এটি প্রতিটি বালতির জন্য চার বাইট এই সব সময়ের একটি গুণিতক। ডাবল-বাফার করা পদ্ধতিতে জমা দেওয়ার জন্য সমস্ত হিস্টোগ্রামের দুটি কপিও রয়েছে।

জমা একটি পৃথক থ্রেডে ঘটে এবং টিক কল ব্লক করে না। কোনো আপলোড সংযোগ উপলব্ধ না হলে, জমা পরে আপলোডের জন্য সারিবদ্ধ করা হয়।

একটি টিক ফাংশন কল করার জন্য খুব সামান্য প্রসেসিং ওভারহেড আছে: এটি কেবল হিস্টোগ্রাম বাকেটের অ্যারেতে একটি সূচক গণনা করে এবং একটি পূর্ণসংখ্যা গণনা বৃদ্ধি করে।

টিউনিং ফর্ক লাইব্রেরি সংহত করুন

এই ইন্টিগ্রেশন গাইড দুটি ভাগে বিভক্ত। প্রথম অংশে বর্ণনা করা হয়েছে কিভাবে একটি ডেমো অ্যাপ এবং Google Play Console ব্যবহার করে এন্ড-টু-এন্ড পরীক্ষা চালানো যায়। দ্বিতীয় অংশটি বর্ণনা করে কিভাবে টিউনিং ফর্ক লাইব্রেরীকে আপনার টুলচেইনে একীভূত করতে হয় এবং লাইব্রেরি যে ফাংশনগুলি প্রদান করে তা কীভাবে ব্যবহার করতে হয়। শুরু করতে নিচের পরবর্তী লিঙ্কে ক্লিক করুন।