שיפור המשחק באמצעות Play Games PC SDK

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

שנתחיל?

דרישות מוקדמות

  • יוצרים רשומה של אפליקציה ב-Play Console ובוחרים שם חבילה ב-Play.

  • מורידים ומתקינים את Google Play Games למחשב ונכנסים לחשבון Google.

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

  • מורידים את ה-SDK של Play Games למחשב C++.

  • מעתיקים את תיקיית כותרות ה-API‏ includes/ אל בסיס הקוד של האפליקציה.

  • מעתיקים את הקבצים להפצה מחדש מ-imports/ אל הפרויקט של האפליקציה.

    • מקשרים את הפרויקט ל-play_pc_sdk.lib כדי לאפשר גישה לתוכן של play_pc_sdk.dll.

שלב 2: הוספת קובץ מניפסט

לפני שתוכלו להשתמש ב-SDK מתוך המשחק, תצטרכו לשייך את קובץ ההפעלה של המשחק לשם החבילה ב-Play שרשמתם ב-Play Console. כדי לעשות זאת, מוסיפים קובץ manifest.xml באותה ספרייה שבה נמצא קובץ ההפעלה של המשחק.

תוכן manifest.xml לדוגמה:

<?xml version="1.0" encoding="utf-8"?>
<Manifest version="1">
    <Application>
        <PackageName>com.example.package</PackageName>
    </Application>
</Manifest>

מיקום manifest.xml לדוגמה:

C:\Program Files
└───Example Game
    ├───Game.exe
    └───manifest.xml

שלב 3: חותמים דיגיטלית על המשחק

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

שלב 4: הפעלת ה-SDK

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

כדי להתחיל להשתמש ב-SDK, צריך לקרוא ל-GooglePlayInitialize כדי לאתחל את ה-API. הפעולה הזו תגדיר מצב גלובלי, תתחבר לזמן הריצה של ה-SDK ותוודא שהאפליקציה הופעלה בצורה תקינה. חובה לקרוא לפונקציה הזו ולסיים את הקריאה החוזרת להמשך עם הערך InitializeResult::ok() ששווה ל-true לפני שמשתמשים ב-API אחר.

// Initialize the SDK as part of the startup sequence of your application.
auto promise = std::make_shared<std::promise<InitializeResult>>();
GooglePlayInitialize(
  [promise](InitializeResult result) {
    promise->set_value(std::move(result));
  });

auto initialize_result = promise->get_future().get();
if (initialize_result.ok()) {
  // The SDK succeeded with initialization. Continue with the startup sequence
  // of the game.
  // ...
} else if (initialize_result.code() == InitializationError::kActionRequiredShutdownClientProcess) {
  // The SDK failed to initialize and has requested that your game process exit
  // as soon as possible.
  exit(1);
} else {
  // The SDK failed to initialize for an alternative reason. It is still
  // generally recommended that you exit the game process as soon as possible,
  // because it won't be possible to access any APIs in the SDK. Critical
  // operations such as verifying the user owns a valid license to your game
  // won't be possible.
  // ...
}

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

תגובה לא מוצלחת עשויה להצביע על אחד מהתנאים הבאים:

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

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

  • קובץ ההפעלה של המשחק לא הופעל דרך לקוח Google Play Games.

  • למשתמש הפעיל ב-Google Play Games אין רישיון לאפליקציה.

שלב 5: (אופציונלי) תמיכה בכמה תהליכי משחק

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

  1. התהליך שמופעל ישירות על ידי Google Play Games למחשב צריך לאמת אתחול מוצלח של Play Games PC SDK.

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

  2. כדי להשתמש ב-Play Games PC SDK בתהליך צאצא, צריך להעביר את הפרמטרים של שורת הפקודה לתהליך הצאצא שנוצר.

    דוגמה להעברת פרמטרים של שורת פקודה:

    Processes hierarchy tree:
    
    GooglePlayGames.exe
    └───YourGameLauncher.exe --foo=abc --bar=123
        └───YourGame.exe --foo=abc --bar=123
    

    בדוגמה הזו אפשר לראות היררכיה של תהליכים שבה Google Play Games למחשב (GooglePlayGames.exe) מפעיל את המשחק (YourGameLauncher.exe) עם כמה פרמטרים לדוגמה (--foo=abc --bar=123). לאחר מכן המשחק יוצר תהליך צאצא (YourGame.exe) שמשתמש ב-SDK של Play Games למחשב. כדי לאפשר זאת, תהליך המשחק שהופעל על ידי Google Play Games למחשב מעביר את הפרמטרים של שורת הפקודה שניתנו לו לתהליך הצאצא.

  3. יציאה מכל התהליכים כשהמשחק מפסיק לפעול.

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

השלבים הבאים

משתמשים ב-SDK במהלך הפיתוח בסביבת הפיתוח המשולבת (IDE):

הוספת תכונות של Google Play למחשב לאפליקציה: