פיתוח באמצעות אמולטור למפתחים של Google Play Games במחשב

האמולטור למפתחים של Google Play Games במחשב הוא אמולטור שמתמקד במפתחים של Google Play Games במחשב. בניגוד לחוויית המשתמש בנגן, אתם יכולים להתקין ולפתור באגים בחבילות משלכם. אפשר גם לדמות הגדרות שונות של נגן, כמו יחס גובה-רוחב, הדמיה של עכבר וצד לקוח של גרפיקה, כדי לוודא שהמשחק פועל כצפוי במגוון הגדרות של מחשבים.

הפעלת האמולטור

בסיום ההתקנה, יופיע בתפריט ההתחלה האלמנט 'Google Play Games Developer Emulator' (המכונה של Google Play Games למפתחים) וקיצוץ דרך לשולחן העבודה להפעלת המכונה. הסימולטור יישאר במגש המערכת כשסוגרים את החלון.

כניסה

בפעם הראשונה שתפעילו את הסימולטור, תתבקשו להיכנס לחשבון Google. משתמשים באותם פרטי כניסה שאתם מתכננים להשתמש בהם לפיתוח.

כדי לצאת מהחשבון, לוחצים לחיצה ימנית על הסמל בסרגל האפליקציות, בוחרים באפשרות אפשרויות למפתחים ואז לוחצים על אילוץ יציאה מהחשבון. לאחר מכן, הסימולטור יופעל מחדש באופן מיידי ותתבקשו להיכנס שוב לחשבון.

אחרי ההפעלה, יוצג מסך בית אופייני ל-Android. לחיצות על לחצן העכבר הימני מתורגמות ישירות להקשות על האצבע, כמו במצב אמולציה של עכבר. משחקים שהותקנו דרך ה-Sideload לצורך פיתוח מופיעים ברשימת האפליקציות. כדי להגיע אליה, לוחצים וגוררים למעלה במחשב (חיקוי של החלקה למעלה בטלפון או בטאבלט).

בנוסף לתרגום בעכבר, באמולטור למפתחים של Google Play Games במחשב יש מקשי קיצור שיעזרו לכם לנווט:

  • ctrl + h: מקישים על לחצן הבית
  • ctrl + b: מקישים על לחצן החזרה אחורה
  • F11 או Alt + Enter: מעבר בין מצב מסך מלא למצב חלון
  • shift + tab: פתיחת שכבת-העל של Google Play Games on PC, כולל המיפויים הנוכחיים של המקשים ל-Input SDK

התקנת משחק

אמולטור למפתחים של Google Play Games במחשב משתמש ב-Android Debug Bridge‏ (adb) כדי להתקין חבילות.

תאימות ל-adb

הגרסאות הנוכחיות של adb תואמות לאמולטור למפתחים של Google Play Games במחשב. בנוסף, גרסה תואמת מותקנת ב-C:\Program Files\Google\Play Games Developer Emulator\current\emulator כשמתקינים את הסימולטור.

כדי לפעול לפי ההוראות האלה, צריך שהתוכנה adb תהיה זמינה ב-$PATH. אפשר לבדוק שהאפשרות adb מוגדרת בצורה נכונה באמצעות הפקודה adb devices

adb devices
List of devices attached
localhost:6520  device

התקנת המשחק

  • הפעלת Google Play Games for PC Emulator
  • מקלידים adb devices בשורת הפקודה. אמורים להופיע הפרטים הבאים:

    adb devices
    List of devices attached
    localhost:6520 device
  • פתרון בעיות:

    • אם מופיעה הודעת שגיאה, מוודאים שפעלתם לפי ההוראות במאמר תאימות ל-adb.
    • אם המכשיר לא מופיע, מנסים להתחבר מחדש דרך השקע 6520:
    adb connect localhost:6520
  • מקלידים adb install path\to\your\game.apk כדי להתקין את המשחק. אם יצרתם Android App Bundle ‏ (aab), תוכלו לעיין בהוראות ל-bundletool ולהשתמש ב-bundletool install-apks במקום זאת.

  • כדי להפעיל את המשחק, אפשר:

    • מקלידים adb shell monkey -p your.package.name 1 כדי להריץ את המשחק, ומחליפים את your.package.name בשם החבילה של המשחק.
    • באמולטור למפתחים של Google Play Games במחשב, לוחצים על הסמל כדי להפעיל את המשחק. בדיוק כמו בטלפון Android, צריך "להחליק למעלה" במסך הבית כדי לראות את רשימת המשחקים המותקנים.

