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

Hướng dẫn này cho bạn biết 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++ cho việc sử dụng dịch vụ Sự kiện, hãy làm theo hướng dẫn trong bài viết Bắt đầu sử dụng C++. Bạn có thể tải SDK C++ của dịch vụ Play Games xuống từ trang tải SDK xuống.

Để 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 mua 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 lên 1 mỗi khi người chơi thực hiện một hành động liên quan đến sự kiện đó (ví dụ: “Giết 1 quái vật”).

Ví dụ sau cho biết cách bạn có thể gửi số lượng sự kiện đã cập nhật cho 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);

Đang 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ể thực hiện việc này, ví dụ: nếu bạn muốn hiển thị số liệu thống kê trong trò chơi của người chơi hoặc tiến trình từ giao diện người dùng tuỳ chỉnh trong trò chơi của bạn.

Ví dụ sau 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 của mình.

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