GameActivity   חלק מ-Android Game Development Kit.

GameActivity היא ספריית Jetpack שמיועדת לעזור למשחקים ל-Android לעבד פקודות של מחזור אפליקציה, אירועי קלט וקלט טקסט בקוד C/C++ של האפליקציה. GameActivity היא צאצאית ישירה של NativeActivity, ויש לה ארכיטקטורה דומה:

alt_text

כפי שמוצג בתרשים שלמעלה, GameActivity מבצע את הפונקציות הבאות:

  • אינטראקציה עם מסגרת Android דרך הרכיב בצד Java.
  • העברת פקודות של מחזור החיים של האפליקציה, אירועי קלט וטקסט קלט לצד הנייטיב.
  • בניית מודל של קוד מקור ב-C/C++ בשלושה רכיבים לוגיים:
    • פונקציות ה-JNI של GameActivity, שתומכות ישירות בפונקציונליות של Java ב-GameActivity ומוסיפות את האירועים לתור ב-native_app_glue.
    • native_app_glue, שפועל בעיקר בשרשור מקורי משלו (שונה מהשרשור הראשי של האפליקציה) ומבצע משימות באמצעות הלולאה שלו.
    • קוד המשחק של האפליקציה, שמבצע סקרים ומעבד את האירועים שנמצאים בתור ב-native_app_glue ומריץ את קוד המשחק בתוך השרשור native_app_glue.

בעזרת 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 זמינה בערוצים הבאים:

קוד ה-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, אפשר להשתמש בכלי למעקב אחר בעיות ב-GameActivity.