ניפוי באגים במשחק

משתמשים ב-ממשק הגישור של Android‏ (adb) כדי לנפות באגים, כמו בכל משחק אחר. הסימולטור מופיע כמכשיר שמחובר דרך localhost:6520.

הפונקציה adb logcat פועלת כמצופה, וכך גם כלים שיעזרו לכם לשפר את המראה של הפלט של logcat או לסנן אותו – כולל Android Studio.

בנוסף ל-adb, אפשר לגשת ליומנים גם בתיקייה %LOCALAPPDATA%\Google\Play Games Developer Emulator\Logs. הערך הכי שימושי כאן הוא AndroidSerial.log, שמייצג את כל מה ש-adb logcat ידפיס מהרגע שבו מפעילים את הסימולטור.

הגדרות למפתחים

אמולטור למפתחים של Google Play Games במחשב מתמקד ביעילות של המפתחים ולא בחוויית משתמשי הקצה. המשמעות היא שיש לכם גישה ללא הפרעה למערכת Android, כולל שימוש במרכז האפליקציות הרגיל של Android במקום בחוויית Google Play Games במחשב, ושליטה בתכונות שהשחקנים מפעילים או משביתים באופן אוטומטי.

בדיקת קלט מהעכבר

במהלך הפיתוח, ברירת המחדל של אמולטור Google Play Games למפתחים במחשב היא אמולציית מגע, במקום קלט ישיר של עכבר. כדי להפעיל קלט ישיר מהעכבר, לוחצים לחיצה ימנית על הסמל בסרגל האפליקציות, בוחרים באפשרות Developer Options ואז באפשרות PC mode (KiwiMouse).

ב-Google Play Games במחשב יש שני מצבי עכבר: מצב אמולציה שממיר לחיצות על העכבר להקשות בודדות, ומצב 'מעבר' (passthrough) שנקרא 'מצב מחשב' שמאפשר למשחקים לטפל בפעולות של העכבר באופן מקורי ולבצע צילום של הסמן. לפרטים על קלט של עכבר ב-Google Play Games במחשב, אפשר לעיין במאמר הגדרת קלט של עכבר.

כדי להשבית את ההדמיה בלקוח הנגן, מוסיפים את הטקסט הבא למניפסט:

<manifest ...>
  <uses-feature
      android:name="android.hardware.type.pc"
      android:required="false" />
  ...
</manifest>

לדגל התכונה הזה אין השפעה בסביבת הפיתוח.

בדיקת יחסי גובה-רוחב

אמולטור המפתחים מופעל ביחס גובה-רוחב של 16:9, בניגוד ללקוח הנגן שיחס הגובה-רוחב שלו נגזר מהמסך הראשי. כדי לבדוק איך המשחק נראה במסכים של נגנים שונים, לוחצים לחיצה ימנית על הסמל במגש המערכת, בוחרים באפשרות אפשרויות למפתחים ואז באפשרות כלשהי בקטע יחס גובה-רוחב.

השיטה המועדפת להגדרת יחס הגובה-רוחב היא להשתמש ב-android:minAspectRatio וב-android:maxAspectRatio.

לדוגמה, למשחק בפריסה לאורך יהיה יחס גובה-רוחב של 9/16 או 0.5625, לכן מומלץ להגדיר יחס גובה-רוחב מקסימלי של 1 כדי למנוע מצב שבו המשחק יהיה רחב יותר מריבוע:

<activity android:maxAspectRatio="1">
 ...
