GameActivity   جزء من حزمة تطوير الألعاب لنظام Android

GameActivity هي مكتبة Jetpack مصمَّمة لمساعدة ألعاب Android في معالجة أوامر دورة حياة التطبيق وأحداث الإدخال وإدخال النصوص في رمز C/C++ الخاص بالتطبيق. ‫GameActivity هو عنصر فرعي مباشر من NativeActivity ويشترك معه في بنية مشابهة:

alt_text

كما هو موضّح في الرسم البياني أعلاه، تنفّذ GameActivity الوظائف التالية:

  • التفاعل مع إطار عمل Android من خلال المكوّن من جهة Java
  • تمرير أوامر دورة حياة التطبيق وأحداث الإدخال والنص المُدخَل إلى الجانب الأصلي
  • تصميم رمز المصدر C/C++‎ في ثلاثة مكونات منطقية:
    • وظائف JNI في GameActivity التي تتيح مباشرةً وظائف Java في GameActivity وتضيف الأحداث إلى قائمة الانتظار في native_app_glue.
    • native_app_glue، الذي يتم تشغيله في الغالب في سلسلة التعليمات الأصلية الخاصة به (تختلف عن سلسلة التعليمات الرئيسية للتطبيق)، وينفّذ المهام باستخدام حلقة الرسائل الخاصة به.
    • رمز اللعبة الخاص بالتطبيق، والذي يستطلع الأحداث التي تم وضعها في قائمة الانتظار داخل native_app_glue ويعالجها، وينفّذ رمز اللعبة ضمن سلسلة المحادثات native_app_glue

باستخدام GameActivity، يمكنك التركيز على تطوير الألعاب الأساسية وتجنُّب إضاعة الكثير من الوقت في التعامل مع رمز JNI.

إذا كنت معتادًا على استخدام NativeActivity، إليك الاختلافات الرئيسية بين GameActivity وNativeActivity:

  • يتم عرض GameActivity في SurfaceView، ما يسهّل على الألعاب التفاعل مع عناصر واجهة المستخدم الأخرى.
  • بالنسبة إلى أحداث إدخال اللمس والمفاتيح، تتضمّن GameActivity عملية تنفيذ جديدة تمامًا باستخدام واجهة android_input_buffer، منفصلة عن InputQueue التي تستخدمها NativeActivity.
  • GameActivity هي فئة مشتقة من AppCompatActivity، ما يتيح لك استخدام مكوّنات Jetpack الأخرى بسلاسة. ActionBar وFragment وغيرهما كلها متاحة.
  • تضيف GameActivity وظيفة إدخال النص من خلال دمج مكتبة GameTextInput.
  • من المتوقّع أن تنشئ التطبيقات المشتقة من GameActivity جميع أجزاء رمز C/C++ في مكتبة واحدة. من ناحية أخرى، تشكّل دوال JNI الخاصة بـ NativeActivity جزءًا من إطار العمل (يتم تحميلها دائمًا بواسطة نظام التشغيل). وبالتالي، من المتوقّع أن يتم إنشاء native_app_glue ورمز C/C++ للتطبيق في مكتبة واحدة فقط.
  • NativeActivity هو جزء من إطار عمل Android ويتبع دورة الإصدار (عادةً ما تكون سنوية). ‫GameActivity هو جزء من مكتبة Jetpack، التي تتضمّن دورة إصدار أكثر تكرارًا (عادةً كل أسبوعين)، ويمكن أن تصل الميزات الجديدة وإصلاحات الأخطاء بشكل أسرع.

مواقع الإصدار

تتوفّر مكتبة GameActivity في القنوات التالية:

يتم توفير رمز C/C++ البرمجي كرمز مصدر في جميع قنوات الإصدار، وذلك باستخدام تنسيق Prefab. يضيف الإصدار 1.2.2 من GameActivity مكتبة ثابتة إلى التوزيع. اعتبارًا من هذا الإصدار والإصدارات الأحدث، ننصحك باستخدام المكتبة الثابتة بدلاً من رمز المصدر.

محتويات حزمة ZIP الخاصة بمكتبة Jetpack وAGDK

يتم إصدار GameActivity مع ملف AAR باستخدام مكتبة Jetpack وقنوات حزمة AGDK المضغوطة. يحتوي هذا التقرير على المكوّنات الرئيسية التالية:

  • ملف JAR لرمز Java
  • يتم تضمين مكتبة C/C++‎ الثابتة game-activity_static مع الإصدار 1.2.2 والإصدارات الأحدث من GameActivity.
  • رمز المصدر C/C++‎ (ضمن المجلد /prefab)

تفترض تعليمات الدمج المرتبطة بهذه الصفحة أنّه يمكنك استخدام Prefab في نظام الإصدار، وإلا يمكنك نسخ الرمز المصدري المعبأ ضمن المجلد prefab/modules/game-activity/include إلى نظام الإصدار واتّخاذ خطوات الدمج اللازمة. تتوفّر بنية ملفات مشابهة للإصدارات ضمن androidx لمكتبة Android Jetpack، وبشكل تلقائي، يفك Gradle حِزم AAR في دليل ذاكرة التخزين المؤقت (~/.gradle/caches/...). يمكنك العثور على رمز المصدر C/C++ من خلال البحث عن prefab/modules/game-activity/include واختيار الموقع الجغرافي ضمن إصدارك المستهدف.

للحصول على تعليمات حول الدمج باستخدام مكتبة Jetpack، يُرجى الاطّلاع على بدء استخدام GameActivity.

محتوى رمز المصدر لنظام التشغيل AOSP

يتضمّن AOSP دائمًا أحدث رمز مصدر. اتّبِع تعليمات الإنشاء لإنشاء إصداراتك الخاصة أو دمج المصدر مباشرةً في بيئة الإنشاء. يتم حفظ رمز المصدر C/C++ في بنية ملفات مشابهة لتلك الخاصة بمكتبة Jetpack وحزمة AGDK المضغوطة.

أدلة الدمج

اتّبِع هذه الأدلة لدمج GameActivity في تطبيقاتك:

مراجع إضافية

لمزيد من المعلومات حول GameActivity، يُرجى الاطّلاع على ما يلي:

الملاحظات

للإبلاغ عن أخطاء أو طلب ميزات جديدة في GameActivity، استخدِم أداة تتبُّع المشاكل في GameActivity.