ইউনিটির সাথে গুগল প্লে গেমস পিসি এসডিকে একীভূত করুন

প্রজেক্ট, যার মধ্যে SDK ডাউনলোড থেকে শুরু করে ইনিশিয়ালাইজেশন এবং বিল্ড কনফিগারেশন পর্যন্ত ধাপগুলো অন্তর্ভুক্ত। কীওয়ার্ডস_পাবলিক: গুগল প্লে গেমস পিসি, ইউনিটি, SDK ইন্টিগ্রেশন, নেটিভ পিসি, গেম ডেভেলপমেন্ট, IL2CPP, ম্যানিফেস্ট, প্লে গেমস পিসি ইউনিটি SDK

এই নির্দেশিকাটি আপনার ইউনিটি প্রোজেক্টে গুগল প্লে গেমস পিসি এসডিকে (Google Play Games PC SDK) সংহত করার জন্য ধাপে ধাপে নির্দেশাবলী প্রদান করে।

ধাপ ১: SDK ডাউনলোড করুন

ডাউনলোড লিঙ্কটি ব্যবহার করে ইউনিটি প্যাকেজের সর্বশেষ সংস্করণটি ডাউনলোড করুন।

ডাউনলোড করুন: প্লে গেমস পিসি Unity এসডিকে

ধাপ ২: প্যাকেজটি ইম্পোর্ট করুন

এসডিকে-টি ইউনিটি প্যাকেজ ম্যানেজার (ইউপিএম)-এর সাথে সামঞ্জস্যপূর্ণ একটি ট্যার ফাইল হিসেবে বিতরণ করা হয়। আরও তথ্যের জন্য, ‘স্থানীয় ট্যার ফাইল থেকে একটি ইউপিএম প্যাকেজ ইনস্টল করুন’ দেখুন।

ধাপ ৩: বিল্ড সেটিংস কনফিগার করুন

নেটিভ লাইব্রেরিগুলো সঠিকভাবে লোড হচ্ছে কিনা তা যাচাই করতে, আপনাকে অবশ্যই আপনার প্রজেক্টটি IL2CPP স্ক্রিপ্টিং ব্যাকএন্ড ব্যবহার করার জন্য এবং সঠিক আর্কিটেকচারকে টার্গেট করার জন্য কনফিগার করতে হবে।

  1. প্ল্যাটফর্ম হিসেবে উইন্ডোজ ব্যবহার করে একটি বিল্ড প্রোফাইল তৈরি করুন

  2. প্ল্যাটফর্ম সেটিংস হিসেবে উইন্ডোজ নির্বাচন করুন। আর্কিটেকচারের জন্য, এই বিকল্পগুলো ব্যবহার করুন:

    • ইন্টেল ৬৪-বিট (প্রস্তাবিত)
    • ইন্টেল ৩২-বিট

    দ্রষ্টব্য: পিসি প্ল্যাটফর্মে গুগল প্লে গেমস একটি ৬৪-বিট পরিবেশে চলে। আপনি আপনার গেমটি ৩২-বিট (x86) বা ৬৪-বিট (x64) হিসেবে তৈরি করতে পারেন।

  3. স্ক্রিপ্টিং ব্যাকএন্ড IL2CPP- তে সেট করুন। আরও তথ্যের জন্য, IL2CPP দিয়ে একটি প্রজেক্ট তৈরি করা দেখুন।

    • এপিআই কম্প্যাটিবিলিটি লেভেল .NET Standard 2.0 (বা .NET Framework)-এ সেট করুন।

ধাপ ৪: অ্যাপ্লিকেশন ম্যানিফেস্ট তৈরি করুন

আপনার গেমে SDK ব্যবহার করার আগে, আপনাকে অবশ্যই আপনার গেম এক্সিকিউটেবলকে সেই প্লে প্যাকেজ নামের সাথে যুক্ত করতে হবে যা আপনি প্লে কনসোলে দাবি করেছেন। এটি করার জন্য, আপনার গেমের এক্সিকিউটেবল যে ডিরেক্টরিতে আছে, সেই একই ডিরেক্টরিতে একটি manifest.xml ফাইল যোগ করতে হবে।

