GameActivity חלק מ-Android Game Development Kit.
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 framework ופועל לפי מחזור ההשקות שלו (בדרך כלל שנתי).GameActivity
הוא חלק מספריית Jetpack, שתדירות ההשקות שלה גבוהה בהרבה (בדרך כלל פעם בשבועיים). כך, תכונות חדשות ותיקוני באגים יכולים להגיע הרבה יותר מהר.
מיקומי פרסום
הספרייה GameActivity
זמינה בערוצים הבאים:
- כחלק מספריית Android Jetpack (מומלץ)
- כקוד מקור של AOSP
קוד ה-C/C++ מסופק כקוד מקור בכל ערוצי הגרסאות, באמצעות הפורמט Prefab. בגרסה 1.2.2 של GameActivity נוספת ספרייה סטטית להפצה. החל מהגרסה הזו ואילך, מומלץ להשתמש בספרייה הסטטית במקום בקוד המקור.
התוכן של ספריית Jetpack וחבילת ה-zip של AGDK
בספריית Jetpack ובערוצים של חבילות ה-zip של AGDK, ה-GameActivity משוחרר באמצעות AAR. קובץ ה-AAR הזה מכיל את הרכיבים העיקריים הבאים:
- קובץ JAR לקוד Java
- הספרייה הסטטית של C/C++
game-activity_static
כלולה ב-GameActivity בגרסה 1.2.2 ואילך. - קוד מקור של C/C++ (בתיקייה
/prefab
)
בהוראות השילוב שמופיעות בקישור מהדף הזה, ההנחה היא שאפשר להשתמש ב-Prefab במערכת ה-build. אחרת, אפשר להעתיק את קוד המקור שנארז בתיקייה prefab/modules/game-activity/include
למערכת ה-build ולבצע את שלבי השילוב הנדרשים. מבנה קובץ דומה קיים גם לגרסאות שמופיעות בקטע androidx
בספריית Android Jetpack. כברירת מחדל, Gradle פותח את קובצי ה-AAR בספריית המטמון שלו (~/.gradle/caches/…). כדי למצוא את קוד המקור של C/C++, מחפשים את prefab/modules/game-activity/include
ובוחרים את המיקום שמתאים לגרסה שלכם.
הוראות לשילוב באמצעות ספריית Jetpack מפורטות במאמר תחילת העבודה עם GameActivity.
התוכן של קוד המקור של AOSP
קוד המקור העדכני ביותר תמיד נמצא ב-AOSP. פועלים לפי הוראות ה-build כדי ליצור גרסאות משלכם או לשלב את המקור ישירות בסביבת ה-build. קוד המקור של C/C++ נשמר במבנה קובץ שדומה למבנה של ספריית Jetpack וחבילת ה-zip של AGDK.
מדריכים לשילובים
כדי לשלב את GameActivity
באפליקציות, פועלים לפי המדריכים הבאים:
מקורות מידע נוספים
מידע נוסף על GameActivity
זמין במאמרים הבאים:
- נתוני הגרסה של GameActivity ו-AGDK
- שימוש ב-GameTextInput ב-GameActivity
- מדריך להעברת נתונים (מיגרציה) של NativeActivity
- חומר עזר בנושא GameActivity
- הטמעת GameActivity
משוב
כדי לדווח על באגים או לבקש תכונות חדשות ל-GameActivity, אפשר להשתמש בכלי למעקב אחר בעיות ב-GameActivity.