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 נוספה ספרייה סטטית להפצה. החל מהגרסה הזו ואילך, מומלץ להשתמש בספרייה הסטטית במקום בקוד המקור.

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