הגדרה של Google Play Games ל-Unity ואימות

במאמר הזה מוסבר איך להגדיר את הפרויקט ב-Unity כדי להשתמש בפלאגין של Google Play Games ל-Unity. הוא מסביר איך להתקין את הפלאגין ואיך להגדיר את פרויקט Unity. הוא גם מסביר איך לאמת את שירות האימות.

לפני שמתחילים

קוראים את דרישות התוכנה. מגדירים את Play Console ומתקינים את Unity Hub.

התקנת פלאגין

כדי להוריד ולהתקין את הפלאגין Google Play Games ל-Unity, פועלים לפי השלבים הבאים ב-Unity Hub:

  1. מורידים את מאגר GitHub.

  2. בספרייה current-build, מאתרים את הקובץ unitypackage. הקובץ הזה מייצג את הפלאגין. לדוגמה, הוא צריך להיראות כך:

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    

הגדרת פרויקט Unity

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

  1. פותחים את פרויקט המשחק.

  2. ב-Unity Hub, לוחצים על נכסים > ייבוא חבילה > חבילה מותאמת אישית כדי לייבא את הקובץ unitypackage לנכסים של הפרויקט.

  3. מוודאים שפלטפורמת ה-build הנוכחית מוגדרת ל-Android.

    1. בתפריט הראשי, לוחצים על קובץ > הגדרות Build.

    2. בוחרים באפשרות Android ולוחצים על החלפת פלטפורמה.

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

  4. ב-Unity Hub, לוחצים על קובץ > הגדרות ה-Build > הגדרות המשחק > הגדרות נוספות.

  5. בתיבה רמת ה-API לטרגוט, בוחרים גרסה.

  6. בתיבה כתיבת סקריפט לבק אנד, מזינים IL2CPP.

  7. בתיבה ארכיטקטורות יעד, בוחרים ערך.

  8. חשוב לשים לב לשם החבילה package_name. אפשר להשתמש במידע הזה בהמשך.

הגדרות המשחק בפרויקט Unity
הגדרות המשחק בפרויקט Unity.

יצירת מאגר מפתחות חדש

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

  1. ב-Unity Hub, לוחצים על קובץ > הגדרות ה-Build > הגדרות המשחק.
  2. בקטע הגדרות פרסום, לוחצים על הכלי לניהול מאגר המפתחות.
    1. בחלון הכלי לניהול מאגר המפתחות, לוחצים על מאגר המפתחות > יצירת חדש > בכל מקום).
    2. בוחרים תיקייה ונותנים שם למאגר המפתחות.
    3. בתיבה סיסמה, מזינים סיסמה ומאשרים אותה.
    4. לוחצים על הוספת מפתח.

מומלץ לרשום את שם התיקייה. אפשר להשתמש בשם הזה כדי ליצור פרטי כניסה ב-Google Cloud.

העתקת המשאבים של Android מ-Play Console

כל הישג, טבלת מובילים ואירוע שאתם יוצרים ב-Play Console כוללים משאב Android שבו אתם משתמשים כשאתם מגדירים את פרויקט Unity.

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

  1. ב-Google Play Console, פותחים את המשחק.

  2. בדף Play Games Services – הגדרות (צמיחה > Play Games Services > הגדרה וניהול > הגדרות), לוחצים על גישה למשאבים.

  3. בחלון משאבים, לוחצים על הכרטיסייה Android(XML).

  4. בוחרים את התוכן של משאבי Android (AndroidManifest.xml) ומעתיקים אותו.

הוספת משאבי Android לפרויקט ב-Unity

מוסיפים את משאבי Android הבאים לפרויקט ב-Unity:

  1. ב-Unity Hub, לוחצים על חלון > Google Play Games > הגדרה > הגדרת Android.

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

      לדוגמה, אם המחלקה C# היא id.cs והיא נמצאת בנתיב נכסים > הפרויקט שלי > סקריפטים > id.cs. השם של מחלקת הקבועים יכול להיות myproject.scripts.id.

    • בשדה הגדרת המשאבים, מדביקים את נתוני המשאבים של Android (קובץ AndroidManifest.xml) שהועתקו מ-Google Play Console.

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

      כדי לקבל את מזהה הלקוח של המשחק מ-Google Cloud, אפשר לעיין במאמר בנושא יצירת מזהי לקוח.

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

    • לוחצים על הגדרה. הפעולה הזו מגדירה את המשחק עם מזהה הלקוח ויוצרת מחלקה ב-C# שמכילה קבועים לכל אחד מהמשאבים של Android.

  2. ב-Unity Hub, לוחצים על חלון > Google Play Games > הגדרה > הגדרת חיבורים בסביבה.

    • בשדה מזהה שירות מקושר בסביבה, מזינים את הערך package_name.

      משתמשים באותו package_name שהוזן בהגדרת פרויקט Unity.

    • לוחצים על הגדרה.

