Firebase 원격 구성으로 Unity 게임의 A/B 테스트 구현

1. 소개

이 Codelab에서는 Firebase 원격 구성으로 게임 계측에서 수정한 샘플 게임인 MechaHamster: Level Up with Firebase 버전에 A/B 테스팅을 사용하여 원격 구성 실험을 만드는 방법을 알아봅니다.

원격 구성을 사용한 A/B 테스팅을 사용하면 앱 UI, 기능 또는 참여 캠페인의 변경사항을 타겟 잠재고객을 대상으로 테스트한 후 더 넓은 사용자층을 대상으로 테스트할 수 있습니다. 실험 결과를 사용하여 다음을 수행할 수도 있습니다.

  • 수익 및 유지율과 같은 주요 측정항목을 개선하는 매개변수 값 변형을 파악합니다.
  • 사용자가 선호하는 하위 그룹을 파악할 수 있습니다.
  • 실험 데이터를 수집하고 저장하여 다양한 매개변수 값을 설정할 경우의 영향에 대한 추가 분석을 수행합니다.

이것이 A/B 테스팅의 핵심입니다. A/B 테스팅을 통해 원격 구성을 위해 계측된 코드를 사용하고 원격 구성 조건 (Google 애널리틱스 사용자 속성 포함), 배포 비율, 애널리틱스 전환 이벤트 및 이들의 조합을 기반으로 클라이언트가 받는 값을 제어하는 실험을 시작할 수 있습니다.

먼저 사용자 액션에 따라 사용자 속성을 설정하여 실험에 포함될 사용자를 통제하는 조건을 구현합니다. 그런 다음 Google 애널리틱스 사용자 속성을 사용하여 실험에 포함될 클라이언트를 결정하는 A/B 테스팅 실험을 만듭니다. 마지막으로 이 데이터를 사용하여 잠재고객에 대해 더 자세히 알아봅니다.

학습할 내용

  • 계측 원격 구성 값을 사용하여 A/B 테스팅을 설정하는 방법
  • A/B 테스트 참여를 위한 조건의 일부로 Google 애널리틱스 사용자 속성을 사용하는 방법

기본 요건

필요한 사항

  • iOS 또는 Android 빌드를 지원하는 Unity 2019.1.0f1 이상

2. 디버그 메뉴 사용 설정

프로젝트에 디버그 메뉴가 숨겨져 있고 이 메뉴에 액세스하는 버튼이 게임에 있지만 현재 사용 설정되어 있지 않습니다. MainMenu 프리패브에서 액세스하려면 버튼을 사용 설정해야 합니다.

  1. Unity 편집기에서 Project(프로젝트) 탭을 선택한 다음 Assets(애셋)에서 Hamster(햄스터)를 펼칩니다. 프리패브 > Menus로 이동한 다음 MainMenu를 클릭합니다.

애셋을 보여주는 Unity 편집기\n프로젝트 탭 햄스터, 프리패브, 메뉴

  1. prefab 계층 구조에서 DebugMenuButton이라는 사용 중지된 하위 객체를 찾아 클릭하여 Inspector 탭에서 엽니다.

Unity 편집기에 DebugMenu가 사용 중지된\n기본 메뉴가 표시됨

  1. Inspector(검사기) 탭에서 DebugMenuButton이 포함된 텍스트 필드 옆에 있는 체크박스를 선택하여 사용 설정합니다.

체크박스가 있는 DebugMenuButton의\n검사 탭

  1. prefab을 저장합니다.

편집기 또는 기기에서 게임을 실행하면 이제 메뉴에 액세스할 수 있습니다.

3. 원격 구성 하위 메뉴 사용 설정

  1. Unity 편집기의 프로젝트 탭에서 애셋을 펼칩니다. 햄스터 > 프리패브 > Menus로 이동한 다음 DebugMenu 객체를 더블클릭하여 편집기 Hierarchy(계층 구조) 탭에서 엽니다.

    애셋,\n햄스터, 프리패브, 메뉴 아래에 중첩된 DebugMenu 항목
  2. Hierarchy(계층 구조) 탭에서 계층 구조를 확장하고 DebugMenu > 패널로 이동합니다. 원격 구성 작업으로 라벨이 지정됩니다.

캔버스, DebugMenu 아래에\n중첩된 원격 구성 작업

  1. Unity Inspector(검사기) 탭에서 객체 이름이 포함된 텍스트 필드 왼쪽에 있는 체크박스를 선택하여 Remote Config Actions(원격 구성 작업)를 사용 설정합니다.

