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, שפועל בעיקר ב-thread מקורי משלו (שונה מה-thread הראשי של האפליקציה), ומבצע משימות באמצעות ה-looper שלו.
    • קוד המשחק של האפליקציה, שמבצע שאילתות ומעבד את האירועים שמוכנסים לתור בתוך 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 הן חלק מהמסגרת (נטענות תמיד על ידי מערכת ההפעלה). לכן, רק הקוד של native_app_glue ושל האפליקציה ב-C/C++‎ אמור להיבנות לספרייה אחת.
  • NativeActivity הוא חלק ממסגרת Android ופועל לפי מחזור ההפצה שלה (בדרך כלל שנתי). ‫GameActivity הוא חלק מספריית Jetpack, שבה מחזור השחרור הרבה יותר תדיר (בדרך כלל אחת לשבועיים). כך אפשר לקבל תכונות חדשות ותיקוני באגים הרבה יותר מהר.

הפצת מיקומים

הספרייה GameActivity זמינה בערוצים הבאים:

קוד C/C++ מסופק כקוד מקור בכל ערוצי ההפצה, בפורמט Prefab. בגרסה 1.2.2 של GameActivity נוספה לספרייה סטטית להפצה. החל מגרסה זו ואילך, מומלץ להשתמש בספרייה הסטטית במקום בקוד המקור.

התוכן של ספריית Jetpack

הספרייה Jetpack,‏ 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 תמיד מופיע קוד המקור העדכני ביותר. כדי ליצור גרסאות משלכם או לשלב ישירות את קוד המקור בסביבת הפיתוח, צריך לפעול לפי [ההוראות ליצירת גרסה][GameActivity implementation]{: .external}. קוד המקור של C/C++‎ נשמר במבנה קבצים שדומה לספריית Jetpack.

מדריכי שילוב

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

מקורות מידע נוספים

מידע נוסף על GameActivity זמין במקורות הבאים:

משוב

כדי לדווח על באגים או לבקש תכונות חדשות ב-GameActivity, אפשר להשתמש בכלי למעקב אחר בעיות ב-GameActivity.