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

همانطور که در نمودار بالا نشان داده شده است، GameActivity عملکردهای زیر را انجام می دهد:
- تعامل با فریم ورک اندروید از طریق کامپوننت جاوا.
- ارسال دستورات چرخه برنامه، رویدادهای ورودی و متن ورودی به سمت اصلی.
- مدل سازی کد منبع C/C++ به سه جزء منطقی:
- توابع JNI GameActivity که مستقیماً از عملکرد جاوا GameActivity پشتیبانی می کند و رویدادها را در
native_app_glueقرار می دهد. -
native_app_glue، که بیشتر در رشته اصلی خود (متفاوت از رشته اصلی برنامه) اجرا می شود و وظایف را با حلقه خود اجرا می کند. - کد بازی برنامه، که رویدادهای ردیف شده در داخل
native_app_glueنظرسنجی و پردازش می کند و کد بازی را در رشتهnative_app_glueاجرا می کند.
- توابع JNI GameActivity که مستقیماً از عملکرد جاوا GameActivity پشتیبانی می کند و رویدادها را در
با GameActivity ، می توانید بر روی توسعه بازی اصلی خود تمرکز کنید و از صرف زمان زیاد برای مقابله با کد JNI خودداری کنید.
اگر قبلاً با NativeActivity آشنا هستید، تفاوت های عمده بین GameActivity و NativeActivity به شرح زیر است:
-
GameActivityبهSurfaceViewتبدیل می شود و تعامل بازی ها با سایر اجزای رابط کاربری را بسیار آسان تر می کند. - برای رویدادهای ورودی لمسی و کلیدی،
GameActivityیک پیاده سازی کاملاً جدید با رابطandroid_input_bufferدارد، جدا ازInputQueueکهNativeActivityاستفاده می کند. -
GameActivityیک کلاس مشتق شده ازAppCompatActivityاست که به شما امکان می دهد به طور یکپارچه از سایر اجزای Jetpack استفاده کنید.ActionBar،Fragmentو موارد دیگر همگی در دسترس هستند. -
GameActivityعملکرد ورودی متن را با ادغام کتابخانه GameTextInput اضافه می کند. - برنامه های مشتق شده از
GameActivityانتظار می رود هر سه بخش کد C/C++ را در یک کتابخانه بسازند. از سوی دیگر، توابع JNINativeActivityبخشی از چارچوب هستند (همیشه توسط سیستم عامل بارگذاری می شوند). از این رو، انتظار می رود که فقطnative_app_glueو کد C/C++ برنامه در یک کتابخانه ساخته شوند. -
NativeActivityبخشی از چارچوب اندروید است و از چرخه انتشار آن (معمولا سالانه) پیروی می کند.GameActivityبخشی از کتابخانه Jetpack است که چرخه انتشار بسیار بیشتری دارد (معمولاً هر دو هفته). ویژگیهای جدید و رفع اشکال میتوانند خیلی سریعتر وارد شوند.
مکانهای انتشار
کتابخانه GameActivity در کانال های زیر موجود است:
- به عنوان بخشی از کتابخانه Android Jetpack (توصیه می شود)
- به عنوان کد منبع AOSP
کد C/C++ به عنوان کد منبع در همه کانالهای انتشار با استفاده از قالب Prefab ارائه میشود. GameActivity نسخه 1.2.2 یک کتابخانه ثابت به توزیع اضافه می کند. با شروع با این نسخه و نسخه های بعدی، توصیه می کنیم به جای کد منبع از کتابخانه ایستا استفاده کنید.
محتویات کتابخانه Jetpack
با کتابخانه Jetpack، GameActivity با AAR منتشر می شود. این AAR شامل اجزای اصلی زیر است:
- یک فایل JAR برای کد جاوا
- کتابخانه استاتیک C/C++
game-activity_staticهمراه با GameActivity نسخه 1.2.2 و جدیدتر موجود است. - کد منبع 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 همیشه حاوی جدیدترین کد منبع است. [دستورالعملهای ساخت[پیادهسازی GameActivity]{: .external} را دنبال کنید تا نسخههای خود را ایجاد کنید یا منبع را مستقیماً در محیط ساخت خود ادغام کنید. کد منبع C/C++ در ساختار فایلی مشابه کتابخانه Jetpack ذخیره می شود.
راهنمای ادغام
برای ادغام GameActivity در برنامه های خود این راهنماها را دنبال کنید:
منابع اضافی
برای کسب اطلاعات بیشتر در مورد GameActivity ، به موارد زیر مراجعه کنید:
- یادداشت های انتشار GameActivity و AGDK .
- از GameTextInput در GameActivity استفاده کنید .
- راهنمای مهاجرت NativeActivity .
- مستندات مرجع GameActivity
- اجرای GameActivity
بازخورد
برای گزارش اشکال یا درخواست ویژگیهای جدید به GameActivity، از ردیاب مشکل GameActivity استفاده کنید.