בחירת רשת חברתית

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

אפשר לגשת לקריאות הרגילות ל-API דרך האובייקט Social.Active, שהוא הפניה לממשק ISocialPlatform. אפשר לגשת לתוספים הלא סטנדרטיים של Google Play Games Services על ידי שידור של האובייקט Social.Active למחלקה PlayGamesPlatform, שבה השיטות הנוספות זמינות.

שימוש בפלאגין בלי לשנות את הרשת החברתית שמוגדרת כברירת מחדל

כשמפעילים את PlayGamesPlatform.Activate,‏ Google Play Games Services הופך לרשת החברתית שמוטמעת כברירת מחדל. כלומר, הפלאגין Google Play Games Services מבצע קריאות סטטיות לשיטות ב-Social וב-Social.Active, וזהו אופן הפעולה הצפוי ברוב המשחקים שמשתמשים בפלאגין.

עם זאת, אם מסיבה כלשהי אתם רוצים לשמור על הגישה להטמעה שמוגדרת כברירת מחדל (למשל, כדי להשתמש בה לשליחת הישגים וטבלאות מובילים לרשת חברתית אחרת), אתם יכולים להשתמש בתוסף Google Play Games Services בלי לבטל את ברירת המחדל. ככה עושים את זה:

  1. מבצעים קריאה ל-PlayGamesPlatform.Activate.
  2. אם Xyz הוא שם של שיטה שקוראים לה במחלקה Social, אל תקראו ל-Social.Xyz. במקום זאת, קוראים ל-PlayGamesPlatform.Instance.Xyz.
  3. במקום המאפיין Social.Active, צריך להשתמש במאפיין PlayGamesPlatform.Instance כשמבצעים אינטראקציה עם Google Play Games Services.

כך אפשר לשלוח ניקוד והישגים בו-זמנית לשתי רשתות חברתיות או יותר:

    // Submit achievement to original default social platform
    Social.ReportProgress("MyAchievementIdHere", 100.0f, callback);

    // Submit achievement to Google Play
    PlayGamesPlatform.Instance.ReportProgress("MyGooglePlayAchievementIdHere", 100.0f, callback);

אימות שירות האימות

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

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

בשיטה Start של הסקריפט, מאזינים לתוצאה של ניסיון האימות האוטומטי, מאחזרים את סטטוס האימות ומשביתים את התכונות של Play Games Services אם המשתמש לא מאומת.

אם הגרסה של הפלאגין של Unity היא לפני v11, אי אפשר להשתמש בתכונת האימות.

    using GooglePlayGames;

    public void Start() {
      PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
    }

    internal void ProcessAuthentication(SignInStatus status) {
      if (status == SignInStatus.Success) {
        // Continue with Play Games Services
      } else {
        // Disable your integration with Play Games Services or show a login button
        // to ask users to authenticate. Clicking it should call
        // PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
      }
    }

קוד התוצאה הוא enum שאפשר להשתמש בו כדי לזהות את הסיבה לכשל באימות.

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

  using GooglePlayGames;

  public void Start() {
    PlayGamesPlatform.Activate();
    Social.localUser.Authenticate(ProcessAuthentication);
  }

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

שימוש בחתימת אפליקציות של Google Play

‫Google מנהלת את חתימת האפליקציה ומגינה עליה באמצעות חתימת אפליקציות ב-Play. אתם יכולים להשתמש בחתימת אפליקציה ב-Play כדי לחתום על קובצי Android App Bundle שעברו אופטימיזציה להפצה. התכונה "חתימת אפליקציה ב-Play" מאפשרת לאחסן את החתימה בתשתית המאובטחת של Google. כדי להשתמש בחתימת האפליקציה ב-Play, קודם צריך ליצור ולהוריד קובץ AAB מ-Unity Hub. לאחר מכן אפשר להעלות את קובץ ה-AAB ל-Play Console וליצור גרסה פנימית לבדיקה.

