Triển khai thử nghiệm A/B cho trò chơi Unity của bạn bằng Cấu hình từ xa Firebase

1. Giới thiệu

Trong lớp học lập trình này, bạn sẽ tìm hiểu cách tạo một thử nghiệm Cấu hình từ xa bằng tính năng Thử nghiệm A/B cho trò chơi mẫu MechaHamster: Level Up with Firebase edition mà bạn đã sửa đổi trong lớp học lập trình Đo lường trò chơi bằng tính năng Cấu hình từ xa Firebase.

Thử nghiệm A/B bằng Cấu hình từ xa cho phép bạn thử nghiệm các thay đổi đối với giao diện người dùng, tính năng hoặc chiến dịch tương tác của ứng dụng trên một đối tượng mục tiêu trước khi triển khai cho đối tượng rộng hơn. Bạn cũng có thể sử dụng kết quả thử nghiệm để:

  • Xác định những biến thể giá trị tham số giúp cải thiện các chỉ số chính như doanh thu và mức độ giữ chân.
  • Khám phá những nhóm nhỏ người dùng thích biến thể nào.
  • Thu thập và lưu trữ dữ liệu thử nghiệm để phân tích thêm về ảnh hưởng của việc đặt các giá trị tham số khác nhau.

Đây là bản chất của Thử nghiệm A/B: cho phép bạn lấy mã được đo lường cho Cấu hình từ xa và chạy các thử nghiệm kiểm soát những giá trị mà các ứng dụng nhận được, dựa trên các điều kiện của Cấu hình từ xa (bao gồm cả thuộc tính người dùng Google Analytics), tỷ lệ triển khai, sự kiện chuyển đổi Analytics và một số tổ hợp của những điều kiện này.

Trước tiên, bạn sẽ triển khai một điều kiện để xác định những người sẽ được đưa vào thử nghiệm bằng cách đặt thuộc tính người dùng dựa trên hành động của người dùng. Sau đó, bạn sẽ tạo một thử nghiệm A/B Testing sử dụng các thuộc tính người dùng Google Analytics để xác định những ứng dụng khách được đưa vào thử nghiệm. Và cuối cùng, bạn sẽ sử dụng dữ liệu đó để hiểu rõ hơn về đối tượng của mình.

Kiến thức bạn sẽ học được

  • Cách thiết lập Thử nghiệm A/B bằng cách sử dụng các giá trị Cấu hình từ xa được đo lường
  • Cách sử dụng thuộc tính người dùng Google Analytics trong điều kiện tham gia thử nghiệm A/B

Điều kiện tiên quyết

Bạn cần có

  • Unity 2019.1.0f1 trở lên có hỗ trợ bản dựng iOS và/hoặc Android

2. Bật Trình đơn gỡ lỗi

Có một Trình đơn gỡ lỗi ẩn trong dự án và nút truy cập vào trình đơn này có trong trò chơi nhưng hiện không được bật. Bạn phải bật nút này để truy cập vào nút này từ prefab MainMenu.

  1. Trong trình chỉnh sửa Unity, hãy chọn thẻ Project (Dự án), sau đó trong phần Assets (Tài sản), hãy mở rộng Hamster > Prefabs > Menus (Trình đơn) rồi nhấp vào MainMenu (Trình đơn chính).

Thẻ Dự án của trình chỉnh sửa Unity cho thấy Tài sản. Hamster, Prefabs, Menus

  1. Trong hệ thống phân cấp của thành phần tiền chế, hãy tìm đối tượng phụ bị vô hiệu hoá có tên là DebugMenuButton rồi nhấp vào đối tượng đó để mở trong thẻ Inspector (Trình kiểm tra).

Trình chỉnh sửa Unity cho thấy Trình đơn chính, với DebugMenu bị vô hiệu hoá

  1. Trong thẻ Inspector (Trình kiểm tra), hãy đánh dấu vào ô ở góc trên cùng bên trái bên cạnh trường văn bản chứa DebugMenuButton để bật thẻ này.

Thẻ Inspector cho DebugMenuButton có hộp đánh dấu

  1. Lưu thành phần hiển thị sẵn.

Nếu bạn chạy trò chơi trong trình chỉnh sửa hoặc trên thiết bị, thì giờ đây, bạn có thể truy cập vào trình đơn.

