הוספת תמיכה בגישה מיידית

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

אפשר לפתח משחקים ל-Google Play ללא התקנה באמצעות Unity (עם או בלי התוסף Google Play ללא התקנה Unity),‏ Cocos2D,‏ Android Studio או מנוע מותאם אישית משלכם.

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

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

פעילות שכוללת את מסנן הכוונות הבא הופכת לנקודת הכניסה לחוויית השימוש ב-Google Play ללא התקנה:

<activity android:name=".GameActivity">
   <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

הפעילות הזו מופעלת כשמשתמש מקיש על הלחצן אפשר לנסות ב-Play Store או על הלחצן הפעלה מיידית באפליקציית Google Play Games. אפשר גם להפעיל את הפעילות הזו ישירות באמצעות deep link API.

הגדרת קודי הגרסה הנכונים

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

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

  • מפעילים מחדש את קודי הגרסאות של חוויית השימוש המיידית ב-Google Play, החל מ-1.
  • כדי לוודא שיש מספיק מקום למספר הגרסה של האפליקציה ללא התקנה, צריך להגדיל את קוד הגרסה של האפליקציה להתקנה במספר גדול, כמו 1,000.

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

  1. משתמשים באותו שם חבילה בשני הפרויקטים של Android Studio.
  2. ב-Google Play Console, מעלים את שני הווריאנטים לאותה אפליקציה.

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

תמיכה בסביבת ההפעלה

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

ביטול ההסכמה לתעבורה בטקסט גלוי

משחקים ב-Google Play ללא התקנה לא תומכים בתנועת HTTP. אם המשחק שלכם מיועד ל-Android 9 (רמת API‏ 28) או לגרסה מתקדמת יותר, מערכת Android משביתה במשחק כברירת מחדל את התמיכה בטקסט גלוי.

עם זאת, אם המשחק שלכם מטרגט Android 8.1 (רמת API ‏27) או גרסה מוקדמת יותר, אתם צריכים ליצור קובץ Network Security Config. בקובץ הזה, מגדירים את cleartextTrafficPermitted ל-false, כמו בקטע הקוד הבא:

res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">secure.example.com</domain>
    </domain-config>
</network-security-config>

עדכון גרסת ארגז החול של היעד

מעדכנים את קובץ AndroidManifest.xml של המשחק ללא התקנה כך שיכוון לסביבת ארגז החול שנתמכת על ידי Google Play ללא התקנה. כדי להשלים את העדכון הזה, מוסיפים את מאפיין android:targetSandboxVersion לרכיב <manifest> של המשחקים, כמו בקטע הקוד הבא:

<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
  ...
   android:targetSandboxVersion="2" ...>

מידע נוסף מופיע במאמר בנושא מאפיין targetSandboxVersion.

לא להסתמך על נוכחות של מטמון או נתוני אפליקציה

החוויה המיידית תישאר במכשיר של המשתמש עד שהמטמון של החוויה המיידית יימחק. זה קורה באחד מהמקרים הבאים:

  • המטמון של החוויה המיידית עובר איסוף אשפה כי הזיכרון הזמין במכשיר נמוך.
  • המשתמש מפעיל מחדש את המכשיר.

אם אחד מהתהליכים האלה מתרחש, המשתמש צריך להוריד מחדש את חוויית השימוש המיידי כדי להשתמש בה.

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

צמצום גודל האפליקציה

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

כלים

רשימת הכלים הבאה יכולה לעזור לכם לקבוע מה תורם לגודל המשחק:

  • הכלי לניתוח APK: מספק תצוגה הוליסטית של התוכן של APK שעבר קומפילציה. בתצוגה הזו אפשר לראות את מספר הבייטים שכל רכיב תורם לגודל הכולל. בעזרת הכלי הזה אפשר לבדוק במהירות את הגודל של המשאבים, הנכסים, הלוגיקה והספריות המקוריות שבהם המשחק משתמש.
  • Bloaty McBloatface: מציג את פרופיל הגודל של קבצים בינאריים.
  • Android GPU Inspector: אפשר לראות את ההשפעה של הקטנת גודל הטקסטורה על גודל הקובץ בלי להדר מחדש את המשחק.

טכניקות

ריכזנו כאן רשימה של טכניקות שיעזרו לכם להקטין את הגודל של המשחק:

  • כדאי לחלץ חלק מהלוגיקה של המשחק ולהציב אותה במודולים של תכונות, שלא נכללים במגבלת הגודל.
  • הקטינו את הרזולוציה של הטקסטורות במשחק.
  • כדאי להשתמש בפורמט WebP, במיוחד אם אתם משתמשים בטקסטורות לא דחוסות ב-GPU. פורמט WebP יוצר תמונות באיכות זהה לתמונות JPEG, אבל קטנות ב-15% עד 30%. למרות שלוקח יותר זמן לבצע דקומפרסיה של תמונות WebP, זמן הדקומפרסיה הזה עדיין קצר משמעותית מזמן ההורדה של הטקסטורות במשחק. Google שילבה את הפורמט גם במנוע משחקים בקוד פתוח.
  • דחיסה או שימוש חוזר בסאונדים ובמוזיקה.
  • כדי להקטין את הקובץ הבינארי, אפשר להשתמש בדגלי קומפילציה שונים:
    • -fvisibility=hidden – החשוב ביותר. ב-cmake, אפשר לציין את זה באופן הבא:
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
      
    • -Oz – חשוב גם להקטנת הגודל. אם אתם מבצעים קומפילציה באמצעות gcc, אתם צריכים להשתמש ב--Os.
    • -flto – לפעמים מקטין את גודל הקובץ.
    • דגלי linker – משתמשים בדגל --gc-sections בשילוב עם דגלי קומפיילר, כמו -ffunction-sections ו--fdata-sections.
  • אפשר להשתמש ב-Proguard כדי לצמצם את הקוד והמשאבים.
  • כדי ליצור קובצי DEX קטנים יותר, צריך להשתמש ב-Gradle גרסה 4.4 ואילך.
  • הטמעה של העברת נכסים בענן.

חלוקת משחק גדול לכמה קובצי APK

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

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

אימוץ שיטות מומלצות לשיפור חוויית המשתמש

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

תמיכה בארכיטקטורות 64 ביט

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

בודקים אם המשחק מופעל כחוויה מיידית

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

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

הצגת בקשה להתקנה

אם יצרתם חוויית משחק ב-Google Play ללא התקנה, בשלב מסוים המשחק צריך להציג לשחקן הנחיה להתקין את הגרסה המלאה במכשיר. כדי לעשות את זה, משתמשים בשיטה showInstallPrompt() ב-Google APIs for Android.

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

העברת נתונים לחוויה מותקנת

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

אם המשחק שלכם מציין targetSandboxVersionבסך 2, ההתקדמות של השחקן מועברת אוטומטית לגרסה המלאה של המשחק. אחרת, תצטרכו להעביר את הנתונים שקשורים להתקדמות השחקן באופן ידני. כדי לעשות זאת, משתמשים ב-Cookie API – אפליקציה לדוגמה

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

מידע נוסף על Google Play Instant זמין במקורות הבאים:

Codelab: בניית האפליקציה הראשונה ללא התקנה
הוספת תמיכה ב-Google Play ללא התקנה לאפליקציה קיימת.
Codelab: בניית אפליקציה ללא התקנה עם כמה תכונות
הפיכת אפליקציה עם כמה תכונות למודולרית.