লাইব্রেরি শুরু করুন এবং অপারেশন যাচাই করুন

এই পৃষ্ঠাটি বর্ণনা করে যে কীভাবে আপনার গেম কোডে লাইব্রেরি শুরু করুন এবং যাচাই করুন যে এটি Google Play-তে ডেটা আপলোড করছে। নির্দিষ্ট লাইব্রেরি ফাংশন সম্পর্কে আরও তথ্য পেতে, রেফারেন্স ডকুমেন্টেশন দেখুন।

লাইব্রেরি চালু করুন

আপনার গেমের শুরুতে একটি ইনিশিয়ালাইজেশন পদ্ধতিতে, AndroidPerformanceTuner চালু করে এবং এর Start() পদ্ধতিতে কল করে লাইব্রেরি শুরু করুন:

using Google.Android.PerformanceTuner;
using UnityEngine;

public class SomeBehaviour : MonoBehaviour
{
    AndroidPerformanceTuner<FidelityParams, Annotation> tuner =
            new AndroidPerformanceTuner<FidelityParams, Annotation>();

    void Start()
    {
        ErrorCode startErrorCode = tuner.Start();
        Debug.Log("Android Performance Tuner started with code: " + startErrorCode);

        tuner.onReceiveUploadLog += request =>
        {
            Debug.Log("Telemetry uploaded with request name: " + request.name);
        };
    }
}

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

দেরীতে শুরু করা (শুধুমাত্র ভলকান)

যদি আপনার গেমটি ভলকানকে লক্ষ্য করে এবং অ্যান্ড্রয়েড ফ্রেম পেসিং ব্যবহার করে, তাহলে অ্যান্ড্রয়েড পারফরম্যান্স টিউনারের দেরিতে শুরু হওয়া উচিত:

IEnumerator Start()
{
    yield return new WaitForEndOfFrame();
    ErrorCode startErrorCode = tuner.Start();
    Debug.Log("Android Performance Tuner started with code: " + startErrorCode);

    tuner.onReceiveUploadLog += request =>
    {
        Debug.Log("Telemetry uploaded with request name: " + request.name);
    };
}

টেলিমেট্রি আপলোডের মধ্যে ব্যবধান যাচাই করুন

প্লাগইন সেটিংসে টেলিমেট্রি আপলোডের মধ্যে ডিফল্ট ব্যবধান 30 সেকেন্ড। টেলিমেট্রির সঠিক আপলোডিং যাচাই করা সহজ করতে এই সময়টি একটি ছোট ব্যবধানে সেট করা হয়েছে। আপনি যখন আপনার গেমটি প্রোডাকশনে প্রকাশ করেন, তখন এটিকে একটি বড় ব্যবধানে সেট করুন (উদাহরণস্বরূপ, প্রতি 10 মিনিটে) যাতে গেমটি API-কে খুব বেশি অনুরোধ না করে, যা বিশেষত মোবাইল ডেটা প্ল্যান নেই এমন ব্যবহারকারীদের জন্য গুরুত্বপূর্ণ। যার মধ্যে রয়েছে সীমাহীন ডেটা। একটি বড় ব্যবধানও ডিভাইসের ব্যাটারির অতিরিক্ত ব্যবহার এড়ায়।

ব্যবধানটি 30 সেকেন্ডে সেট করা হয়েছে তা যাচাই করতে, নিম্নলিখিতগুলি করুন:

  1. সেটিংস অ্যাক্সেস করতে Google > Android পারফরম্যান্স টিউনার নির্বাচন করুন।
  2. ইনস্ট্রুমেন্টেশন সেটিংস ট্যাবটি নির্বাচন করুন এবং উন্নত সেটিংস ব্যবহার করুন ক্লিক করুন।
  3. যাচাই করুন যে ব্যবধান (মিনিট) ক্ষেত্রে 0.5 রয়েছে।

