Thêm sự kiện vào trò chơi

Hướng dẫn này sẽ hướng dẫn bạn cách sử dụng dịch vụ Sự kiện trong ứng dụng C++.

Trước khi bắt đầu

Nếu chưa từng có kinh nghiệm, bạn có thể xem lại các khái niệm về sự kiện của trò chơi.

Để thiết lập môi trường phát triển C++ để sử dụng dịch vụ Sự kiện, hãy làm theo hướng dẫn trong hướng dẫn Làm quen với C++. Bạn có thể tải SDK C++ của Dịch vụ trò chơi của Play xuống từ trang tải SDK xuống.

Trước khi trò chơi có thể truy cập vào các sự kiện, trước tiên, bạn phải xác định các sự kiện đó trong Google Play Console.

Gửi sự kiện

Bạn có thể thêm mã trong trò chơi để thông báo cho Dịch vụ sự kiện bất cứ khi nào có sự kiện mà trò chơi quan tâm. Ví dụ về các sự kiện mà bạn có thể ghi lại trong trò chơi: tiêu diệt kẻ thù, khám phá hoặc quay lại nhiều khu vực trong trò chơi hoặc thu nạp các vật phẩm trong trò chơi. Thông thường, bạn sẽ gọi phương thức Increment trên trình quản lý sự kiện để tăng số lượng sự kiện thêm 1 mỗi khi người chơi thực hiện một hành động liên kết với sự kiện đó (ví dụ: "Giết một con quái vật").

Ví dụ sau đây cho thấy cách bạn có thể gửi số sự kiện đã cập nhật đến dịch vụ Sự kiện.

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

Truy xuất sự kiện

Để truy xuất giá trị số lượng hiện tại được lưu trữ trong máy chủ của Google cho một sự kiện cụ thể, hãy gọi một trong các phương thức Fetch*. Bạn có thể làm việc này, ví dụ: nếu muốn hiển thị số liệu thống kê hoặc tiến trình của người chơi trong trò chơi từ một giao diện người dùng tuỳ chỉnh trong trò chơi.

Ví dụ sau đây cho thấy cách bạn có thể truy xuất và ghi nhật ký dữ liệu sự kiện trong trò chơi.

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