Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Android SDK
Code

Google Play Games Services: Tạo Event và Quest

by
Difficulty:IntermediateLength:MediumLanguages:

Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article)

Giá trị chơi lại cao là một trong các đặc điểm để xác định một trò chơi tuyệt vời. Ngay cả các game với tình tiết rất đơn giản cũng có thể trở nên thành công trên Google Play miễn là chúng có một giá trị chơi lại cao. Nếu bạn là một game thủ có khao khát, bạn có thể đã biết giá trị chơi lại là gì. Nếu không, bạn có thể nghĩ về nó như là khả năng mà người dùng sẽ chơi một game một lần nữa ngay cả sau khi đạt được mục tiêu của nó.

Bằng cách sử dụng Events và Quests API, tập con của Google Play Games Services API, bạn có thể gia tăng đáng kể các giá trị chơi lại của trò chơi, không phải đề cập đến việc làm cho chúng thử thách hơn và vui vẻ hơn. Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách làm thế nào để tận dụng tối đa cả hai API.

Trước khi bạn tiếp tục, tôi đề nghị bạn đọc hướng dẫn của tôi giới thiệu về Google Play Games Services, nó sẽ cho bạn thấy cách sử dụng các dịch vụ trong một dự án Android Studio.

1. Hiểu về Event và Quest

Bất cứ điều gì sẽ xảy ra trong một game có thể được coi là một Event. Bằng cách log đủ Event sử dụng Events API, bạn có thể phân tích hành vi của người dùng của bạn một cách chặt chẽ. Bạn có thể suy ra các chi tiết như bao lâu người dùng có thể đi vào trong game của bạn, bao nhiêu kẻ thù mà họ giết, và bao nhiêu tài nguyên mà họ thu thập được. Có được các chi tiết như vậy, bạn sẽ có thể dễ dàng tinh chỉnh game của bạn để làm cho nó thú vị hơn.

Tuy nhiên, Events API, hiếm khi được sử dụng một mình. Hầu hết các nhà phát triển sử dụng nó cùng với Quests API để tạo ra các quest. Một Quest, như tên của nó, là một mục tiêu thứ cấp mà người dùng có thể đạt được để giành được một số phần thưởng. Ví dụ, nếu bạn đang tạo một game mà người dùng đang cố gắng cứu một công chúa, bạn có thể thêm một Quest vào nó nơi mà người dùng phải tìm ít nhất 100 chiếc nhẫn cho cô ấy.

Nếu bạn vẫn chưa đoán ra, thì các Event được sử dụng để xác định tiêu chí hoàn thành của các Quest. Trong ví dụ trên, việc tìm kiếm một chiếc nhẫn sẽ là một Event mà phải xảy ra 100 lần cho Quest để được đánh dấu là hoàn thành.

Mặc dù Quest chia sẻ một số điểm tương đồng với Achievement, nhưng có một vài khác biệt quan trọng giữa hai cái:

  • Bạn không cần phải viết bất kỳ code nào để thêm một Quest mới vào game của bạn, cung cấp các Event mà nó phụ thuộc vào đã là một phần của game.
  • Quest bị ràng buộc thời gian. Ví dụ, bạn có thể lên lịch trình một Quest mới để bắt đầu một tuần trước khi Giáng sinh và thách thức người chơi để hoàn thành nó trước khi Giáng sinh.
  • Người dùng có thể hoàn thành một Quest chỉ sau khi lựa chọn để tham gia với nó.

Với rất nhiều Quest thú vị, một số trong đó được lên lịch để lặp lại mỗi tuần hoặc tháng, bạn có thể dễ dàng nhắc người dùng chơi game của bạn nhiều lần.

2. Tạo một Event

Đăng nhập vào Play developer console và mở màn hình Game Services bằng cách nhấp vào biểu tượng tay game.

Tiếp theo, chọn game mà bạn muốn thêm các Event và mở phần Events.

