Falcon AB Testing
Last updated
Last updated
Là sub-SDK sử dụng giúp game thực hiện AB Testing và Remote Config một cách dễ dàng. Các config sẽ được khai báo ở local và đăng ký ở server, về cụ thể cách đăng ký xin tham khảo tại Hướng dẫn tạo A/B Testing.
Để khởi tạo các Config sử dụng, người dùng cần phải tạo một lớp kế thừa abstract class FalconConfig, sau đó khai báo các attributes tượng trưng cho các remoteConfig đã khai báo từ server (có thể khai báo luôn các giá trị khởi tạo).
Ví dụ có thể tham khảo tại FalconAnalytics/Scripts/FalconABTesting/Demo/RealConfig.cs
Trong ảnh trên, có thể thấy, ta khai báo các remoteConfig "config1" (int) và "config2"(String).
Chú ý:
Tên các remoteConfig, ở phía client khai báo trong class và khởi tạo phía server, phải tuyệt đối giống nhau.
Các remoteConfig cần có access modifier public
.
Kiểu dữ liệu của các remoteConfig phải phù hợp (khai báo ở server là string thì client cũng phải là string, khai báo ở server là int thì client phải là int/long/string/..., etc), nếu giá trị được gửi tới client không phù hợp, khiến client không thể xử lý thì client sẽ bỏ giá trị này, không lưu lại.
Do giới hạn của C#, các config chỉ được có kiểu dữ liệu nguyên thủy (string, float, DateTime, Boolean) nên việc gán giá trị Object, Array, List, ... sẽ không thể thực hiện được.
Nếu SDK phiên bản 1.x.x, việc khởi tạo các giá trị nền cho FalconABTesting được thực hiện ở hàm Awake() của scene chứa Game Prefab Falcon (trong FalconCore/Resources), vì vậy việc sử dụng trong scene đó chỉ nên được xử lý tại hàm Start() hoặc Update(), đồng thời phiên bản chỉ hỗ trợ duy nhất 1 class kế thừa (không tính FalconAbConfig có sẵn trong SDK).
Nếu SDK phiên bản 2.x.x, việc khởi tạo các giá trị nền cho FalconAnalytic được thực hiện kể từ khi gọi FalconMain.Init()
, vì vậy cần kiểm tra giá trị FalconMain.InitComplete
trước khi gọi.
Khi chạy, phía SDK sẽ:
Nếu là lần chạy đầu tiên, lập tức sử dụng các giá trị khởi tạo (bên trên config1 = 5 và config2 = "ahihi do ngok").
SDK sẽ ngay lập tức gửi yêu cầu lên server để lấy về các giá trị remoteConfig mới nhất (trong khoảng thời gian này các remoteConfig sẽ có giá trị là các giá trị khởi tạo). Khi server trả về thành công, các remoteConfig sẽ được reset giá trị (có thể kiểm tra giá trị UpdatedFromNet
trong config để biết config đã được cập nhật chưa).
Sau khi nhận được giá trị mới từ server, SDK sẽ lưu các giá trị mới lại và sử dụng giá trị này thay cho giá trị khởi tạo vào các lần chạy tiếp theo.
Chú ý:
Nếu SDK phiên bản 1.x.x, việc khởi tạo các giá trị nền cho FalconABTesting được thực hiện ở hàm Awake() của scene chứa Game Prefab Falcon (trong FalconCore/Resources), vì vậy việc sử dụng trong scene đó chỉ nên được xử lý tại hàm Start() hoặc Update().
Nếu SDK phiên bản 2.x.x, việc khởi tạo các giá trị nền cho FalconABTesting được thực hiện kể từ khi gọi FalconMain.Init()
, vì vậy cần kiểm tra giá trị FalconMain.InitComplete
trước khi gọi.
Có thể xem ví dụ có sẵn trong SDK tại FalconAnalytics/Scripts/FalconABTesting/Demo/FalconABConfig.cs
Lấy instance của remote config bằng cách sử dụng hàm sau:
VD: RealConfig config = FalconConfig.Instance<RealConfig>();
Cho biết các remoteConfig đã được cập nhật thành công từ server chưa (true
- đã cập nhật/ false
- chưa cập nhật, vẫn sử dụng giá trị khởi tạo).
VD:
Trả về id của ABTesting campain đang chạy.
VD:
Các giá trị của config được truy cập như các thuộc tính thông thường của class:
VD:
Để giúp người dùng dễ hiểu hơn về cách SDK hoạt động, chúng tôi xin cung cấp một ví dụ như sau:
Khi người chơi vào game, chúng ta sẽ trao quà tặng hằng ngày cho người chơi, là một lượng tài nguyên nhất định. Trong ví dụ này, quà tặng sẽ là coin - loại tiền tệ cơ bản nhất trong game.
Lượng tài nguyên được trao tặng cho người chơi sẽ được thực hiện abTesting trên 60% người chơi mới với 2 trường hợp:
Một nửa sẽ được tặng 50 coin.
Một nửa sẽ được tặng 100 coin.
Trong thông báo quà tặng cho người chơi, thông điệp trong thông báo đó sẽ được thực hiện remoteConfig để có thể thay đổi khi có nhu cầu.
Ta tạo một panel trong canvas như sau:
Ta tạo một class chứa các thành phần tương ứng với panel:
Trong đó:
Message: thông điệp thực hiện remoteConfig.
Amount: số lượng tài nguyên tặng trong daily gift được thực hiện abTesting, hiển thị cho người dùng được biết.
OnClaim: nút bấm người chơi xác nhận việc nhận daily gift.
Bước 1: Ta tạo code kế thừa FalconConfig, khai báo các giá trị muốn sử dụng, trong đó :
DailyGiftAmount
: số lượng tài nguyên tặng cho người chơi theo dailyGift (giá trị mặc định là 50).
NotifyMessage
: thông điệp quà tặng, giá trị mặc định là ("Welcome Back Gift").
Bước 2: Ta tạo code AbTesting để thực hiện việc gọi DailyGiftPanel.
Bước 1: Truy cập https://data4game.com/falcon-x/ab-testing/f-remote-config.xhtml, tìm đúng tên game muốn tạo config.
Bước 2: Khai báo các remoteConfig với giá trị mặc định (hướng dẫn chi tiết theo từng ảnh).
Tại đây các config đã được hệ thống ghi nhận là remote config, giá trị của config đã được điều chỉnh theo server trên 100% các user theo filter.
Các bước tiếp theo ta sẽ tạo abTesting trên biến DailyGiftAmount, thực hiện abTesting trên 60% người chơi mới.
Bước 3: Tạo A/B Testing trên data4game (hướng dẫn chi tiết theo từng ảnh).
Vào bước này, quá trình thực hiện tạo A/B Testing cho game thông qua SDK đã hoàn tất.