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 תמיד מופיע קוד המקור העדכני ביותר. כדי ליצור גרסאות משלכם או לשלב את הקוד ישירות בסביבת build, צריך לפעול לפי ההוראות ליצירת גרסאות. קוד המקור של C/C++‎ נשמר במבנה קבצים שדומה לספריית Jetpack.

מדריכי שילוב

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

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

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

משוב

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