এই নথিটি বর্ণনা করে কিভাবে আপনার প্রকল্পে টীকা, বিশ্বস্ততা পরামিতি এবং সেটিংস সেট করতে হয়।
টীকা এবং বিশ্বস্ততা পরামিতি
একটি টিক রেকর্ড করা হলে আপনার গেমটি কী করছে সে সম্পর্কে টীকাগুলি প্রাসঙ্গিক তথ্য দেয়৷ বিশ্বস্ততা পরামিতি আপনার গেমের কর্মক্ষমতা এবং গ্রাফিকাল সেটিংস প্রতিফলিত করে। আপনি প্রোটোকল বাফার ব্যবহার করে এগুলিকে সংজ্ঞায়িত করেন, যা Google-এর ভাষা-নিরপেক্ষ, কাঠামোগত, ডেটা-ইন্টারচেঞ্জ ফর্ম্যাট। আপনার গেমের মধ্যে প্রোটোকল বাফার ব্যবহার করার বিষয়ে আরও তথ্যের জন্য, প্রোটোকল বাফার সম্পর্কে দেখুন।
আপনার গেমের সম্ভাব্য টীকা এবং বিশ্বস্ততার পরামিতিগুলি dev_tuningfork.proto
নামক একটি ফাইলে সংজ্ঞায়িত করা হয়েছে, যা আপনার প্রকল্পের assets/tuningfork
ডিরেক্টরিতে অবস্থিত৷ নিম্নলিখিত ডেমো অ্যাপ্লিকেশন থেকে একটি উদাহরণ:
syntax = "proto3";
package com.google.tuningfork;
enum InstrumentKey {
CPU = 0;
GPU = 1;
SWAPPY_WAIT = 2;
SWAPPY_SWAP = 3;
CHOREOGRAPHER = 4;
}
enum Level {
// 0 is not a valid value
LEVEL_INVALID = 0;
LEVEL_1 = 1;
LEVEL_2 = 2;
LEVEL_3 = 3;
};
message Annotation {
Level level = 1;
}
message FidelityParams {
int32 num_spheres = 1;
float tesselation_percent = 2;
}
নিম্নলিখিত নোট করুন:
- প্যাকেজটি
com.google.tuningfork
হতে হবে। - বার্তার নামগুলি অবশ্যই ঠিক
Annotation
এবংFidelityParams
হতে হবে। - আপনি টীকা অংশ হিসাবে শুধুমাত্র এই ফাইলে সংজ্ঞায়িত
enums
ব্যবহার করতে পারেন. - আপনি
FidelityParams
ক্ষেত্রে শুধুমাত্রenums
,int32s
বাfloats
ব্যবহার করতে পারেন। - বৈধকরণ টুল এই নিয়মাবলী প্রয়োগ করে।
সেটিংস
Settings
বার্তাটি tuningfork.proto
দ্বারা সংজ্ঞায়িত করা হয়েছে। নিম্নলিখিত ফাইলে একটি সম্পূর্ণ উদাহরণ দেখুন:
gamesdk/samples/tuningfork/insightsdemo/app/src/main/assets/tuningfork/tuningfork_settings.txt
আপনার প্রকল্পের assets/tuningfork
ডিরেক্টরিতে অবস্থিত tuningfork_settings.txt
নামক একটি ফাইলে আপনাকে অবশ্যই আপনার গেমের সেটিংস সংজ্ঞায়িত করতে হবে। আপনাকে শুধুমাত্র নিম্নলিখিত ক্ষেত্রগুলি নির্দিষ্ট করতে হবে:
aggregation_strategy
: নিম্নলিখিত সম্বলিত একটি বার্তা:-
method
: প্রতি n মিলিসেকেন্ডে আপলোড করতেTIME_BASED
বা প্রতি n টিক আপলোড করতেTICK_BASED
। -
intervalms_or_count
: nmethod
ক্ষেত্রের জন্য। -
max_instrumentation_keys
: ব্যবহার করার জন্য ইন্সট্রুমেন্টেশন কীগুলির সংখ্যা। অ্যান্ড্রয়েড ফ্রেম পেসিং লাইব্রেরি ব্যবহার করলে4
এ সেট করুন। -
annotation_enum_size
: একটি ঐচ্ছিক ক্ষেত্র যেহেতু আকারটি বর্ণনাকারী থেকে শুরু করার সময় গণনা করা হয়।
-
api_key
: আপনার অ্যাপের ক্লাউড প্রজেক্ট API কী, শেষ পয়েন্টে অনুরোধ যাচাই করতে ব্যবহৃত হয়। এই কী তৈরি করতে, API সক্ষম করুন দেখুন। আপনি যদিlogcat
সংযোগ ত্রুটি দেখতে পান, তাহলে API কীটি সঠিক কিনা তা পরীক্ষা করুন।default_fidelity_parameters_filename
: প্রারম্ভে ব্যবহৃত বিশ্বস্ততা প্যারামিটার সেট (ঐচ্ছিক যদি আপনি আপনার কোডেtraining_fidelity_params
সেট করেন)।level_annotation_index
: (ঐচ্ছিক) লেভেল নম্বরের আপনার টীকা ক্ষেত্রের সূচক।
নিম্নলিখিত একটি উদাহরণ পাঠ্য উপস্থাপনা:
aggregation_strategy: {method: TIME_BASED, intervalms_or_count: 10000,
max_instrumentation_keys: 5, annotation_enum_size: [3,4]}
api_key: "API-KEY-FROM-GOOGLE-CLOUD-CONSOLE"
default_fidelity_parameters_filename: "dev_tuningfork_fidelityparams_3.bin"
level_annotation_index: 1
টীকা সেট করা হচ্ছে
আপনার খেলা চলাকালীন আপনাকে ম্যানুয়ালি টীকা সেট করতে হবে। আপনি ডেমো অ্যাপে এর একটি উদাহরণ দেখতে পারেন কারণ এটি স্বয়ংক্রিয়ভাবে গেমের সমস্ত স্তরের মাধ্যমে চক্রাকারে চলে। আরও তথ্যের জন্য, insightsdemo.cpp
এ SetAnnotations()
ফাংশন দেখুন।
এই ক্ষেত্রে, টীকা শুধুমাত্র স্তর সংখ্যা নির্দিষ্ট করে।
message Annotation {
Level level = 1;
}
মানের স্তর সংজ্ঞায়িত করুন
সেশনগুলি টীকা করতে গুণমানের স্তরগুলি ব্যবহার করুন যাতে আপনি নির্ধারণ করতে পারেন যে ডিভাইসগুলি খুব বেশি (নিম্ন কার্যক্ষমতার ফলে) বা খুব কম (ফলে অপ্রয়োজনীয়ভাবে বিশ্বস্ততা হ্রাস) এমন একটি গুণমানের স্তরে চলছে কিনা৷
আপনার গেমের জন্য আপনাকে অবশ্যই কমপক্ষে একটি, এবং পছন্দসই একাধিক, গুণমানের স্তর নির্ধারণ করতে হবে। একটি মানের স্তর আপনার FidelityParams
বার্তার একটি উদাহরণের সাথে মিলে যায়৷ এই স্তরগুলি অবশ্যই নিম্নলিখিত ফাইলের নাম বিন্যাসের সাথে বিশ্বস্ততার ক্রম বৃদ্ধিতে দেওয়া উচিত:
dev_tuningfork_fidelityparams_i.txt
যেখানে i
হল 1 থেকে শুরু হওয়া একটি সূচক যার সর্বোচ্চ মান 15। এই ফাইলগুলি অবশ্যই আপনার প্রোজেক্টের assets/tuningfork
ডিরেক্টরিতে অবস্থিত হবে। নমুনা প্রকল্পটি gamesdk/samples/tuningfork/insightsdemo/app/src/main/assets/tuningfork/
ডিরেক্টরিতে এই কাঠামোর একটি উদাহরণ দেখায়।
প্রোটোকল বাফার সম্পর্কে
টিউনিং ফর্ক লাইব্রেরি সেটিংস, টীকা এবং বিশ্বস্ততার পরামিতিগুলির জন্য Google এর প্রোটোকল বাফার বিন্যাস ব্যবহার করে। এটি এক্সটেনসিবল, স্ট্রাকচার্ড ডেটার জন্য একটি সু-সংজ্ঞায়িত, বহু-ভাষা প্রোটোকল। আরও তথ্যের জন্য, প্রোটোকল বাফার ডকুমেন্টেশন দেখুন।
প্রোটো 2 বনাম প্রোটো 3
প্রোটোকল বাফার বিন্যাসের সংস্করণটি ফাইলের প্রথম লাইনে সেট করা হয়েছে:
syntax="proto2";
Proto2 এবং proto3 হল প্রোটোকল বাফারের দুটি সাধারণভাবে ব্যবহৃত সংস্করণ। তারা উভয়ই একই তারের বিন্যাস ব্যবহার করে তবে সংজ্ঞা ফাইলগুলি সামঞ্জস্যপূর্ণ নয়। দুটি সংস্করণের মধ্যে মূল পার্থক্যগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
-
optional
এবংrequired
কীওয়ার্ডগুলি proto3 এ আর অনুমোদিত নয়৷ - প্রোটো 3 এ সবকিছুই কার্যকরভাবে
optional
। - প্রোটো3 এ এক্সটেনশন সমর্থিত নয়।
আপনার প্রোটো ফাইলগুলিতে proto3 ব্যবহার করুন কারণ এগুলি C# এ কম্পাইল করা যেতে পারে। Proto2 টিউনিং ফর্ক লাইব্রেরিতে ব্যবহৃত সীমিত বৈশিষ্ট্য সেটের সাথেও কাজ করে।
পাঠ্য বনাম বাইনারি উপস্থাপনা
বাইনারি প্রোটোবুফ ওয়্যার-ফরম্যাটটি বিভিন্ন প্রোটোবাফ সংস্করণ জুড়ে সু-সংজ্ঞায়িত এবং স্থিতিশীল (উৎপন্ন কোডটি নয়)। একটি পাঠ্য বিন্যাসও রয়েছে যা প্রোটোবাফ লাইব্রেরির সম্পূর্ণ সংস্করণ তৈরি এবং পড়তে পারে। এই বিন্যাসটি ততটা সংজ্ঞায়িত নয়, তবে টিউনিং ফর্ক লাইব্রেরিতে সীমিত বৈশিষ্ট্যগুলির জন্য এটি স্থিতিশীল। আপনি protoc
কম্পাইলার ব্যবহার করে বাইনারি এবং টেক্সট ফরম্যাটের মধ্যে রূপান্তর করতে পারেন। নিম্নলিখিত কমান্ডটি একটি পাঠ্য প্রোটোবাফকে বাইনারিতে রূপান্তর করে:
protoc --encode com.google.tuningfork.Settings tuningfork.proto < tuningfork_settings.txt > tuningfork_settings.bin
আপনার APK-এ টেক্সট ফাইলের পরিবর্তে আপনাকে অবশ্যই বাইনারি ফাইল অন্তর্ভুক্ত করতে হবে কারণ সম্পূর্ণ প্রোটোবাফ লাইব্রেরির আকার কয়েক এমবি; টিউনিং ফর্ক লাইব্রেরি এটির উপর নির্ভর করে আপনার গেমের আকার একই পরিমাণে বৃদ্ধি পাবে।
সম্পূর্ণ বনাম লাইট বনাম ন্যানো
সম্পূর্ণ প্রোটোবাফ লাইব্রেরির পাশাপাশি, একটি লাইট সংস্করণ রয়েছে যা কিছু বৈশিষ্ট্য যেমন প্রতিফলন, FileDescriptors
এবং টেক্সট ফর্ম্যাটে এবং থেকে স্ট্রিমিং সরিয়ে কোড ফুটপ্রিন্ট হ্রাস করে। এই সংস্করণের জন্য এখনও বেশ কয়েকটি এমবি অতিরিক্ত কোড ফুটপ্রিন্ট প্রয়োজন এবং তাই, টিউনিং ফর্ক লাইব্রেরি অভ্যন্তরীণভাবে nanopb লাইব্রেরি ব্যবহার করে। এই লাইব্রেরির সোর্স কোডটি external/nanopb-c
এ অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্টে অন্তর্ভুক্ত করা হয়েছে এবং এটি gamesdk
শাখার অংশ। কোড আকার একটি সমস্যা হলে আপনার গেম এই লাইব্রেরি ব্যবহার করুন.
gamesdk/src/protobuf
এ CMake ফাইল রয়েছে যা আপনাকে protobuf-এর তিনটি সংস্করণ একত্রিত করতে সাহায্য করতে পারে। নমুনাগুলি ন্যানোপবি এবং সম্পূর্ণ প্রোটোবাফ উভয়ের মিশ্রণ ব্যবহার করে।