Nhấn nút Add event để bắt đầu tạo ra một Event. Trong form hiện lên, cho một cái tên có ý nghĩa cho Event này. Tiếp tục với ví dụ ở bước trước đó, tôi sẽ gọi Event là Collect Ring.

Create event dialog

Một khi bạn nhấn nút Save, bạn sẽ có thể thấy ID của Event này. Để có thể sử dụng Event trong dự án Android Studio của bạn, bạn phải thêm ID như là một thẻ <string> mới trong tập tin games-ids.xml.

3. Tạo một Quest

Tạo ra một Quest thì khá đơn giản. Bắt đầu bằng cách đi tới phần Quests và nhấn nút Add quest. Đặt cho Quest một cái tên hấp dẫn và một mô tả dễ hiểu. Cả hai đều rất quan trọng bởi vì chúng sẽ được đọc bởi người dùng. Một Quest trông không nhìn thú vị có thể không nhiều người tham gia.

Name and description of quest

Sau đó, cuộn xuống mục Completion criteria. Trong trường Find an event, gõ vào ID của Event mà bạn tạo ra trước đó. Trong input tiếp theo, bạn phải xác định Event phải xảy ra bao nhiêu lần để Quest được hoàn thành.

Trong phần Schedule, chỉ định rõ Start date và time của Quest. Để có thể bắt đầu làm việc với Quest ngay lập tức, bạn có thể chọn ngày hôm nay.

Bạn cũng phải xác định khoảng thời gian của Quest bằng cách gõ vào một giá trị trong trường Number of days. Ngoài ra, bạn có thể chọn để thông báo cho người tham gia Quest khi họ đang gần hết giờ.

Một Quest phải có một phần thưởng—lý do khác mà một người dùng lựa chọn tham gia với nó? Bạn có thể chỉ định phần thưởng là gì bằng cách tải lên một tập tin phần thưởng, có thể là một tập tin với định dạng bất kỳ. Hầu hết các nhà phát triển sử dụng định dạng JSON. Đây là tập tin phần thưởng mẫu:

Đáng chú ý rằng nội dung của tập tin phần thưởng là không quan trọng đối với Play games services API. Đó là trách nhiệm của bạn trong việc phân tích và sử dụng chúng trong game của bạn.

Trong phần Reward data, bấm vào nút Browse và tải lên tập tin phần thưởng mà bạn đã tạo.

Completion criteria schedule and reward data sections

Cuối cùng, nhấn Save để tạo ra một ID cho Quest. Ngoài ra, bạn có thể sao chép ID và thêm nó vào tập tin games-ids.xml của dự án Android Studio như là một thẻ <string> khác.

4. Hiển thị Giao diện Người dùng của Quest

Quests API cung cấp một Activity có thể hiển thị tất cả các Quest có sẵn trong game của bạn. Activity cũng cho phép người dùng tham gia Quest.

Để mở Activity của Quest, bạn phải tạo ra một intent cho nó bằng cách sử dụng phương thức getQuestsIntent() của lớp Games.Quests. Căn cứ vào đối số của nó, nó cần một đối tượng GoogleApiClient và một mảng int xác định kiểu của Quest mà bạn muốn hiển thị. Dưới đây là một số giá trị phổ biến nhất cho các kiểu của Quest:

  • Quests.SELECT_OPEN, một Quest mà một người dùng có thể tham gia ngay lập tức.
  • Quests.SELECT_UPCOMING, một Quest chưa bắt đầu.
  • Quests.SELECT_COMPLETED, một Quest mà người dùng đã hoàn tất.
  • Quests.SELECT_ACCEPTED, một Quest mà người dùng hiện đang tham gia.

Sau khi tạo đối tượng Intent, bạn có thể truyền nó vào phương thức startActivityForResult() để hiển thị Activity của Quest.

Các code sau đây cho bạn thấy cách mở Activity của Quest và hiển thị bốn các kiểu Quest:

Activity của Quest sẽ trông như thế này:

