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 (توصیه می شود)
- به عنوان یک بسته فشرده، قابل دانلود از صفحه دانلود AGDK
- به عنوان کد منبع AOSP
کد C/C++ به عنوان کد منبع در همه کانالهای انتشار با استفاده از قالب Prefab ارائه میشود. GameActivity نسخه 1.2.2 یک کتابخانه ثابت به توزیع اضافه می کند. با شروع با این نسخه و نسخه های بعدی، توصیه می کنیم به جای کد منبع از کتابخانه ایستا استفاده کنید.
محتویات کتابخانه Jetpack و بسته فشرده AGDK
با کتابخانه Jetpack و کانال های بسته فشرده AGDK، 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 مراجعه کنید.
برای بسته فشرده کتابخانه AGDK ، این مراحل را دنبال کنید تا کد C/C++ را دریافت کنید:
- بسته دانلود شده را از حالت فشرده خارج کنید.
- در بسته زیپ نشده، GameActivity-release.aar را از حالت فشرده خارج کنید.
- همه کد منبع C/C++ را در
prefab/modules/game-activity/include
پیدا و کپی کنید، شامل موارد زیر است:-
game-activity
برای کد C/C++ مربوط بهGameActivity
-
game-text-input
برای کد C/C++ مربوط بهGameTextInput
-
محتوای کد منبع AOSP
AOSP همیشه حاوی جدیدترین کد منبع است. دستورالعمل های ساخت را دنبال کنید تا نسخه های خود را ایجاد کنید یا منبع را مستقیماً در محیط ساخت خود ادغام کنید. کد منبع C/C++ در یک ساختار فایل شبیه به آنهایی که برای کتابخانه Jetpack و بسته فشرده AGDK ذخیره می شود.
راهنمای ادغام
برای ادغام GameActivity
در برنامه های خود این راهنماها را دنبال کنید:
منابع اضافی
برای کسب اطلاعات بیشتر در مورد GameActivity
، به موارد زیر مراجعه کنید:
- یادداشت های انتشار GameActivity و AGDK .
- از GameTextInput در GameActivity استفاده کنید .
- راهنمای مهاجرت NativeActivity .
- مستندات مرجع GameActivity
- اجرای GameActivity
بازخورد
برای گزارش اشکال یا درخواست ویژگیهای جدید به GameActivity، از ردیاب مشکل GameActivity استفاده کنید.
،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 (توصیه می شود)
- به عنوان یک بسته فشرده، قابل دانلود از صفحه دانلود AGDK
- به عنوان کد منبع AOSP
کد C/C++ به عنوان کد منبع در همه کانالهای انتشار با استفاده از قالب Prefab ارائه میشود. GameActivity نسخه 1.2.2 یک کتابخانه ثابت به توزیع اضافه می کند. با شروع با این نسخه و نسخه های بعدی، توصیه می کنیم به جای کد منبع از کتابخانه ایستا استفاده کنید.
محتویات کتابخانه Jetpack و بسته فشرده AGDK
با کتابخانه Jetpack و کانال های بسته فشرده AGDK، 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 مراجعه کنید.
برای بسته فشرده کتابخانه AGDK ، این مراحل را دنبال کنید تا کد C/C++ را دریافت کنید:
- بسته دانلود شده را از حالت فشرده خارج کنید.
- در بسته زیپ نشده، GameActivity-release.aar را از حالت فشرده خارج کنید.
- همه کد منبع C/C++ را در
prefab/modules/game-activity/include
پیدا و کپی کنید، شامل موارد زیر است:-
game-activity
برای کد C/C++ مربوط بهGameActivity
-
game-text-input
برای کد C/C++ مربوط بهGameTextInput
-
محتوای کد منبع AOSP
AOSP همیشه حاوی جدیدترین کد منبع است. دستورالعمل های ساخت را دنبال کنید تا نسخه های خود را ایجاد کنید یا منبع را مستقیماً در محیط ساخت خود ادغام کنید. کد منبع C/C++ در یک ساختار فایل شبیه به آنهایی که برای کتابخانه Jetpack و بسته فشرده AGDK ذخیره می شود.
راهنمای ادغام
برای ادغام GameActivity
در برنامه های خود این راهنماها را دنبال کنید:
منابع اضافی
برای کسب اطلاعات بیشتر در مورد GameActivity
، به موارد زیر مراجعه کنید:
- یادداشت های انتشار GameActivity و AGDK .
- از GameTextInput در GameActivity استفاده کنید .
- راهنمای مهاجرت NativeActivity .
- مستندات مرجع GameActivity
- اجرای GameActivity
بازخورد
برای گزارش اشکال یا درخواست ویژگیهای جدید به GameActivity، از ردیاب مشکل GameActivity استفاده کنید.