3. Bật trình đơn phụ Cấu hình từ xa

  1. Trong thẻ Project (Dự án) trong Trình chỉnh sửa Unity, hãy mở rộng Assets (Tài sản) > Hamster (Chuột hamster) > Prefabs (Prefab) > Menus (Trình đơn) rồi nhấp đúp vào đối tượng DebugMenu (Trình đơn gỡ lỗi) để mở đối tượng này trong thẻ Hierarchy (Phân cấp) của trình chỉnh sửa.

    Mục DebugMenu được lồng trong Assets, Hamster, Prefabs, Menus
  2. Trong thẻ Hierarchy (Hệ thống phân cấp), hãy mở rộng hệ thống phân cấp rồi nhấp vào đối tượng phụ trong DebugMenu > Panel (DebugMenu > Bảng điều khiển), được gắn nhãn Remote Config Actions (Thao tác Cấu hình từ xa).

Các thao tác Cấu hình từ xa được lồng trong Canvas, DebugMenu

  1. Trong thẻ Inspector (Trình kiểm tra) của Unity, hãy bật Remote Config Actions (Thao tác Cấu hình từ xa) bằng cách đánh dấu vào hộp ở bên trái trường văn bản chứa tên của đối tượng.

Trình chỉnh sửa Unity có Cấu hình từ xa\nCác thao tác được bật trong DebugMenu, Panel

Thao tác này có 2 GameObject con có tên là Set Bored Of Subtitle và Set Enjoys Subtitle. Cả hai đều được định cấu hình để gọi các phương thức hiện có nhưng chưa được triển khai trong DebugMenu.cs.

4. Đặt lại chế độ ghi đè phụ đề về mặc định trong ứng dụng

Trong lớp học lập trình trước, bạn đã ghi đè giá trị mặc định của một tham số dưới dạng JSON và sử dụng các điều kiện để phân phát nhiều biến thể. Trong lớp học lập trình này, bạn sẽ xoá điều kiện mà mình đã tạo và giới thiệu lại điều kiện mặc định trong ứng dụng, đồng thời chỉ ghi đè điều kiện đó bằng kết quả của Thử nghiệm A/B.

Cách bật lại chế độ mặc định trong ứng dụng:

  1. Mở trang Remote Config trong bảng điều khiển của Firebase rồi nhấp vào biểu tượng bút chì bên cạnh thông số subtitle_override để mở bảng điều khiển bên Chỉnh sửa thông số.
  2. Nhấp vào biểu tượng X bên cạnh điều kiện để xoá điều kiện đó.
  3. Bên cạnh giá trị mặc định còn lại, hãy bật nút Sử dụng giá trị mặc định trong ứng dụng.

Xoá một điều kiện khỏi trình chỉnh sửa thông số Cấu hình từ xa

  1. Nhấp vào Lưu để lưu các thay đổi, sau đó nhấp vào Xuất bản thay đổi để xuất bản các thay đổi.Lựa chọn Xuất bản thay đổi trên trang Remote Config

5. Đặt thuộc tính người dùng trong các hàm gỡ lỗi

Bây giờ, bạn sẽ viết phần nội dung hàm cho một số hàm Google Analytics được định cấu hình trước nhưng chưa triển khai trong DebugMenu.cs (có thể tìm thấy trong Assets > Hamster > Scripts > States).

Các hàm này thiết lập thuộc tính người dùng. Đây là những cách mô tả các phân khúc trong cơ sở người dùng và được dùng để ghi lại cảm nhận của người dùng về phụ đề của trò chơi.

Triển khai SetUserBoredOfSubtitleSetUserEnjoysSubtitle bằng cách tìm các phiên bản hiện có của chúng trong DebugMenu.cs và ghi đè chúng như sau:

void SetUserBoredOfSubtitle()
{
  Firebase.Analytics.FirebaseAnalytics.SetUserProperty("subtitle_sentiment", "bored");
}
void SetUserEnjoysSubtitle()
{
  Firebase.Analytics.FirebaseAnalytics.SetUserProperty("subtitle_sentiment", "enjoys");
}

Nếu ứng dụng của bạn được định cấu hình chính xác bằng Google Analytics, bạn có thể gọi một trong các hàm này để cung cấp thuộc tính cho các điều kiện của Cấu hình từ xa. Để gọi SetUserBoredOfSubtitle từ thiết bị di động, hãy khởi động trò chơi rồi nhấn nút Debug Menu (Trình đơn gỡ lỗi) trong trình đơn chính, sau đó nhấn Set Bored of Subtitle (Đặt phụ đề chán ngắt).