Available quests

Người dùng sẽ trở thành một người tham Quest bằng cách nhấn nút Accept. Trong suốt một Quest, người dùng có thể quay trở lại giao diện người dùng của Quest để xem có bao nhiêu nhiệm vụ được hoàn thành.

5. Sử dụng Events API

Events API cho phép bạn dễ dàng quản lý các Event trong game của bạn. Để thay đổi giá trị của một Event, bạn có thể sử dụng phương thức increment() của lớp Games.Events. Căn cứ vào đối số của nó, nó sẽ cần một đối tượng GoogleApiClient, tên của Event, và một số xác định cụ thể bao nhiêu giá trị của Event này sẽ được tăng lên.

Code sau đây tăng giá trị của Event event_collect_ring lên 1:

Để lấy các giá trị hiện tại của các Event, bạn phải sử dụng phương thức load(). Bởi vì giá trị được lấy từ máy chủ của Google không đồng bộ, nên giá trị trả về của phương thức này là một đối tượng PendingResult. Bằng cách thêm một đối tượng ResultCallback vào nó, bạn có thể được thông báo khi có kết quả.

Bên trong phương thức onResult() của interface ResultCallback, bạn phải gọi phương thức getEvents() của đối tượng Events.LoadEventsResult, nó trả về một EventBuffer. Một khi bạn đã tìm thấy Event mong muốn trong buffer, bạn có thể gọi phương thức getValue() để có được giá trị hiện tại của nó.

Code sau đây cho bạn thấy cách để lấy giá trị của Event event_collect_ring:

6. Phát hiện hoàn tất Quest

Khi một người chơi hoàn thành Quest đúng thời gian, game của bạn phải có khả năng thưởng cho người chơi bằng cách sử dụng tập tin phần thưởng mà bạn tải lên trong Play developer console. Để phát hiện hoàn thành Quest, bạn phải tạo một đối tượng QuestUpdateListener và đăng ký nó với Quests API sử dụng phương thức registerQuestUpdateListener() của lớp Games.Quests.

Bên trong phương thức onQuestCompleted() của interface QuestUpdateListener, bạn phải gọi phương thức claim() để yêu cầu phần thưởng của Quest. Bạn phải truyền một đối tượng GoogleApiClient, quest ID, và ID của mốc hiện tại vào phương thức.

Sau khi yêu cầu, bạn có thể lấy tập tin phần thưởng như là một mảng byte bằng cách gọi phương thức getCompletionRewardData(). Bởi vì dữ liệu phần thưởng của chúng ta chỉ là một tập tin JSON, nên bạn có thể truyền mảng byte vào hàm xây dựng của lớp String để chuyển đổi nó thành một chuỗi.

Tại thời điểm này, bạn có thể chuyển đổi chuỗi thành một đối tượng JSONObject, và đọc các giá trị của các khoá bên trong nó. Code sau đây cho bạn thấy cách để lấy các giá trị của hai khoá được gọi là pointsmax_lives:

Lưu ý rằng Activity của Quest tự động cập nhật chính nó khi một Quest đã được hoàn thành. Một Quest đã hoàn tất sẽ trông như thế này:

Completed quest

Tổng kết

Trong hướng dẫn này, bạn đã học được cách để sử dụng Quests và Events API để thuyết phục người chơi chơi game của bạn hết lần này đến lần khác. Tuy nhiên, lưu ý, bởi vì các API này có mức giới hạn, nên bạn phải cố gắng tránh sử dụng quá thường xuyên trong ứng dụng của bạn. Bạn có thể tham khảo bảng kiểm tra chất lượng của Play games services để tìm hiểu thêm về các giới hạn và những cách làm tốt nhất.

Để tìm hiểu thêm về Quests và Events, bạn có thể tham khảo tài liệu hướng dẫn chính thức của chúng. Và trong khi chờ đợi, hãy kiểm tra một số bài viết khác về Firebase và Google Play Services!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.