הוספת אירועים למשחק שלך

בעקבות ההוצאה משימוש של ה-API של התחברות באמצעות חשבון Google, בשנת 2026 אנחנו מסירים את גרסה 1 של ה-SDK שהייתה זמינה למשחקים. החל מפברואר 2025, לא תהיה לך אפשרות לפרסם ב-Google Play משחקים שה-SDK בגרסה הזו שולב בהם לאחרונה. מומלץ להשתמש בגרסה 2 של ה-SDK למשחקים.
פריטים קיימים עם גרסה 1 ימשיכו לפעול בשנים הקרובות, אבל מומלץ לעבור לגרסה 2 החל מיוני 2025.
המדריך הזה מיועד לגרסה 1 של ה-SDK של Play Games Services. גרסה 2 של ה-SDK ל-C++‎ של Play Games Services עדיין לא זמינה.

במדריך הזה נסביר איך להשתמש בשירות האירועים באפליקציות C++‎.

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

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

כדי להגדיר את סביבת הפיתוח בשפת C++‎ לשימוש בשירות, פועלים לפי ההוראות במדריך תחילת העבודה עם C++‎. אפשר להוריד את ה-SDK בשפת C++‎ של Play Games Services מדף ההורדות של ה-SDK.

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

שליחת אירוע

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

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

  // Increment the event count when player performs the 'Attack blue
  // monster' action.
  game_services_->Events().Increment(BLUE_MONSTER_EVENT_ID);

אחזור אירועים

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

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

  // Log Events details.
  LogI("---- Showing Event Counts -----");
  gpg::EventManager::FetchAllCallback callback =
      [](gpg::EventManager::FetchAllResponse const &response) {
    for (auto i : response.data) {
      gpg::Event const &event = i.second;
      LogI("Event name: %s  count: %d", event.Name().c_str(),
           event.Count());
    }
  };
  game_services_->Events().FetchAll(callback);