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
, שפועל בעיקר ב-thread מקורי משלו (שונה מה-thread הראשי של האפליקציה), ומבצע משימות באמצעות ה-looper שלו. - קוד המשחק של האפליקציה, שמבצע שאילתות ומעבד את האירועים שמוכנסים לתור בתוך
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
הן חלק מהמסגרת (נטענות תמיד על ידי מערכת ההפעלה). לכן, רק הקוד שלnative_app_glue
ושל האפליקציה ב-C/C++ אמור להיבנות לספרייה אחת. -
NativeActivity
הוא חלק ממסגרת Android ופועל לפי מחזור ההפצה שלה (בדרך כלל שנתי). GameActivity
הוא חלק מספריית Jetpack, שבה מחזור הפרסום הרבה יותר תכוף (בדרך כלל אחת לשבועיים). כך אפשר לקבל תכונות חדשות ותיקוני באגים הרבה יותר מהר.
הפצת מיקומים
הספרייה GameActivity
זמינה בערוצים הבאים:
- כחלק מספריית Android Jetpack (מומלץ)
- כקוד מקור של AOSP
קוד C/C++ מסופק כקוד מקור בכל ערוצי ההפצה, בפורמט Prefab. בגרסה 1.2.2 של GameActivity נוספה ספרייה סטטית להפצה. החל מהגרסה הזו ואילך, מומלץ להשתמש בספרייה הסטטית במקום בקוד המקור.
התוכן של חבילת ה-ZIP של AGDK וספריית Jetpack
הספרייה Jetpack וערוצי חבילת ה-zip של AGDK מאפשרים הפצה של GameActivity עם AAR. קובץ ה-AAR הזה מכיל את הרכיבים העיקריים הבאים:
- קובץ JAR לקוד Java
- הספרייה הסטטית 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 תמיד מופיע קוד המקור העדכני ביותר. כדי ליצור גרסאות משלכם או לשלב ישירות את המקור בסביבת הפיתוח, פועלים לפי ההוראות ליצירה. קוד המקור של C/C++ נשמר במבנה קבצים דומה לזה של ספריית Jetpack וחבילת ה-ZIP של AGDK.
מדריכי שילוב
כדי לשלב את GameActivity
באפליקציות שלכם, פועלים לפי המדריכים האלה:
מקורות מידע נוספים
מידע נוסף על GameActivity
זמין במקורות הבאים:
- נתוני גרסה של GameActivity ו-AGDK
- שימוש ב-GameTextInput ב-GameActivity.
- מדריך להעברת נתונים (מיגרציה) של NativeActivity
- מאמרי העזרה של GameActivity
- הטמעה של GameActivity.
משוב
כדי לדווח על באגים או לבקש תכונות חדשות ב-GameActivity, אפשר להשתמש בכלי למעקב אחר בעיות ב-GameActivity.