GameActivity بخشی از کیت توسعه بازی Android است.
GameActivity کتابخانه Jetpack است که برای کمک به بازیهای Android در پردازش دستورات چرخه برنامه، رویدادهای ورودی، و ورودی نوشتاری در کد C/C++ برنامه طراحی شده است. GameActivity از نوادگان مستقیم
NativeActivity است و معماری مشابهی دارد:

همانطور که در نمودار بالا نشان داده شده است، GameActivity عملکردهای زیر را انجام میدهد:
- تعامل با چارچوب Android ازطریق عنصر سمت Java.
- انتقال دستورات چرخه برنامه، رویدادهای ورودی، و نوشتار ورودی به سمت بومی.
- مدلسازی کد منبع C/C++ در سه مؤلفه منطقی:
- توابع JNI مربوط به GameActivity که مستقیماً از عملکرد Java مربوط به GameActivity پشتیبانی میکنند و رویدادها را در
native_app_glueدر صف قرار میدهند. -
native_app_glueکه بیشتر در رشته بومی خود اجرا میشود (متفاوت از رشته اصلی برنامه)، و وظایف را با حلقه خود اجرا میکند. - کد بازی برنامه که رویدادهای در صف را نظرسنجی و پردازش میکند
درون
native_app_glueو کد بازی را در رشتهnative_app_glueاجرا میکند.
- توابع JNI مربوط به GameActivity که مستقیماً از عملکرد Java مربوط به GameActivity پشتیبانی میکنند و رویدادها را در
با 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 در کانالهای زیر دردسترس است:
- بهعنوان بخشی از کتابخانه Android Jetpack (توصیه میشود)
- بهعنوان AOSP کد منبع
کد 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 و AGDK.
- از GameTextInput در GameActivity استفاده کنید.
- راهنمای انتقال NativeActivity.
- مستندات مرجع GameActivity.
- پیادهسازی GameActivity.
بازخورد
برای گزارش اشکالات یا درخواست ویژگیهای جدید برای GameActivity، از ردیاب مشکل GameActivity استفاده کنید.