1. 소개
이 Codelab에서는 Firebase 원격 구성으로 게임 계측에서 수정한 샘플 게임 MechaHamster: Level Up with Firebase edition에 A/B 테스팅을 사용하여 원격 구성 실험을 만드는 방법을 알아봅니다.
원격 구성을 사용한 A/B 테스팅을 통해 앱의 UI, 기능 또는 참여 캠페인의 변경사항을 타겟팅된 잠재고객을 대상으로 테스트한 후 더 많은 잠재고객에게 출시할 수 있습니다. 실험 결과를 사용하여 다음 작업을 할 수도 있습니다.
- 수익 및 유지율과 같은 주요 측정항목을 개선하는 매개변수 값 변형을 확인합니다.
- 어떤 사용자 하위 그룹이 어떤 변형을 선호하는지 파악합니다.
- 다양한 매개변수 값 설정의 효과를 추가로 분석하기 위해 실험 데이터를 수집하고 저장합니다.
이것이 A/B 테스팅의 핵심입니다. A/B 테스팅을 사용하면 원격 구성에 맞게 계측된 코드를 가져와 원격 구성 조건 (Google 애널리틱스 사용자 속성 포함), 백분율 출시, 애널리틱스 전환 이벤트, 이들의 조합에 따라 클라이언트가 수신하는 값을 제어하는 실험을 실행할 수 있습니다.
먼저 사용자 행동에 따라 사용자 속성을 설정하여 실험에 포함될 사용자를 제한하는 조건을 구현합니다. 그런 다음 Google 애널리틱스 사용자 속성을 사용하여 실험에 포함할 클라이언트를 결정하는 A/B 테스팅 실험을 만듭니다. 마지막으로 이 데이터를 사용하여 잠재고객에 대해 자세히 알아봅니다.
학습할 내용
- 계측된 원격 구성 값을 사용하여 A/B 테스팅을 설정하는 방법
- Google 애널리틱스 사용자 속성을 A/B 테스트 참여 조건으로 사용하는 방법
기본 요건
- Firebase 원격 구성으로 게임 계측을 완료했습니다.
필요한 사항
- iOS 또는 Android 빌드 지원이 포함된 Unity 2019.1.0f1 이상
2. 디버그 메뉴 사용 설정
프로젝트에 숨겨진 디버그 메뉴가 있으며 이 메뉴에 액세스하는 버튼이 게임에 있지만 현재 사용 설정되어 있지 않습니다. MainMenu 프리팹에서 액세스하려면 버튼을 사용 설정해야 합니다.
- Unity 편집기에서 Project 탭을 선택한 다음 Assets에서 Hamster > Prefabs > Menus를 펼치고 MainMenu를 클릭합니다.
- 프리팹 계층 구조에서 DebugMenuButton이라는 사용 중지된 하위 객체를 찾아 클릭하여 Inspector 탭에서 엽니다.
- 인스펙터 탭에서 DebugMenuButton이 포함된 텍스트 필드 옆에 있는 왼쪽 상단의 체크박스를 선택하여 사용 설정합니다.
- 프리팹을 저장합니다.
이제 에디터나 기기에서 게임을 실행하면 메뉴에 액세스할 수 있습니다.
3. 원격 구성 하위 메뉴 사용 설정
- Unity 편집기의 Project(프로젝트) 탭에서 Assets(애셋) > Hamster(햄스터) > Prefabs(프리팹) > Menus(메뉴)를 펼치고 DebugMenu(디버그 메뉴) 객체를 더블클릭하여 편집기의 Hierarchy(계층 구조) 탭에서 엽니다.
- 계층 구조 탭에서 계층 구조를 펼치고 DebugMenu > Panel 아래의 하위 객체를 클릭합니다. 하위 객체에는 Remote Config Actions라는 라벨이 지정되어 있습니다.
- Unity Inspector 탭에서 객체 이름이 포함된 텍스트 필드 왼쪽의 체크박스를 선택하여 Remote Config Actions를 사용 설정합니다.
여기에는 Set Bored Of Subtitle과 Set Enjoys Subtitle이라는 두 개의 GameObject 하위 요소가 있으며, 둘 다 DebugMenu.cs
에서 기존의 구현되지 않은 메서드를 호출하도록 구성되어 있습니다.
4. 자막 재정의를 인앱 기본값으로 재설정
이전 Codelab에서는 매개변수의 기본값을 JSON으로 재정의하고 조건을 사용하여 다양한 변형을 제공했습니다. 이 Codelab에서는 생성한 조건을 삭제하고 인앱 기본값을 다시 도입하며 A/B 테스트 결과로만 재정의합니다.
인앱 기본값을 다시 사용 설정하려면 다음 단계를 따르세요.
- Firebase Console의 원격 구성 페이지를 열고
subtitle_override
매개변수 옆에 있는 연필 아이콘을 클릭하여 매개변수 수정 측면 패널을 엽니다. - 조건 옆에 있는 X 아이콘을 클릭하여 조건을 삭제합니다.
- 나머지 기본값 옆에 있는 인앱 기본값 사용 전환 버튼을 사용 설정합니다.
- 저장을 클릭하여 변경사항을 저장한 다음 변경사항 게시를 클릭하여 변경사항을 게시합니다.
5. 디버그 함수에서 사용자 속성 설정
이제 DebugMenu.cs
(Assets > Hamster > Scripts > States에 있음)에서 사전 구성되었지만 구현되지 않은 일부 Google 애널리틱스 함수의 함수 본문을 작성합니다.
이러한 함수는 사용자층 세그먼트를 설명하는 방법이며 사용자가 게임의 부제에 대해 어떻게 생각하는지 기록하는 데 사용되는 사용자 속성을 설정합니다.
DebugMenu.cs
에서 기존 버전을 찾아 다음과 같이 덮어써서 SetUserBoredOfSubtitle
및 SetUserEnjoysSubtitle
를 구현합니다.
void SetUserBoredOfSubtitle()
{
Firebase.Analytics.FirebaseAnalytics.SetUserProperty("subtitle_sentiment", "bored");
}
void SetUserEnjoysSubtitle()
{
Firebase.Analytics.FirebaseAnalytics.SetUserProperty("subtitle_sentiment", "enjoys");
}
앱이 Google 애널리틱스로 올바르게 구성된 경우 이러한 함수 중 하나를 호출하여 속성을 원격 구성의 조건에서 사용할 수 있도록 할 수 있습니다. 모바일 기기에서 SetUserBoredOfSubtitle
를 호출하려면 게임을 시작하고 기본 메뉴에서 디버그 메뉴 버튼을 누른 다음 자막 지루함 설정을 누릅니다.
6. 맞춤 측정기준 만들기
다음으로 subtitle_override
의 다양한 자막 변형을 설정하여 어떤 자막이 가장 효과적인지 확인합니다. 하지만 A/B 테스트에서는 현재 부제목에 대한 감정 (subtitle_sentiment
에 기록됨)에 '지루함'이라는 단어가 포함된 사용자에게만 이러한 변형을 제공합니다.
맞춤 측정기준을 사용하여 애널리틱스 이벤트에서 맞춤 매개변수를 만들고 추적합니다. 자세한 내용은 맞춤 측정기준 및 측정항목을 참고하세요.
새 맞춤 측정기준을 만들려면 다음 단계를 따르세요.
- Firebase Console을 열고 애널리틱스 메뉴를 펼친 다음 맞춤 정의를 선택합니다.
- 맞춤 정의 페이지에서 맞춤 측정기준 만들기를 클릭합니다.
- 새 맞춤 측정기준 창에서 측정기준 이름을 '자막 감정'으로 설정하고 범위 드롭다운에서 사용자를 선택합니다.
- 사용자 속성 필드에서
subtitle_sentiment.
을 선택합니다.
7. A/B 테스팅 실험 설정
다음으로, 2~3일 사용자 유지율을 최적화하기 위해 서로 비교할 subtitle_override
의 값을 다르게 설정하는 A/B 테스팅 실험을 만듭니다.
- 먼저 Firebase Console 원격 구성 페이지에서
subtitle_override
매개변수의 수정을 선택합니다.
- 표시되는 매개변수 수정 대화상자에서 새로 추가를 클릭합니다.
- 표시되는 목록에서 실험을 선택합니다.
- 실험 이름과 설명을 입력합니다.
- 다음으로 타겟팅 조건을 선택합니다. 먼저 드롭다운에서 앱을 선택합니다.
- 다음으로 And를 클릭하여 새 조건을 추가한 다음 User Property를 선택하고
subtitle_sentiment
를 선택합니다. 표시되지 않으면 직접 입력합니다. - 현재 자막 감정에 '지루함'이 포함된 사용자에게만 자막을 설정하려고 하므로 포함을 선택하고
bored
를 입력합니다. - 원하는 경우 위의 기준과 일치하는 잠재고객 중 테스트에 노출할 비율을 선택합니다. 쉽게 제어할 수 없는 무작위성을 방지하려면 100%를 선택하세요.
- 그런 다음 테스트에서 최대화할 목표를 선택합니다. 유지 (2~3일)을 선택합니다.
- 그런 다음 실험의 매개변수를 설정하고 다양한 자막 변형을 만듭니다 . 이러한 변수는
subtitle_sentiment
에 '지루함'이 포함된 사용자에게 A/B 테스트가 제공하는 다양한 값이며, A/B 테스트는 유지율을 극대화하는 데 가장 적합한 변수를 결정합니다. - 변형 A에 다음 매개변수 값을 입력합니다.
{"text":"A: A game about a mechanical hamster","fontSize":8,"textColor":{"r":0.0,"g":255.0,"b":0.0,"a":255.0}}
- 변형 B에 다음 매개변수 값을 입력합니다.
{"text":"B: A game about a mechanical hamster","fontSize":14,"textColor":{"r":255.0,"g":0.0,"b":0.0,"a":255.0}}
- 다음과 같이 정수로 변형 비율을 설정합니다.
- 기준: 1
- 대안 A: 100
- 변형 B: 100
이러한 대안은 201번 중 한 번은 A/B 테스팅에서 자막에 지루해하는 사용자에게 기본값을 제공하지만 200/201번은 두 개의 새 값 중 하나를 제공하고 타이틀 화면을 재정의한다고 지정합니다.
- 실험 시작을 클릭하여 저장하고 제출한 다음 확인 팝업에서 시작을 클릭합니다.
8. 사용자 속성 설정 메서드를 실행하고 새로고침
이제 사용자에 관한 다양한 속성을 설정했으며, 이를 사용하여 게임의 로직이나 프레젠테이션을 제어할 수 있습니다.
이전에 SetUserProperty
메서드를 실행하지 않았거나 enjoys
로 설정한 경우 게임을 열 때 기본 자막이 계속 표시됩니다.
(다시 가져오기 전에) bored
로 설정한 경우 새 값 중 하나가 대략 50/50 비율로 표시됩니다.
기기가 A/B 테스트 실험에 참여하면 해당 실험에서 수신하는 값은 변경되지 않으며 설치별로 지속됩니다. 따라서 다른 실험 값을 수신하려면 동일한 기기/시뮬레이터에 게임을 재설치하거나 새 기기/시뮬레이터에 게임을 설치하여 새 설치를 만들어야 합니다.
사용자층 전체에서 실행되는 실제 A/B 테스트에서는 기준선에 다른 변형과 비슷한 가중치를 부여해야 합니다. 하지만 이 경우 실험이 작동하는지 확인하기 위해 매우 치우친 확률을 할당합니다. (1/201 사례에서) 기본값이 계속 표시되면 기기/시뮬레이터에 게임을 다시 설치해 보세요.
이로 인해 사용자 속성을 다시 enjoys
로 전환해도 값이 기준선으로 다시 변경되지 않습니다. 하지만 enjoys
로 전환한 후 다시 설치하면 됩니다.
9. 수고하셨습니다.
원격 구성 A/B 테스팅을 사용하여 다양한 원격 구성 값을 실험하고 각 값이 애널리틱스 측정항목에 미치는 영향을 확인했습니다.
학습한 내용
- 계측된 원격 구성 값을 사용하여 A/B 테스팅을 설정하는 방법
- Google 애널리틱스 사용자 속성을 A/B 테스트 실험 참여 조건의 일부로 사용하는 방법
다음 단계
실험이 끝나면 프로젝트의 실험 목록에서 하나를 선택하여 실험을 어떻게 할지 결정할 수 있습니다. 하나를 '우수'로 선택하시겠어요, 아니면 실험을 더 진행하시겠어요?