DebugMenu(디버그 메뉴)의 Panel(패널)에서 원격 구성 작업이 사용 설정된 Unity 편집기

여기에는 Set Bored Of Subtitle 및 Set Ours Subtitle이라는 두 개의 GameObject 하위 요소가 있습니다. 둘 다 DebugMenu.cs에서 기존이지만 구현되지 않은 메서드를 호출하도록 구성됩니다.

4. 자막 재정의를 인앱 기본값으로 재설정

이전 Codelab에서는 매개변수의 기본값을 JSON으로 재정의하고 조건을 사용하여 다양한 변형을 제공했습니다. 이 Codelab의 일환으로 만든 조건을 삭제하고 인앱 기본값을 다시 도입하며 A/B 테스팅의 결과로만 재정의하게 됩니다.

인앱 기본값을 다시 사용 설정하는 방법은 다음과 같습니다.

  1. Firebase Console에서 원격 구성 페이지를 열고 subtitle_override 매개변수 옆의 연필 아이콘을 클릭하여 매개변수 수정 측면 패널을 엽니다.
  2. 조건 옆에 있는 X 아이콘을 클릭하여 삭제합니다.
  3. 나머지 기본값 옆에 있는 인앱 기본값 사용 전환 버튼을 사용 설정합니다.

원격 구성 매개변수 편집기에서\n조건 삭제

  1. 저장을 클릭하여 변경사항을 저장한 후 변경사항 게시를 클릭하여 변경사항을 게시합니다.원격 구성 페이지의\n변경사항 게시 옵션

5. 디버그 함수에서 사용자 속성 설정

이제 DebugMenu.cs에서 사전 구성되었지만 구현되지 않은 일부 Google 애널리틱스 함수의 함수 본문을 작성해 보겠습니다 (애셋 > 햄스터 > 스크립트 > 상태에서 확인).

이러한 함수는 사용자층 세그먼트를 설명하는 방법인 사용자 속성을 설정하며 게임 부제목에 대한 사용자의 의견을 기록하는 데 사용됩니다.

DebugMenu.cs에서 기존 버전을 찾아 다음과 같이 덮어써서 SetUserBoredOfSubtitleSetUserEnjoysSubtitle를 구현합니다.

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

앱이 Google 애널리틱스로 올바르게 구성되었다면 이러한 함수 중 하나를 호출하여 원격 구성의 조건에 속성을 제공할 수 있습니다. 휴대기기에서 SetUserBoredOfSubtitle를 호출하려면 게임을 시작하고 기본 메뉴에서 Debug Menu(디버그 메뉴) 버튼을 누른 다음 Set Bored of Subtitle(자막이 너무 싫음)을 누릅니다.

6. 맞춤 측정기준 만들기

다음으로 subtitle_override의 다양한 자막 변형을 설정하여 가장 효과적인 부제목을 확인합니다. 하지만 A/B 테스트에서는 subtitle_sentiment에 기록된 현재 자막에 대한 느낌에 '지루함'이라는 단어가 포함된 사용자에게만 이러한 변형이 게재됩니다.

맞춤 측정기준을 사용하여 애널리틱스 이벤트에서 맞춤 매개변수를 만들고 추적합니다. 자세한 내용은 맞춤 측정기준 및 측정항목을 참고하세요.

새 맞춤 측정기준을 만드는 방법은 다음과 같습니다.

  1. Firebase Console을 열고 애널리틱스 메뉴를 펼친 다음 맞춤 정의를 선택합니다.
  2. 맞춤 정의 페이지에서 맞춤 측정기준 만들기를 클릭합니다.
  3. 새 맞춤 측정기준 창에서 측정기준 이름을 '부제목 감정'으로 설정합니다. 범위 드롭다운에서 사용자를 선택합니다.
  4. 사용자 속성 필드에서 subtitle_sentiment.를 선택합니다.

7. A/B 테스팅 실험 설정

다음으로, A/B 테스팅 실험을 만들어 2~3일간의 사용자 유지율을 최적화하기 위해 서로 테스트할 subtitle_override의 다른 값을 설정합니다.

  1. 먼저 Firebase Console 원격 구성 페이지subtitle_override 매개변수에서 수정을 선택합니다.

수정 옵션이 표시된 원격 구성 페이지의\nsubtitle_override 매개변수

  1. 표시되는 매개변수 수정 대화상자 내에서 새로 추가를 클릭합니다.

원격 구성 매개변수 수정 페이지의\n새 실험 추가 옵션

  1. 표시되는 목록에서 실험을 선택합니다.