</activity>

באופן דומה, משחק בפורמט לרוחב יהיה ביחס גובה-רוחב של 16/9 או בערך 1.778, לכן מומלץ להגדיר יחס גובה-רוחב מינימלי של 1 כדי למנוע ממנו להיות צר יותר מריבוע:

<activity android:minAspectRatio="1">
 ...
</activity>

מה כדאי לבדוק

אם המשחק תומך רק במצבים אנכיים במניפסט, אפשר לבחור באפשרות 9:16 (Portrait) בתפריט הנפתח כדי לראות איך הוא נראה במחשבים של השחקנים. אחרת, צריך לוודא שהמשחק פועל ביחסי הגובה-רוחב הרחבים והצרים ביותר בפורמט לרוחב שתומכים בהם במניפסט, תוך התחשבות בכך ש16:9 (ברירת המחדל) (או 9:16 (Portrait) אם המשחק הוא אנכי בלבד) נדרש לקבלת אישור מלא.

בדיקת הקצוות העורפיים של העיבוד

ב-Google Play Games במחשב נעשה שימוש ב-Vulkan כדי ליצור את הגרפיקה של המשחקים. Vulkan הוא רכיב נפוץ בסביבות Android ו-PC. שכבת ארגז חול משמשת לבידוד הסביבות של המחשב ושל Android. מאחר שעדיין יש משחקים רבים שמשתמשים ב-OpenGL ES לצורך עיבוד, ANGLE ממירה פקודות OpenGL ES לפקודות Vulkan שתואמות למחשב המארח.

באופן דומה, Google Play Games במחשב מגדיל את תאימות המשחקים ומצמצם את המאמץ של המפתחים על ידי המרה אוטומטית של פורמטים של טקסטורות שמתאימים לנייד, כמו ETC1 ו-ETC2, לפורמטים שמתאימים למחשב במהלך זמן הריצה. כדי לקבל את התוצאות הטובות ביותר, מומלץ להימנע מההמרה הזו ולהשתמש בפורמטים שנתמכים על ידי מעבדי GPU במחשבים, כמו DXTC או BPTC.

מה כדאי לבדוק

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

ההמרה של פקודות OpenGL ES ל-Vulkan על ידי ANGLE תוסיף קצת זמן אחזור. מוודאים שאתם עומדים ביעדי הביצועים הצפויים, ומחליטים אם לעבור למעבד גרפיקה שמבוסס על Vulkan.

יצירת פרופיל של המשחק במחשב

מאחר שהמכונה הווירטואלית משתמשת באותה טכנולוגיה כמו לקוח הצרכן, היא סביבה מתאימה ליצירת פרופיל ביצועים.