6. Tạo một Phương diện tuỳ chỉnh

Tiếp theo, bạn sẽ thiết lập nhiều biến thể phụ đề cho subtitle_override để xem phụ đề nào hoạt động hiệu quả nhất. Tuy nhiên, trong thử nghiệm A/B, bạn sẽ chỉ phân phát những biến thể này cho những người dùng có cảm xúc về phụ đề hiện tại (như được ghi lại trong subtitle_sentiment) có chứa từ "chán".

Bạn sẽ sử dụng một phương diện tuỳ chỉnh để tạo và theo dõi các thông số tuỳ chỉnh trên sự kiện Analytics. Hãy xem phần Phương diện và chỉ số tuỳ chỉnh để biết thêm thông tin.

Cách tạo một phương diện tuỳ chỉnh mới:

  1. Mở bảng điều khiển của Firebase, mở rộng trình đơn Số liệu phân tích rồi chọn Định nghĩa tuỳ chỉnh.
  2. Trên trang Định nghĩa tuỳ chỉnh, hãy nhấp vào Tạo phương diện tuỳ chỉnh.
  3. Trong cửa sổ Phương diện tuỳ chỉnh mới, hãy đặt Tên phương diện thành "Tình cảm trong phụ đề" và chọn Người dùng trong trình đơn thả xuống Phạm vi.
  4. Đối với trường Thuộc tính người dùng, hãy chọn subtitle_sentiment.

7. Thiết lập thử nghiệm A/B

Tiếp theo, hãy tạo một thử nghiệm A/B để đặt các giá trị khác nhau cho subtitle_override nhằm thử nghiệm với nhau để tối ưu hoá tỷ lệ giữ chân người dùng trong 2 đến 3 ngày.

  1. Trước tiên, hãy chọn Chỉnh sửa trên thông số subtitle_override trên trang Remote Config của bảng điều khiển Firebase:

Tham số subtitle_override trên trang Remote Config, cho thấy lựa chọn Chỉnh sửa.

  1. Trong hộp thoại Chỉnh sửa thông số xuất hiện, hãy nhấp vào Thêm thông số mới.

Lựa chọn Thêm thử nghiệm mới trên trang Chỉnh sửa thông số Remote Config.

  1. Trong danh sách xuất hiện, hãy chọn Thử nghiệm.

Trang thông số Cấu hình từ xa: Thêm thử nghiệm mới

  1. Nhập tên và nội dung mô tả cho thử nghiệm của bạn.

Mục tên và nội dung mô tả của thử nghiệm

  1. Tiếp theo, hãy chọn điều kiện nhắm mục tiêu. Trước tiên, hãy chọn Ứng dụng của bạn trong trình đơn thả xuống.

Bước Nhắm mục tiêu của một cấu hình Thử nghiệm A/B, có một ứng dụng được chọn

  1. Tiếp theo, hãy nhấp vào để thêm một điều kiện mới, sau đó chọn Thuộc tính người dùng rồi chọn subtitle_sentiment. Nếu không thấy, hãy nhập mã này theo cách thủ công.
  2. Vì bạn chỉ muốn đặt phụ đề cho những người có cảm xúc hiện tại về phụ đề là "chán", hãy chọn chứa rồi nhập bored.
  3. Bạn có thể chọn tỷ lệ phần trăm đối tượng phù hợp với tiêu chí nêu trên để đưa vào thử nghiệm. Chọn 100% để tránh sự ngẫu nhiên mà bạn khó kiểm soát.

Mục Nhắm mục tiêu trong Thử nghiệm A/B có subtitle_sentiment được chọn

  1. Tiếp theo, hãy chọn một mục tiêu mà thử nghiệm sẽ cố gắng tối đa hoá. Chọn Lưu giữ (2-3 ngày).