দ্রষ্টব্য: এটি একটি ম্যানুয়াল ধাপ যা অবশ্যই সম্পাদন করতে হবে।

  1. আপনার গেমের এক্সিকিউটেবল ফাইল তৈরি করতে, ফাইল > বিল্ড অ্যান্ড রান নির্বাচন করুন অথবা Ctrl+B চাপুন।
  2. একটি টেক্সট এডিটর খুলুন এবং manifest.xml নামে একটি নতুন ফাইল তৈরি করুন।
  3. নিম্নলিখিত XML কোডটি ফাইলটিতে কপি ও পেস্ট করুন:

    <?xml version="1.0" encoding="utf-8"?>
    <?Manifest version="1">
       <?Application>
         <?PackageName>com.example.package<?/PackageName>
       <?/Application>
    <?/Manifest>

  4. ফাইলটি manifest.xml নামে সংরক্ষণ করুন।

  5. এই ফাইলটি আপনার বিল্ড করা গেম এক্সিকিউটেবল ফাইলের ফোল্ডারে সরান।

    উদাহরণস্বরূপ: যদি আপনার গেমটি Builds/MyGame.exe তে থাকে, তাহলে ম্যানিফেস্টটি অবশ্যই Builds/manifest.xml এ থাকতে হবে।

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

ধাপ ৫: SDK চালু করুন

বিলিং বা ইন্টিগ্রিটির মতো যেকোনো ফিচার অ্যাক্সেস করার আগে আপনাকে অবশ্যই SDK ইনিশিয়ালাইজ করতে হবে। ইনিশিয়ালাইজেশন হ্যান্ডলার তৈরি করতে এবং কানেকশন শুরু করতে PlayPcSdkFactory ব্যবহার করুন।

একটি নতুন C# স্ক্রিপ্ট তৈরি করুন, যেমন, SdkInitialization.cs , এবং নিম্নলিখিত কোডটি যোগ করুন:

using UnityEngine;
using System;
using System.Threading.Tasks;
// Import the SDK namespaces
using PlayPcSdkManaged.Initialization;
using PlayPcSdkManaged.Unity;

public class GooglePlayPCSDKInit : MonoBehaviour
{
    // Prevent double-initialization if this script is reloaded
    private static bool _isInitialized = false;

    private void Start()
    {
        // Use the "Safe Runner" pattern to fire the async method
        _ = InitializeSdkAsync();
    }

    private async Task InitializeSdkAsync()
    {
        if (_isInitialized)
        {
            Debug.LogWarning("Google Play PC SDK is already initialized. Skipping.");
            return;
        }

        try
        {
            Debug.Log("Initializing Google Play PC SDK...");

            // 1. Get the Unity-specific initialization handler from the factory
            var initHandler = PlayPcSdkFactory.InitializationHandler;

            // 2. Call InitializeAsync to start the connection
            var result = await GooglePlayInitialization.InitializeAsync(initHandler);

            // 3. Check the result
            if (result.IsOk)
            {
                _isInitialized = true;
                Debug.Log("<color=green>Google Play PC SDK Initialized Successfully!</color>");
                // You can now create BillingClient or IntegrityClient instances
            }
            else
            {
                Debug.LogError($"<color=red>Initialization Failed!</color>");
                Debug.LogError($"Error Code: {result.Code}");
                Debug.LogError($"Message: {result.ErrorMessage}");
            }
        }
        catch (Exception ex)
        {
            // Catch unexpected crashes or task failures
            Debug.LogError($"Exception during initialization: {ex.Message}");
            Debug.LogException(ex);
        }
    }
}

আপনার প্রথম সিনের একটি গেমঅবজেক্টে এই স্ক্রিপ্টটি সংযুক্ত করুন। গেমটি চালানোর পর, কনসোলে "SDK Initialized Successfully!" বার্তাটি দেখুন।

ধাপ ৬ : আপনার পিসির নিজস্ব গেম ইনস্টল করার পর অটো-প্লে চালু করা

পিসিতে গুগল প্লে গেমস (GPG) ডেভেলপারদের একটি "অটো-প্লে" ফিচার চালু করার সুযোগ দেয়, যা ইনস্টলেশন প্রক্রিয়া সম্পন্ন হওয়ার সাথে সাথেই আপনার গেমটি স্বয়ংক্রিয়ভাবে চালু করে দেয়। এই ফিচারটি প্লেয়ারকে GPG ইকোসিস্টেমের মধ্যে সম্পূর্ণভাবে প্রমাণীকৃত অবস্থায় সরাসরি গেমে প্রবেশ করিয়ে একটি নির্বিঘ্ন ব্যবহারকারীর অভিজ্ঞতা নিশ্চিত করে।

এটি কীভাবে কাজ করে

যখন আপনি এই ফিচারটি চালু করবেন, GPG কমান্ড-লাইন আর্গুমেন্টের মাধ্যমে আপনার থার্ড-পার্টি (3P) ইনস্টলার প্রসেসে একটি GPG সেশন টোকেন পাঠাবে। এরপর আপনার ইনস্টলারের দায়িত্ব হলো এই টোকেনটি সংগ্রহ করা এবং এটি ব্যবহার করে একটি অথেনটিকেটেড প্রেক্ষাপটে গেম এক্সিকিউটেবলটি চালু করা।

