دمج حزمة تطوير البرامج (SDK) الخاصة بـ "ألعاب Google Play على الكمبيوتر" مع Unity

يقدّم هذا الدليل تعليمات مفصّلة حول كيفية دمج حزمة تطوير البرامج (SDK) لبرنامج "ألعاب Google Play على الكمبيوتر" في مشروع Unity.

الخطوة 1: تنزيل حزمة SDK

نزِّل أحدث إصدار من حزمة Unity باستخدام رابط التنزيل.

تنزيل: حزمة تطوير البرامج (SDK) لألعاب Play على الكمبيوترUnity

الخطوة 2: استيراد الحزمة

يتم توزيع حزمة SDK كملف tar متوافق مع "مدير حزم Unity" (UPM). لمزيد من المعلومات، يُرجى الاطّلاع على مقالة تثبيت حزمة UPM من ملف tar محلي

الخطوة 3: ضبط إعدادات الإصدار

للتأكّد من تحميل المكتبات الأصلية بشكل صحيح، عليك ضبط مشروعك لاستخدام واجهة برمجة النصوص IL2CPP واستهداف البنية الصحيحة.

  1. أنشِئ ملف تعريف إصدار مع Windows كمنصة.

  2. اختَر إعدادات المنصة على أنّها Windows. بالنسبة إلى البنية، استخدِم الخيارات التالية:

    • Intel‏ 64 بت (مُقترَحة)
    • Intel‏ 32 بت

    ملاحظة: تعمل منصة "ألعاب Google Play على الكمبيوتر" في بيئة 64 بت. يمكنك إنشاء لعبتك كإصدار 32 بت (x86) أو 64 بت (x64).

  3. اضبط واجهة برمجة النصوص على IL2CPP. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة إنشاء مشروع باستخدام IL2CPP.

    • اضبط مستوى توافق واجهة برمجة التطبيقات على ‎.NET Standard 2.0 (أو ‎ .NET Framework).

الخطوة 4: إنشاء ملف بيان التطبيق

قبل أن تتمكّن من استخدام حزمة SDK في لعبتك، عليك ربط ملف تنفيذ اللعبة باسم حزمة Play الذي طلبته في Play Console. يمكنك إجراء ذلك عن طريق إضافة ملف 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 على الكمبيوتر أثناء التطوير في Unity Editor بدون الحاجة إلى توقيع ملف تنفيذ اللعبة رقميًا أو تشغيله من "ألعاب Google Play"، يُرجى الاطّلاع على دليل إعداد وضع مطور البرامج لمعرفة خطوات إضافية حول ضبط ملف البيان.

الخطوة 5: إعداد حزمة 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);
        }
    }
}

أرفِق هذا النص البرمجي بـ GameObject في المشهد الأول. عند تشغيل اللعبة، تحقَّق من ظهور الرسالة "تم إعداد حزمة SDK بنجاح!" في وحدة التحكّم.