‫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 مكتبة ثابتة إلى عملية التوزيع. بدءًا من هذا الإصدار والإصدارات الأحدث، ننصحك باستخدام المكتبة الثابتة بدلاً من رمز المصدر.

محتوى مكتبة Jetpack وحزمة AGDK بتنسيق ZIP

باستخدام مكتبة Jetpack وقنوات حِزم zip الخاصة بمجموعة تطوير الألعاب (AGDK)، يتم إصدار GameActivity مع ملف AAR. يحتوي تقرير AAR هذا على المكوّنات الرئيسية التالية:

  • ملف 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 zip.

أدلة الدمج

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

مراجع إضافية

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

الملاحظات

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