Mục Mục tiêu thử nghiệm A/B

  1. Tiếp theo, hãy thiết lập các thông số của thử nghiệm và tạo nhiều biến thể phụ đề . Các biến thể này là những giá trị khác nhau mà Thử nghiệm A/B sẽ phân phát cho người dùng có subtitle_sentiment chứa "buồn chán", đồng thời Thử nghiệm A/B sẽ xác định biến thể nào phù hợp nhất để tối đa hoá tỷ lệ giữ chân.
  2. Nhập giá trị thông số sau cho Biến thể A:
    {"text":"A: A game about a mechanical hamster","fontSize":8,"textColor":{"r":0.0,"g":255.0,"b":0.0,"a":255.0}}
    
  3. Nhập giá trị thông số sau cho Biến thể B:
    {"text":"B: A game about a mechanical hamster","fontSize":14,"textColor":{"r":255.0,"g":0.0,"b":0.0,"a":255.0}}
    
  4. Đặt tỷ lệ biến thể bằng số nguyên như sau:
    • Đường cơ sở: 1
    • Biến thể A: 100
    • Biến thể B: 100
    Điều này sẽ dẫn đến tổng trọng số là 0,5% cho Cơ sở, 49,8% cho Biến thể A và 49,8% cho Biến thể B.Mục cấu hình trọng số biến thểCác biến thể này chỉ định rằng trong 201 lần, Thử nghiệm A/B sẽ cung cấp giá trị mặc định cho những người cảm thấy phụ đề nhàm chán, nhưng trong 200/201 lần, thử nghiệm sẽ cung cấp một trong hai giá trị mới và ghi đè màn hình tiêu đề.
  5. Lưu và gửi bằng cách nhấp vào Bắt đầu thử nghiệm, sau đó nhấp vào Bắt đầu trên cửa sổ xác nhận bật lên.Nhấp vào Bắt đầu để bắt đầu thử nghiệm

8. Chạy phương thức Đặt thuộc tính người dùng và làm mới

Giờ đây, bạn đã thiết lập nhiều thuộc tính về người dùng. Sau đó, bạn có thể dùng các thuộc tính này để điều hướng logic hoặc cách trình bày của trò chơi.

Nếu trước đây bạn chưa chạy phương thức SetUserProperty hoặc đã đặt phương thức này thành enjoys, thì bạn vẫn sẽ thấy phụ đề mặc định khi mở trò chơi.

Nếu đã đặt thành bored (trước khi tìm nạp lại), bạn sẽ thấy một trong các giá trị mới theo tỷ lệ khoảng 50/50.

Sau khi một thiết bị tham gia thử nghiệm A/B, các giá trị mà thiết bị đó nhận được từ thử nghiệm sẽ không thay đổi và duy trì cho mỗi lần cài đặt. Do đó, để nhận được một trong các giá trị thử nghiệm khác, bạn phải tạo một lượt cài đặt mới bằng cách cài đặt lại trò chơi vào cùng một thiết bị/trình mô phỏng hoặc cài đặt trò chơi vào một thiết bị/trình mô phỏng mới.

Trong một thử nghiệm A/B thực được triển khai trên cơ sở người dùng của bạn, bạn nên cho đường cơ sở một trọng số tương tự như các biến thể khác. Nhưng trong trường hợp này, bạn chỉ định các xác suất rất lệch để xác thực rằng thử nghiệm đang hoạt động. Nếu (trong trường hợp 1/201), bạn vẫn nhận được giá trị mặc định, hãy thử cài đặt lại trò chơi vào thiết bị/trình mô phỏng của bạn.

Một ảnh hưởng khác của việc này là khi chuyển thuộc tính người dùng trở lại enjoys, giá trị sẽ không thay đổi về giá trị cơ sở. Tuy nhiên, bạn có thể thực hiện việc này bằng cách chuyển sang enjoys và cài đặt lại.

9. Xin chúc mừng!

Bạn đã sử dụng tính năng thử nghiệm A/B của Remote Config để thử nghiệm các giá trị Remote Config khác nhau và xác định mức ảnh hưởng của từng giá trị đến các chỉ số Analytics.

Nội dung đã đề cập

  • Cách thiết lập Thử nghiệm A/B bằng cách sử dụng các giá trị Cấu hình từ xa được đo lường
  • Cách sử dụng Thuộc tính người dùng của Google Analytics trong điều kiện để tham gia các thử nghiệm A/B

Các bước tiếp theo

Sau khi thử nghiệm kết thúc, bạn có thể chọn một thử nghiệm trong danh sách thử nghiệm trong dự án để quyết định việc bạn muốn làm với thử nghiệm đó. Bạn muốn chọn một trong số đó làm "lựa chọn hiệu quả nhất" hay tiến hành thêm các thử nghiệm?