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

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

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

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

כניסה לחשבון

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

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

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

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

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

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

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

מה כדאי לבדוק

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

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