원격 구성 매개변수 페이지: 새 실험\n추가

  1. 실험의 이름과 설명을 입력합니다.

실험 이름 및 설명\n섹션

  1. 다음으로 타겟팅 조건을 선택합니다. 먼저 드롭다운에서 앱을 선택합니다.

앱이 선택된 A/B 테스팅 구성의\n타겟팅 단계

  1. 그런 다음 And를 클릭하여 새 조건을 추가한 다음 사용자 속성subtitle_sentiment를 차례로 선택합니다. 코드가 표시되지 않으면 직접 입력합니다.
  2. 현재 자막 감정에 '지루함'이 포함된 시청자에 대해서만 자막을 설정하려고 하므로 포함을 선택하고 bored를 입력합니다.
  3. 원하는 경우 위 기준과 일치하는 잠재고객의 비율을 선택하여 테스트에 노출할 수 있습니다. 쉽게 제어할 수 없는 임의성을 방지하려면 100%를 선택합니다.

subtitle_sentiment가 선택된\nA/B 테스팅 타겟팅 섹션

  1. 다음으로 테스트에서 최대화할 목표를 선택합니다. 유지 (2~3일)를 선택합니다.

A/B 테스팅 목표 섹션

  1. 그런 다음 실험 매개변수를 설정하고 다양한 자막 버전을 만듭니다 . 이러한 변형은 subtitle_sentiment에 'bored'가, A/B 테스팅을 통해 유지율을 극대화하는 데 가장 적합한 대안을 파악할 수 있습니다.
  2. 대안 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. 대안 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. 정수를 사용하여 대안 비율을 다음과 같이 설정합니다.
    • 기준: 1
    • 대안 A: 100
    • 대안 B: 100
    를 통해 개인정보처리방침을 정의할 수 있습니다. 그 결과 기준의 총 가중치는 0.5%, 대안 A에는 49.8%, 대안 B에는 49.8% 가 됩니다.대안 가중치 구성\n섹션이러한 대안은 201회 중 1회, A/B 테스팅에서 자막이 지루한 사용자에게는 기본적으로 200/201회 게재되며 두 개의 새로운 값 중 하나를 우선 게재한다는 것을 명시합니다.
  5. 실험 시작을 클릭하여 저장하고 제출한 후 확인 팝업에서 시작을 클릭합니다.'시작'을 클릭하여\n실험을 시작합니다.

8. 사용자 속성 설정 메서드를 실행하고 새로고침

이제 사용자에 관한 다양한 속성을 설정했으며, 이러한 속성은 게임의 로직이나 표현을 지시하는 데 사용할 수 있습니다.

이전에 SetUserProperty 메서드를 실행하지 않았거나 enjoys로 설정한 경우 게임을 열면 기본 자막이 계속 표시됩니다.

다시 가져오기 전에 bored로 설정했다면 새 값 중 하나가 약 50/50 비율로 표시됩니다.

기기가 A/B 테스팅 실험에 시작되면 해당 실험에서 받은 값은 변경되지 않으며 설치마다 영구적입니다. 따라서 다른 실험용 값 중 하나를 수신하려면 동일한 기기/시뮬레이터에 게임을 재설치하거나 새 기기/시뮬레이터에 게임을 설치하여 새 설치를 생성해야 합니다.

사용자층을 대상으로 실행된 실제 A/B 테스트에서는 다른 대안과 유사한 가중치를 기준에 부여해야 합니다. 그러나 이 경우에는 실험이 제대로 작동하는지 확인하기 위해 매우 왜곡된 확률을 할당합니다. (1/201의 경우) 여전히 기본값이 표시된다면 게임을 기기/시뮬레이터에 다시 설치해 보세요.

또 다른 영향은 사용자 속성을 다시 enjoys로 전환해도 값이 다시 기준으로 변경되지 않지만 다시 enjoys로 전환하고 다시 설치하면 됩니다.

9. 수고하셨습니다.

원격 구성 A/B 테스팅을 사용하여 다양한 원격 구성 값을 실험하고 각 값이 애널리틱스 측정항목에 미치는 영향을 확인했습니다.

학습한 내용

  • 계측 원격 구성 값을 사용하여 A/B 테스팅을 설정하는 방법
  • A/B 테스팅 실험에 참여하기 위한 조건의 일부로 Google 애널리틱스 사용자 속성을 사용하는 방법

다음 단계

실험이 끝나면 프로젝트의 실험 목록에서 실험을 선택하여 수행할 작업을 결정할 수 있습니다. 하나를 '우승자'로 선택하시겠습니까? 더 많은 실험을 수행할까요?