পূর্বশর্ত

এই বৈশিষ্ট্যটি ব্যবহার করতে হলে, আপনার 3P ইনস্টলারকে অবশ্যই কমান্ড-লাইন আর্গুমেন্ট পরিচালনা করতে সক্ষম হতে হবে।

বাস্তবায়নের পদক্ষেপ

  1. পাবলিশিং কনফিগে অটো-প্লে সক্রিয় করুন

    এই ফিচারটি চালু করতে, আপনার play_publishing_config.xml ফাইলের <installer> এলিমেন্টে acceptsCommandLineArguments অ্যাট্রিবিউটটি যোগ করুন।

    manifest.xml ফাইলের বিষয়বস্তুর উদাহরণ:

    <installer requiresElevation="true" acceptsCommandLineArguments="true">
      <path>path/to/installer.exe</path>
      <installation-path-registry-location>
        <key-name>SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\key</key-name>
        <value-name>InstallPath</value-name>
      </installation-path-registry-location>
    </installer>
    
    • অ্যাট্রিবিউট: acceptsCommandLineArguments
    • ধরণ: Boolean
    • ডিফল্ট: false
    • আচরণ: আপনি এটিকে 'true' সেট করলে, GPG আপনার ইনস্টলারটি চালানোর সময় কমান্ড-লাইন আর্গুমেন্টগুলোর সাথে সেশন টোকেনটি যুক্ত করবে।
  2. আপনার ইনস্টলারে সেশন টোকেনটি পরিচালনা করুন

    যখন GPG ক্লায়েন্ট দ্বারা আপনার ইনস্টলারটি চালু করা হয়, তখন এটি একটি কমান্ড-লাইন আর্গুমেন্ট হিসেবে সেশন টোকেনটি গ্রহণ করবে।

    • আর্গুমেন্ট ফরম্যাট: --g_session_token=<TOKEN>

    আপনাকে যা করতে হবে:

    • নিষ্কাশন: টোকেন স্ট্রিংটি পুনরুদ্ধার করার জন্য আপনার ইনস্টলারকে অবশ্যই কমান্ড-লাইন আর্গুমেন্টগুলো পার্স করতে হবে।
    • প্রচার: যদি আপনার ইনস্টলেশন প্রক্রিয়ায় কোনো দ্বিতীয় লঞ্চার বা গেম প্রসেস চালু করার প্রয়োজন হয়, তবে আপনার ইনস্টলার SDK ব্যবহারকারী চূড়ান্ত গেম প্রসেসটিতে সেশন টোকেনটি নিরাপদে পৌঁছে দেওয়ার জন্য দায়ী থাকবে।
    • চালু করুন: গেম এক্সিকিউটেবলটি শুরু করতে প্রদত্ত সেশন টোকেনটি ব্যবহার করুন। এটি নিশ্চিত করে যে গেমটি একটি প্রমাণীকৃত GPG প্রেক্ষাপটে চলে। অন্যথায়, InitializeSDK ব্যর্থ হবে এবং আপনার প্লেয়ারকে গেমটি পুনরায় শুরু করতে হবে।
  3. ত্রুটি পরিচালনা এবং ফলব্যাক

  • টোকেন পুনরুদ্ধার: যদি কোনো কারণে GPG একটি সেশন টোকেন তৈরি বা সরবরাহ করতে না পারে (যেমন, টোকেন তৈরিতে ব্যর্থতা), তাহলেও ইনস্টলেশন প্রক্রিয়াটি চলতে থাকবে। তবে, আপনার ইনস্টলারটি --g_session_token আর্গুমেন্ট ছাড়াই চালু হবে।
  • দৃঢ়তা: আপনার ইনস্টলারটি এমনভাবে ডিজাইন করা উচিত যাতে সেশন টোকেন অনুপস্থিত থাকলেও এটি পরিস্থিতি সামাল দিতে পারে। সেক্ষেত্রে, ইনস্টলারটি একটি সাধারণ ইনস্টলেশন প্রক্রিয়া অনুসরণ করবে; স্বয়ংক্রিয়ভাবে গেম চালু করার ব্যবস্থা নেওয়া উচিত নয়, কারণ সেক্ষেত্রে InitializeSDK এমনিতেও ব্যর্থ হবে।
  • ইনস্টলার ত্রুটি: আপনার ইনস্টলারের দৃঢ়তা ও ত্রুটি ব্যবস্থাপনা এবং এর দ্বারা শুরু হওয়া গেম চালুর ক্রমের জন্য আপনিই দায়ী। ইনস্টলারটি চালু হওয়ার পর এর অভ্যন্তরে সংঘটিত প্রক্রিয়াগুলোর উপর GPG-এর কোনো নিয়ন্ত্রণ নেই।