প্লাগইনে ইনস্ট্রুমেন্টেশন সেটিংস ট্যাব

সঠিক অপারেশন যাচাই করুন

আপনি যদি IL2CPP বা কোড স্ট্রিপিং ব্যবহার করেন, কোড স্ট্রিপিং পরিচালনা করুন দেখুন।

Android এর জন্য আপনার গেম তৈরি করুন। আপনার গেমটি একটি ডিভাইসে চালু হওয়ার সময়, আপনার কম্পিউটারে একটি টার্মিনাল খুলুন এবং adb logcat চালু করুন:

adb logcat

adb logcat এর আউটপুটে, "TuningFork" অনুসন্ধান করুন (যেমন টিউনিং ফর্ক হল লাইব্রেরির অভ্যন্তরীণ নাম):

02-03 16:55:45.103 10511 10536 I TuningFork: Got settings from tuningfork/tuningfork_settings.bin
02-03 16:55:45.103 10511 10536 I TuningFork: Using local file cache at /data/user/0/com.Unity3d.BoatAttackDay/cache/tuningfork
02-03 16:55:45.105 10511 10536 I TuningFork: OpenGL version 3.2
02-03 16:55:45.105 10511 10536 I TuningFork: TuningFork.GoogleEndpoint: OK
02-03 16:55:45.106 10511 10611 I TuningFork: Creating directory /data/user/0/com.Unity3d.BoatAttackDay/cache/tuningfork
02-03 16:55:45.106 10511 10536 I TuningFork: TuningFork Settings:

[...]

02-03 16:55:45.116 10511 10536 I Unity   : Tuningfork started with code: Ok
02-03 16:55:45.107 10511 10536 I TuningFork: TuningFork initialized
02-03 16:55:45.107 10511 10536 I UnityTuningfork: Swappy backend: 1
02-03 16:55:45.107 10511 10536 I TuningFork: Creating directory /data/user/0/com.Unity3d.BoatAttackDay/cache/tuningfork/V1
02-03 16:55:45.110 10511 10613 I TuningFork: OpenGL version 3.2
02-03 16:55:45.110 10511 10613 I TuningFork:Web: Connecting to: https://performanceparameters.googleapis.com/v1/applications/com.Unity3d.BoatAttackDay/apks/1:generateTuningParameters

যদি আপনি প্লাগইন সেট আপ করার সময় একটি ভুল করে থাকেন, যেমন API কী সেট করতে ভুলে যাওয়া, আপনি ইনিশিয়ালাইজেশন লগগুলিতে একটি ত্রুটি দেখতে পাবেন:

02-03 16:49:44.970  8815  8831 I TuningFork: Got settings from tuningfork/tuningfork_settings.bin
02-03 16:49:44.971  8815  8831 I TuningFork: Using local file cache at /data/user/0/com.Unity3d.BoatAttackDay/cache/tuningfork
02-03 16:49:44.972  8815  8831 I TuningFork: OpenGL version 3.2
02-03 16:49:44.972  8815  8831 W TuningFork.GE: The API key in Tuning Fork TFSettings is invalid
02-03 16:49:44.972  8815  8831 E TuningFork: TuningFork.GoogleEndpoint: FAILED
02-03 16:49:44.973  8815  8831 I Unity   : Tuningfork started with code: BadParameter

Android পারফরম্যান্স টিউনার টেলিমেট্রি আপলোড করছে কিনা তা পরীক্ষা করুন। আপনি যদি লগগুলিতে TuningFork initialized দেখেন, তবে আরও কিছুক্ষণ অপেক্ষা করুন এবং লগগুলি দেখুন যা নির্দেশ করে যে টেলিমেট্রি আপলোড করা হচ্ছে৷

02-03 16:58:00.552 10511 10611 I TuningFork:Web: Connecting to: https://performanceparameters.googleapis.com/v1/applications/com.Unity3d.BoatAttackDay/apks/1:uploadTelemetry
02-03 16:58:00.898 10511 10611 I TuningFork:Web: Response code: 200
02-03 16:58:00.898 10511 10611 I TuningFork:Web: Response message: OK
02-03 16:58:00.899 10511 10611 I TuningFork.GE: UPLOAD request returned 200 {}

আপনি "এর সাথে সংযুক্ত হচ্ছে:" এর জন্য লগগুলিতেও অনুসন্ধান করতে পারেন৷ এই বার্তাটি কয়েক লাইন পরে প্রতিক্রিয়া কোড দ্বারা অনুসরণ করা হয়.

আপনি যদি টেলিমেট্রি আপলোড লগগুলি দেখতে না পান, তাহলে যাচাই করুন যে আপনি Android পারফরম্যান্স টিউনার সেটিংসে প্রতিটি আপলোডের মধ্যে ব্যবধান ঠিকভাবে সেট করেছেন একটি ছোট মান, যেমন 30 সেকেন্ড।

কোড স্ট্রিপিং পরিচালনা করুন

Google.Protobuf.dll প্রতিফলন ব্যবহার করে। কোড স্ট্রিপিংয়ের সময়, কিছু প্রয়োজনীয় কোড সরানো হতে পারে। এই অপসারণ এড়াতে, প্লাগইনটিতে একটি link.xml ফাইল রয়েছে যার তথ্য কোন চিহ্নগুলি সংরক্ষণ করা উচিত। আপনার যদি প্রোটোবাফের কিছু কার্যকারিতার প্রয়োজন হয় যা প্রতিফলন ব্যবহার করে এবং আপনার কোড স্ট্রিপিং সক্ষম করা থাকে, তাহলে প্রতীকগুলি সংরক্ষণ করতে link.xml ফাইলে এই তথ্যটি যোগ করুন।

আপনি ইউনিটি ডকুমেন্টেশনে পরিচালিত কোড স্ট্রিপিং সম্পর্কে আরও পড়তে পারেন।

আপনি যদি প্রোটোবাফে সমস্ত প্রতীক সংরক্ষণ করতে চান তবে আপনার প্রকল্পে একটি link.xml ফাইল যুক্ত করুন যাতে নিম্নলিখিতগুলি রয়েছে:

<linker>
  <assembly fullname="Google.Protobuf" preserve="all"/>
</linker>

আগাম-সময় কম্পাইল (AOT)

IL2CPP ব্যাকএন্ড এবং ইউনিটি সংস্করণ 2017 এবং 2018 এর জন্য আগাম-অব-টাইম কম্পাইল প্রয়োজন (কিন্তু ইউনিটির পরবর্তী সংস্করণগুলির জন্য নয়)।

AOT কম্পাইলার জেনেরিক পদ্ধতির জন্য কোড তৈরি করতে পারে না। আপনাকে নিম্নলিখিত পদ্ধতি যোগ করে প্রোটোবাফের জন্য প্রয়োজনীয় সঠিক কোড তৈরি করতে কম্পাইলারকে বাধ্য করতে হবে:

using Google.Protobuf.Reflection;
using UnityEngine.Scripting;

...

// Don't call this method.
[Preserve]
void ExampleOfForceReflectionInitializationForProtobuf()
{
    FileDescriptor.ForceReflectionInitialization<Scene>();
    FileDescriptor.ForceReflectionInitialization<ShadowType>();
    FileDescriptor.ForceReflectionInitialization<LevelType>();
    ...
    // Add FileDescriptor.ForceReflectionInitialization<T> for each generated enum.
    // You can find the list of enums in DevTuningfork.cs -> enum section
    // or in the list of enums in Google -> Android Performance Tuner.
}

আপনি ইউনিটি ডকুমেন্টেশনে স্ক্রিপ্টিং সীমাবদ্ধতা সম্পর্কে আরও পড়তে পারেন।