‫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 بخشی از چارچوب هستند (همیشه توسط سیستم‌عامل بارگذاری می‌شوند). بنابراین، فقط کد C/C++ برنامه و native_app_glue باید در یک کتابخانه ساخته شود.
  • ‫NativeActivity بخشی از چارچوب Android است و از چرخه انتشار آن (معمولاً سالانه) پیروی می‌کند. ‫GameActivity بخشی از کتابخانه Jetpack است که چرخه انتشار بسیار مکررتری دارد (معمولاً هر دو هفته یک‌بار)؛ ویژگی‌های جدید و رفع اشکال‌ها می‌توانند خیلی سریع‌تر ارائه شوند.

آزاد کردن مکان‌ها

کتابخانه GameActivity در کانال‌های زیر دردسترس است:

کد C/C++‎ در همه کانال‌های انتشار به‌عنوان کد منبع بااستفاده از قالب Prefab ارائه می‌شود. نسخه ۱.۲.۲ از GameActivity کتابخانه ایستا را به توزیع اضافه می‌کند. از این نسخه و نسخه‌های جدیدتر، توصیه می‌کنیم به‌جای کد منبع از کتابخانه ایستا استفاده کنید.

محتوای کتابخانه Jetpack

با کتابخانه Jetpack،‏ GameActivity با AAR منتشر می‌شود. این «گزارش پس‌از اقدام» شامل اجزای اصلی زیر است:

  • فایل JAR برای کد Java
  • کتابخانه ایستا C/C++‎ game-activity_static در GameActivity نسخه ۱.۲.۲ و جدیدتر گنجانده شده است.
  • کد منبع C/C++‎ (در پوشه /prefab)

دستورالعمل‌های یکپارچه‌سازی که از این صفحه پیوند داده شده‌اند فرض می‌کنند که می‌توانید از Prefab در سیستم ساخت خود استفاده کنید؛ درغیراین‌صورت، می‌توانید کد منبع بسته‌بندی‌شده در پوشه prefab/modules/game-activity/include را در سیستم ساخت خود کپی کنید و مراحل یکپارچه‌سازی لازم را انجام دهید. ساختار فایل مشابهی برای نسخه‌های پخش تحت androidx برای کتابخانه Android Jetpack وجود دارد؛ به‌طور پیش‌فرض، gradle فایل‌های AAR را در دایرکتوری حافظه نهان خود (~/.gradle/caches/...) ازهم باز می‌کند. با جستجوی prefab/modules/game-activity/include و انتخاب مکان در نسخه انتشار موردنظرتان می‌توانید کد منبع C/C++ را پیدا کنید.

برای دریافت دستورالعمل‌های مربوط به ادغام بااستفاده از کتابخانه Jetpack، به شروع کار با GameActivity مراجعه کنید.

محتوای کد منبع AOSP

‫AOSP همیشه حاوی جدیدترین کد منبع است. برای ایجاد نسخه‌های پخش خودتان یا ادغام مستقیم منبع در محیط ساخت، دستورالعمل‌های ساخت را دنبال کنید. کد منبع C/C++‎ در ساختار فایلی مشابه کتابخانه Jetpack ذخیره می‌شود.

راهنماهای یکپارچه‌سازی

برای ادغام GameActivity در برنامه‌هایتان، این راهنماها را دنبال کنید:

منابع بیشتر

برای کسب اطلاعات بیشتر درباره GameActivity، موارد زیر را ببینید:

بازخورد

برای گزارش اشکالات یا درخواست ویژگی‌های جدید برای GameActivity، از ردیاب مشکل GameActivity استفاده کنید.