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

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

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

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

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

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

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

שליחת אירוע

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

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

  // 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);