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

باستخدام مكتبة Jetpack، يتم إصدار GameActivity مع ملف AAR. يتضمّن هذا الأرشيف الرئيسي لتطبيقات Android المكوّنات الرئيسية التالية:

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

أدلة الدمج

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

مراجع إضافية

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

الملاحظات

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