ইউনিটি 2017.4 বা তার পরে থেকে ফ্রেম টাইম ডেটা রেকর্ড এবং আপলোড করতে কীভাবে ইউনিটি প্লাগইন ব্যবহার করবেন তা এই নির্দেশিকা বর্ণনা করে।
C বা C++ ব্যবহার করে গেম ইঞ্জিনের জন্য, নেটিভ গেম ইঞ্জিনের জন্য গাইড দেখুন।
পটভূমি
গেমের অভিজ্ঞতার একটি মূল উপাদান হল পারফরম্যান্স রেন্ডারিং । রেন্ডারিং কর্মক্ষমতা নিম্নলিখিত দুটি ইনপুটের একটি ফলাফল:
- ফ্রেমের হার: কত ঘন ঘন একটি ফ্রেম আঁকা হয়।
- গ্রাফিকাল গুণমান সেটিংস: বিশ্বস্ততার স্তর যেখানে একটি ফ্রেম উপস্থাপন করা হয়, সিমুলেশন ফিডেলিটি এবং গ্রাফিক্স সহ।
গেমগুলির জন্য, ভাল রেন্ডারিং পারফরম্যান্স নিম্নলিখিত হিসাবে সংজ্ঞায়িত করা হয়:
- একটি স্থিতিশীল, সামঞ্জস্যপূর্ণ ফ্রেম রেট প্রদান করা (অর্থাৎ, পছন্দসই ফ্রিকোয়েন্সিতে রেন্ডারিং ফ্রেমের শতাংশ)।
- স্থিতিশীলতা বজায় রাখার সময় সম্ভাব্য সর্বোচ্চ ফ্রিকোয়েন্সিতে ফ্রেম রেন্ডারিং, সাধারণত 30 বা 60 FPS গেমের ধরনের উপর নির্ভর করে।
- একটি পছন্দসই, স্থিতিশীল ফ্রেম রেট অর্জন করার সময়ও ব্যবহারকারীর স্ক্রীনের আকার এবং ঘনত্বের ভিত্তিতে বিশদ স্তর সর্বাধিক করা।
অ্যান্ড্রয়েড ফ্রেম পেসিং লাইব্রেরি ফ্রেমের সময়ের অনেক বৈচিত্র্যকে সীমিত করে, গেমগুলির জন্য একটি স্থিতিশীল ফ্রেম রেট প্রদান করে। ফ্রেমের সময়ের মধ্যে অবশিষ্ট বৈচিত্রটি গেমপ্লেতে নির্দিষ্ট দৃশ্যের সময় এবং ডিভাইসের গ্রাফিকাল ক্ষমতার সময় প্রদর্শিত বিশদ স্তরের কারণে। অ্যান্ড্রয়েড পারফরম্যান্স টিউনার ব্যবহার করে, আপনি গেমপ্লে চলাকালীন সময় নির্ধারণ করতে পারেন যখন ফ্রেম সময় আপনার লক্ষ্যের চেয়ে ধীর বা দ্রুত হয় এবং এই সমস্যাগুলি এবং সুযোগগুলির সাথে সম্পর্কযুক্ত:
- নির্দিষ্ট মানের সেটিংস
- আপনার খেলায় নির্দিষ্ট দৃশ্য
- নির্দিষ্ট ডিভাইসের মডেল বা ডিভাইসের চশমা
রেকর্ড করুন এবং ডেটা আপলোড করুন
টিউনিং ফর্ক লাইব্রেরি তার টিক ফাংশনগুলির একটির উপর নির্ভর করে যাকে অ্যান্ড্রয়েড ফ্রেম পেসিং লাইব্রেরি দ্বারা প্রতিটি ফ্রেম বলা হয় (অথবা ইউনিটি ইঞ্জিন দ্বারা ইউনিটির পুরানো সংস্করণগুলির জন্য যেখানে ফ্রেম পেসিং লাইব্রেরি উপস্থিত নেই)। লাইব্রেরির মধ্যে, এই টিক তথ্য হিস্টোগ্রামে একত্রিত করা হয় যা পর্যায়ক্রমে একটি HTTP এন্ডপয়েন্টের মাধ্যমে Google Play-এ আপলোড করা হয়। প্রতিটি টিক একটি ইন্সট্রুমেন্ট কী এবং একটি টীকা যুক্ত হিসাবে রেকর্ড করা হয়। আপনি ইউনিটি প্লাগইন ব্যবহার করে টীকা সংজ্ঞায়িত করুন।
যন্ত্র কী
একটি ইন্সট্রুমেন্ট কী নির্দেশ করে যে ফ্রেমে টিকটি কোথা থেকে এসেছে এবং এটি একটি পূর্ণসংখ্যা যা প্রতিটি টিক ফাংশন কলে পাস করতে হবে। এটি ইউনিটি প্লাগইন দ্বারা স্বয়ংক্রিয়ভাবে সম্পন্ন হয়। যদি অপ্টিমাইজ করা ফ্রেম পেসিং বিকল্পটি আপনার গেমের ইউনিটি সেটিংসে সক্ষম করা থাকে (ইউনিটি সংস্করণ 2019.3.14 বা তার পরে উপলব্ধ), Android পারফরম্যান্স টিউনার বর্ধিত মেট্রিক্স রিপোর্ট করতে Android ফ্রেম পেসিং লাইব্রেরি থেকে তথ্য ব্যবহার করবে।
টীকা
একটি টিক রেকর্ড করা হলে আপনার গেমটি কী করছে সে সম্পর্কে টীকাগুলি প্রাসঙ্গিক তথ্য দেয়। উদাহরণস্বরূপ, একটি টীকা নিম্নলিখিত যেকোনটি সনাক্ত করতে পারে:
- বর্তমান খেলার স্তর
- একটি নির্দিষ্ট দৃশ্য লোড হচ্ছে
- পর্দায় একজন ‘বিগ বস’
- অন্য কোন প্রাসঙ্গিক খেলা রাষ্ট্র তথ্য
ইউনিটি প্লাগইন দ্বারা প্রদত্ত একটি ডায়ালগে টীকাগুলি সংজ্ঞায়িত করা হয়৷
অভ্যন্তরীণভাবে, টিউনিং ফর্ক লাইব্রেরি টীকা এবং বিশ্বস্ততা পরামিতি সঞ্চয় করতে Google এর প্রোটোকল বাফার বিন্যাস ব্যবহার করে। এটি এক্সটেনসিবল, স্ট্রাকচার্ড ডেটার জন্য একটি সু-সংজ্ঞায়িত, বহু-ভাষা প্রোটোকল। আরও তথ্যের জন্য, প্রোটোকল বাফার ডকুমেন্টেশন দেখুন।
বিশ্বস্ততার পরামিতি
বিশ্বস্ততার পরামিতিগুলি আপনার গেমের কর্মক্ষমতা এবং গ্রাফিকাল বিশ্বস্ততাকে প্রভাবিত করে, যেমন মেশ লেভেল-অফ-ডিটেইল, টেক্সচার রেজোলিউশন এবং অ্যান্টি-আলিয়াসিং পদ্ধতি। টীকাগুলির মতো, বিশ্বস্ততার পরামিতিগুলি ইউনিটি প্লাগইন দ্বারা প্রদত্ত একটি ডায়ালগে সংজ্ঞায়িত করা হয়।
মেমরি এবং সিপিইউ ওভারহেড
গেমপ্লে চলাকালীন বিস্ময় এড়াতে টিউনিং ফর্ক লাইব্রেরি দ্বারা ব্যবহৃত সমস্ত মেমরি প্রাথমিককরণে বরাদ্দ করা হয়। ডেটার আকার প্রতিটি হিস্টোগ্রামে উপকরণ কী, সম্ভাব্য টীকাগুলির সংখ্যা এবং বালতির সংখ্যার উপর নির্ভর করে; এটি প্রতিটি বালতির জন্য চার বাইট এই সব সময়ের একটি গুণিতক। ডাবল-বাফার করা পদ্ধতিতে জমা দেওয়ার জন্য সমস্ত হিস্টোগ্রামের দুটি কপিও রয়েছে।
জমা একটি পৃথক থ্রেডে ঘটে এবং টিক কল ব্লক করে না। কোনো আপলোড সংযোগ উপলব্ধ না হলে, জমা পরে আপলোডের জন্য সারিবদ্ধ করা হয়।
একটি টিক ফাংশন কল করার জন্য খুব সামান্য প্রসেসিং ওভারহেড আছে: এটি কেবল হিস্টোগ্রাম বাকেটের অ্যারেতে একটি সূচক গণনা করে এবং একটি পূর্ণসংখ্যা গণনা বৃদ্ধি করে।
ওয়েব অনুরোধ
লাইব্রেরি সার্ভারের শেষ পয়েন্টে দুটি ধরণের অনুরোধ করে:
- শুরু করার সময় একটি
generateTuningParameters
অনুরোধ - পর্যায়ক্রমে গেমপ্লে চলাকালীন, সার্ভারে ডেটা পাঠানোর জন্য একটি
uploadTelemetry
অনুরোধ
অফলাইন খেলোয়াড়
আরম্ভ করার সময় কোন উপলব্ধ সংযোগ না থাকলে, অনুরোধটি ক্রমবর্ধমান ব্যাক-অফ সময়ের সাথে কয়েকবার পুনরায় চেষ্টা করা হয়। আপলোডের সময় কোন সংযোগ না থাকলে, আপলোডটি ক্যাশে করা হয়। আপলোডগুলি অস্থায়ী সঞ্চয়স্থানে ফাইল হিসাবে সংরক্ষণ করা হয়।
প্রয়োজনীয়তা
আপনার গেমে প্লাগইন ব্যবহার করতে, ইউনিটির একটি সমর্থিত সংস্করণ ব্যবহার করুন:
- ইউনিটি সংস্করণ 2017.4 বা তার পরে এবং .NET সংস্করণ 4.6
- APK সম্প্রসারণ ফাইলগুলি ব্যবহার করতে, ইউনিটি 2018.2 প্রয়োজন৷
- উন্নত ফ্রেম পেসিং এবং GPU পরিমাপের জন্য, ইউনিটি সংস্করণ 2019.3.14 বা তার পরবর্তী সংস্করণ প্রয়োজন
- Addressables দৃশ্য সমর্থনের জন্য, Unity 2019.3 বা তার পরে এবং Addressables প্যাকেজ 1.19.4 বা তার পরে প্রয়োজন।
ইউনিটিতে অ্যান্ড্রয়েড পারফরম্যান্স টিউনারকে ইন্টিগ্রেট করুন
ইউনিটিতে অ্যান্ড্রয়েড পারফরম্যান্স টিউনারকে সংহত করার বিষয়ে তথ্যের জন্য, API সক্ষম করুন দেখুন।