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

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

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

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

כניסה לחשבון

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

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

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

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

  • Ctrl + h: לחיצה על לחצן הבית
  • Ctrl + b: לחיצה על לחצן החזרה
  • F11 או Alt + Enter: מעבר בין מסך מלא למצב חלון
  • Shift + Tab: פתיחת שכבת העל של Google Play Games במחשב, כולל מיפוי המקשים הנוכחי של 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 Debug Bridge ‏ (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 במחשב מוגדר כברירת מחדל לאמולציית מגע, במקום לאפשר קלט ישיר של העכבר. כדי להפעיל קלט ישיר של העכבר, לוחצים לחיצה ימנית על הסמל של מגש המערכת, בוחרים באפשרות אפשרויות למפתחים ואז באפשרות מצב מחשב (KiwiMouse).

ל-Google Play Games במחשב יש שני מצבי עכבר: מצב מדומה שמתרגם קליקים בעכבר להקשות בודדות, ומצב 'PC' שמאפשר למשחקים לטפל בפעולות העכבר באופן מקורי ולבצע לכידת מצביע. לפרטים על קלט עכבר ב-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 (פורטרט) בתפריט הנפתח כדי לראות איך הוא נראה במחשבים של השחקנים. אחרת, צריך לוודא שהמשחק פועל ביחסי הגובה-רוחב הרחבים והצרים ביותר לרוחב שאתם תומכים בהם במניפסט. חשוב לזכור שיחס הגובה-רוחב 16:9 (ברירת מחדל) (או 9:16 (פורטרט) אם המשחק הוא רק בפורטרט) נדרש לאישור מלא.

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

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

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

מה כדאי לבדוק

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

ההמרה של פקודות OpenGL ES ל-Vulkan על ידי ANGLE תוסיף תקורה מסוימת. מוודאים שאתם עומדים ביעדי הביצועים הצפויים ושוקלים לעבור ל-renderer מבוסס 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. בודקים את הנתונים של ה-trace בממשק המשתמש של Perfetto. טיפים:

    1. כל תהליך מופיע בשורה משלו, שאפשר להרחיב כדי לראות את כל השרשורים בתהליך הזה. אם אתם יוצרים פרופיל למשחק, סביר להניח שהתהליך שלו יהיה בשורה הראשונה.
    2. כדי להתקרב או להתרחק, מחזיקים את המקש Control ומשתמשים בגלגלת העכבר.
    3. כשמשתמשים באירוע sched, יש שורה לכל שרשור שמוצג בה מתי המצב של השרשור הוא running,‏ runnable,‏ sleeping או blocked.
    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 כדי לפתוח את החלון מאפייני המערכת.
  • בוחרים בכרטיסייה מתקדם אם היא לא פעילה.
  • לוחצים על הלחצן Environment Variables.

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

שימוש ב-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.

Scoped Storage

‫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 במחשב. השימוש הכי טוב בזה הוא לבדיקת איכות המשחק לפני ההשקה, כדי לבדוק את חוויית השחקן מקצה לקצה אחרי ההשקה הראשונית.