Perfetto הוא כלי לניתוח ביצועים ב-Android. כדי לאסוף ולראות מעקב Perfetto:

  1. בהנחיה של PowerShell, מתחילים מעקב באמצעות adb

    adb shell perfetto --time 10s gfx wm sched --out /data/misc/perfetto-traces/example.trace
    
    1. הדגל --time מציין את משך הזמן של המעקב אחרי הנתונים. בדוגמה הזו, המעקב נמשך 10 שניות.
    2. הארגומנטים אחרי הדגל --time מציינים אילו אירועים צריך לעקוב אחריהם. בדוגמה הזו, gfx מציין נתונים גרפיים, wm ניהול חלונות ו-sched תזמון תהליכים. אלה דגלים נפוצים ליצירת פרופיל של משחקים, ויש חומר עזר מלא בנושא.
    3. הדגל --out מציין את קובץ הפלט, שיוצא מהמכונה הווירטואלית למכונה המארחת בשלב הבא.
  2. אחזור המעקב מהמארח

    adb pull /data/misc/perfetto-traces/example.trace $HOME/Downloads/example.trace
    
  3. פתיחת המעקב בממשק המשתמש של Perfetto

    1. פותחים את ui.perfetto.dev.
    2. בוחרים באפשרות פתיחת קובץ המעקב בפינה הימנית העליונה בקטע ניווט.
    3. פותחים את הקובץ example.trace שהורדתם בשלב הקודם בספרייה Downloads/.
  4. בודקים את המעקב בממשק המשתמש של Perfetto. טיפים:

    1. לכל תהליך יש שורה משלו, שאפשר להרחיב כדי להציג את כל השרשור בתהליך הזה. אם אתם מבצעים ניתוח פרופיל של משחק, סביר להניח שהתהליך שלו יופיע בשורה הראשונה.
    2. כדי להגדיל או להקטין את התצוגה, לוחצים על Control ומשתמשים בגלגל הגלילה.
    3. כשמשתמשים באירוע sched, מוצגת שורה לכל חוט שמציינת מתי המצב של החוט הוא 'פעיל', 'ניתן להפעלה', 'במצב שינה' או 'חסום'.
    4. כשמפעילים אירוע כמו gfx, אפשר לראות את הקריאות השונות ליצירת גרפיקה שבוצעו על ידי שרשורים שונים. אפשר לבחור 'פלחים' ספציפיים כדי לראות כמה זמן הם נמשכו, או לגרור שורה כדי לפתוח את הקטע 'פלחים' בתחתית המסך. הקטע הזה יציג את משך הזמן של כל הפלחים בחלון הזמן שנבחר.

יצירת פרופילים של גרפיקה

אפשר לבצע ניתוח פרופיל של גרפיקה באמצעות RenderDoc.

  1. מגדירים את משתנה הסביבה ANDROID_EMU_RENDERDOC למחרוזת לא ריקה (למשל "1").
  2. מגדירים את משתנה הסביבה TMP לערך %USERPROFILE%\AppData\LocalLow. כך תורה ל-Renderdoc למקם את קובצי היומן שלה במקום נגיש בתוך ארגז החול של המהדר.

  3. אם אתם משתמשים בקצה העורפי של Vulkan. בוחרים באפשרות Graphics Settings (הגדרות גרפיקה) > Vulkan Instance Implicit Layers (שכבות משתמעות של מכונות Vulkan) ומוודאים שהאפשרות VKLAYER_RENDERDOC_Capture מסומנת.

  4. מריצים את Google Play Games במחשב עם אמולטור למפתחים. שכבת-על של RenderDoc תופיע בחלק העליון של המסך כל עוד התמיכה מופעלת.

  5. אפשר להפעיל את RenderDoc מתי שרוצים, לפני או אחרי ההפעלה של אמולטור הפיתוח של Google Play Games במחשב.

  6. לוחצים על File (קובץ) > Attach to Running Instance (צירוף למכונה שפועלת) ובוחרים באפשרות crosvm.

ציון משתני סביבה

כדי ש-Renderdoc יפעל, צריך להוסיף או לשנות משתני סביבה ב-Windows. אפשר לשנות את משתני הסביבה באמצעות ממשק המשתמש, PowerShell או cmd.exe.

שימוש בממשק המשתמש
  • מקישים על Win+R כדי לפתוח את תיבת הדו-שיח 'הפעלה'.
  • מקלידים sysdm.cpl כדי לפתוח את החלון מאפייני המערכת.
  • בוחרים בכרטיסייה Advanced (מתקדם) אם היא לא פעילה.
  • לוחצים על הלחצן Environment Variables.

מכאן אפשר ללחוץ על הלחצן New כדי ליצור משתנה סביבה חדש, או לבחור משתנה וללחוץ על הלחצן Edit כדי לערוך אותו.

שימוש ב-PowerShell

בחלון PowerShell, מקלידים:

$Env:VARIABLE_NAME=VALUE

מחליפים את VARIABLE_NAME ו-VALUE בערכים שרוצים להגדיר. לדוגמה, כדי להגדיר את ANDROID_EMU_RENDERDOC כ-"1", מקלידים:

$Env:ANDROID_EMU_RENDERDOC="1"
שימוש ב-cmd.exe

בחלון cmd.exe, מקלידים:

set VARIABLE_NAME=VALUE

מחליפים את VARIABLE_NAME ו-VALUE בערכים שרוצים להגדיר. לדוגמה, כדי להגדיר את ANDROID_EMU_RENDERDOC כ-"1", מקלידים:

set ANDROID_EMU_RENDERDOC="1"

טיפים ל-Android מגרסה 11 (רמת API 30) ואילך

Google Play Games במחשב מתעדכן עם הגרסאות האחרונות של Android. ריכזנו כאן כמה טיפים לעבודה עם הגרסה האחרונה של Android.

עדכון הכלים

Android Studio מתקין גרסה של adb שתואמת למה שמופיע במהדמטור למפתחים. עם זאת, חלק ממנועים של משחקים כוללים גרסה ישנה יותר של adb. במקרה כזה, אחרי שתתקינו את המהדמ של המפתח, תוכלו למצוא גרסה תואמת של adb בכתובת C:\Program Files\Google\Play Games Developer Emulator\current\emulator.

אם מפעילים גרסה אחת של adb, היא מסיימת את הגרסה השנייה. כלומר, אם מנוע המשחקים מפעיל באופן אוטומטי מכונה משלו של adb, יכול להיות שתצטרכו להפעיל מחדש את הגרסה של adb שמגיעה עם אמולטור הפיתוח ולחבר אותה מחדש בכל פריסה.

אם אתם משתמשים ב-Android App Bundle, עליכם להתקין את הגרסה האחרונה של Bundletool ממאגר GitHub.

נפח אחסון ייעודי לאפליקציות

Android מגרסה 11 ואילך (רמת API ‏30 ואילך) כולל נפח אחסון ייעודי לאפליקציות, שמספק הגנה טובה יותר על נתוני האפליקציות והמשתמשים באחסון חיצוני. בנוסף להפיכת המשחק לתואם לדרישות האחסון המותנות, צריך לבצע שלבים נוספים כדי לטעון קובצי הרחבה של APK (obb) או נתוני נכסים למהדר למפתחים של Google Play Games במחשב. אם תיתקלו בבעיות בגישה לקבצים האלה מהמשחק, תוכלו לפעול לפי השלבים הבאים:

  1. יוצרים ספרייה שהאפליקציה יכולה לקרוא.
  2. מעבירים את קובצי ההרחבה למהדר.
adb shell mkdir /sdcard/Android/obb/com.example.game
adb push main.com.example.game.obb /sdcard/Android/obb/com.example.game

הרשאות גישה לחבילה

בגלל הכללים החדשים של הצגת החבילה, אפליקציות שמטרגטות את Android 11 (רמת API 30) ומעלה חסרות אפשרות לשלוח שאילתות לקבלת מידע על האפליקציות האחרות שמותקנות במכשיר. כלומר, המשחק שלכם לא יכול לגשת ל-Play Services כשאתם מתקינים אותו דרך adb במקום דרך חנות Play. כדי לבדוק את הרכישות מתוך האפליקציה במשחק שהועבר ידנית, צריך להוסיף שאילתה לחבילה com.android.vending בקובץ AndroidManifest.xml באופן הבא:

<manifest>
    <queries>
        <package android:name="com.android.vending" />
    </queries>
</manifest>

התקנת המשחק בלקוח הצרכן

לא ניתן להתקין משחק בלקוח של הצרכן עד שהוא מופיע בקטלוג של שירותי המשחקים של Play. אחרי שתהיה לכם גרסה אחת של המשחק, תוכלו ליצור מסלול לבדיקה פנימית כדי לאמת עדכונים עתידיים לפני הפרסום שלהם.

לקוח הנגן לא תומך בתכונות שמתמקדות במפתחים של אמולטור Google Play Games למפתחים במחשב. מומלץ להשתמש באפשרות הזו כדי לבצע בדיקות איכות של המשחק לפני ההשקה, וכדי לבדוק את חוויית המשתמש מקצה לקצה אחרי ההשקה הראשונית.