יצירת קובץ AAB

כדי ליצור קובץ AAB ב-Unity Hub, פועלים לפי השלבים הבאים:

  1. ב-Unity Hub, לוחצים על קובץ > הגדרות ה-Build.
  2. בוחרים באפשרות יצירת חבילת אפליקציות (Google Play).

    מידע נוסף זמין במאמר בנושא הגדרות ה-build של Android.

  3. לוחצים על Build.

  4. מורידים את קובץ ה-AAB מ-Unity Hub.

יצירת גרסה לבדיקות פנימיות

כדי ליצור גרסה לבדיקות פנימיות ולהוסיף בודקים ב-Play Console, פועלים לפי השלבים הבאים:

  1. ב-Google Play Console, בוחרים משחק.
  2. עוברים אל הדף בדיקה ופרסום (בדיקה > בדיקות פנימיות).
  3. לוחצים על העלאה ובוחרים את קובץ ה-AAB.
  4. בשדה פרטי ההפצה, מזינים שם.
  5. לוחצים על הבא ובודקים את פרטי הפריט.
  6. לוחצים על שמירה ופרסום.
  7. בכרטיסייה בודקים, לוחצים על יצירת רשימת כתובות אימייל כדי להוסיף עד 100 בודקים.

    מידע נוסף זמין במאמר בנושא בדיקה פנימית: ניהול של עד 100 בודקים.

  8. בכתובת ה-URL או כתובת האימייל למתן משוב, מזינים כתובת URL או כתובת אימייל למתן משוב.

  9. לוחצים על שמירה.

אימות פרטי הכניסה לחתימת האפליקציה

  1. ב-Google Play Console, בוחרים משחק.
  2. עוברים לדף בדיקה והפצה (הגדרה > חתימה על אפליקציה).
  3. מאמתים את פרטי הכניסה לחתימת האפליקציה.

בנייה והרצה של הפרויקט

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

צריך מכשיר פיזי עם Android שבו מופעלת האפשרות "ניפוי באגים ב-USB", או אמולטור שיכול להריץ את הפרויקט.

אחזור קודי אימות לשרת

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

כדי לקבל את קוד הגישה בצד השרת:

  1. מוסיפים את מזהה לקוח האינטרנט של המשחק ב-Play Console.
    1. ב-Google Play Console, בוחרים את המשחק.
    2. בדף הגדרות (הגדלת מספר המשתמשים > Play Games Services > הגדרה וניהול > הגדרות), לוחצים על הוספת פרטי כניסה.
    3. בדף הוספת פרטי כניסה, בוחרים באפשרות שרת המשחקים.
    4. איך יוצרים מזהה לקוח ב-OAuth 2.0
    5. חשוב לזכור את הערך של מזהה הלקוח. יהיה עליך לספק את הערך הזה בהמשך.
  2. מוסיפים את מזהה הלקוח לאינטרנט ל-Unity Hub.

    1. ב-Unity Hub, מגדירים את Google Play Games ל-Unity ומבצעים אימות.
    2. ב-Unity Hub, עוברים אל חלון > Google Play Games > הגדרות > הגדרות Android.
    3. מזינים את הערך של מזהה הלקוח.
  3. אחזור קוד האימות לשרת בשביל היקפי הרשאות נוספים.

    C#‎

    using GooglePlayGames.BasicApi;
    
    // Define selectedScope having additional identity scopes.
    private List selectedScopes = new List();
    
    // Add scopes you want to request.
    selectedScopes.Add(AuthScope.OPEN_ID);
    selectedScopes.Add(AuthScope.PROFILE);
    selectedScopes.Add(AuthScope.EMAIL);
    
    // Call RequestServerSideAccess with additional scopes and retrieve
    // authcode and grantedscopes list.
    PlayGamesPlatform.Instance.RequestServerSideAccess(
        /* forceRefreshToken= */ false,selectedScopes
        (AuthResponse authResponse) =>
        {
        string authCode = authResponse.GetAuthCode();
        List grantedScopes = authResponse.GetGrantedScopes();
    
        // send authCode to server...
    });

הגדרה והוספה של תכונות