Implemente testes A/B em seu jogo Unity com o Firebase Remote Config

1. Introdução

Neste codelab, você aprenderá a criar um experimento do Configuração remota usando testes A/B para o jogo de amostra MechaHamster: Level Up with Firebase edition , que você modificou em Instrumentar seu jogo com o Firebase Remote Config .

O teste A/B com Configuração remota permite testar alterações na IU, nos recursos ou nas campanhas de engajamento do seu aplicativo em um público-alvo antes de lançá-las para um público mais amplo. Você também pode usar os resultados do experimento para:

  • Determine quais variantes de valor de parâmetro melhoram as principais métricas, como receita e retenção.
  • Descubra quais subgrupos de usuários preferem quais variantes.
  • Reúna e armazene dados de experimentos para realizar análises adicionais sobre os efeitos da definição de diferentes valores de parâmetros.

Essa é a essência do teste A/B: ele permite que você pegue código instrumentado para a Configuração remota e inicie experimentos que controlam os valores que os clientes recebem, com base nas condições da Configuração remota (incluindo propriedades do usuário do Google Analytics), lançamentos percentuais, eventos de conversão do Analytics, e alguma combinação destes.

Primeiro, você implementará uma condição que determina quem será incluído no experimento, definindo propriedades do usuário com base nas ações do usuário. Em seguida, você criará uma experiência de teste A/B que usa as propriedades do usuário do Google Analytics para determinar quais clientes serão incluídos na experiência. E, por fim, você usará esses dados para entender mais sobre o seu público.

O que você aprenderá

  • Como configurar testes A/B usando valores instrumentados da Configuração remota
  • Como usar as propriedades do usuário do Google Analytics como parte das condições de admissão em testes A/B

Pré-requisitos

O que você precisará

  • Unity 2019.1.0f1 ou superior com suporte para compilação iOS e/ou Android

2. Habilitando o menu de depuração

Existe um menu de depuração oculto no projeto, e o botão para acessar este menu existe no jogo, mas não está habilitado no momento. Você deve ativar o botão para acessá-lo no pré-fabricado MainMenu.

  1. No editor Unity, selecione a guia Project e, em Assets , expanda Hamster > Prefabs > Menus e clique em MainMenu .

The Unity editor Project tab showing\nAssets. Hamster, Prefabs, Menus

  1. Na hierarquia pré-fabricada, encontre o subobjeto desabilitado chamado DebugMenuButton e clique nele para abri-lo na guia Inspetor .

The Unity editor shows the Main Menu,\nwith DebugMenu disabled

  1. Na guia Inspetor , marque a caixa no canto superior esquerdo próximo ao campo de texto que contém DebugMenuButton para habilitá-lo.

The Inspector tab for DebugMenuButton\nwith checkbox

  1. Salve a pré-fabricada.

Se você executar o jogo no editor ou no seu dispositivo, o menu deverá estar acessível agora.

3. Ative o submenu Configuração remota

  1. Na guia Projeto no Editor Unity, expanda Ativos > Hamster > Pré-fabricados > Menus e clique duas vezes no objeto DebugMenu para abri-lo na guia Hierarquia do editor.

    DebugMenu item nested under Assets,\nHamster, Prefabs, Menus
  2. Na guia Hierarquia , expanda a hierarquia e clique no subobjeto em DebugMenu > Panel , rotulado como Remote Config Actions .

Remote Config Actions nested under\nCanvas, DebugMenu

  1. Na guia Unity Inspector , habilite Ações de configuração remota marcando a caixa à esquerda do campo de texto que contém o nome do objeto.

Unity editor with Remote Config\nActions enabled under DebugMenu, Panel

Isso tem dois filhos GameObject chamados Set Bored Of Subtitle e Set Enjoys Subtitle, que são configurados para chamar métodos existentes, mas não implementados, em DebugMenu.cs .

4. Redefina a substituição de legenda para o padrão do aplicativo

No codelab anterior , você substituiu o valor padrão de um parâmetro como JSON e usou condições para veicular diferentes variantes. Como parte deste codelab, você excluirá a condição criada e reintroduzirá o padrão no aplicativo, e só a substituirá pelo resultado do teste A/B.

Para reativar o padrão no aplicativo:

  1. Abra a página Configuração remota no console do Firebase e clique no ícone de lápis ao lado do parâmetro subtitle_override para abrir o painel lateral Editar parâmetro .
  2. Clique no ícone X próximo à condição para excluí-la.
  3. Ao lado do valor padrão restante, ative a opção Usar padrão no aplicativo .

Deleting a condition from the Remote\nConfig parameter editor

  1. Clique em Salvar para salvar suas alterações e clique em Publicar alterações para publicá-las. Publish\nchanges option on the Remote Config page

5. Defina as propriedades do usuário nas funções de depuração

Agora você escreverá corpos de funções para algumas funções pré-configuradas, mas não implementadas, do Google Analytics em DebugMenu.cs (que podem ser encontradas em Ativos > Hamster > Scripts > Estados).

Essas funções definem propriedades do usuário , que são formas de descrever segmentos de sua base de usuários e são usadas para registrar como o usuário se sente em relação à legenda do jogo.

Implemente SetUserBoredOfSubtitle e SetUserEnjoysSubtitle encontrando as versões existentes deles em DebugMenu.cs e substituindo-as da seguinte forma:

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

Se seu aplicativo estiver configurado corretamente com o Google Analytics, você poderá chamar uma dessas funções para disponibilizar a propriedade para as condições do Configuração remota. Para chamar SetUserBoredOfSubtitle de um dispositivo móvel, inicie o jogo e pressione o botão Debug Menu no menu principal e pressione Set Bored of Subtitle .

6. Crie uma dimensão personalizada

A seguir, você configurará várias variantes de legenda para subtitle_override para ver qual legenda funciona melhor. Mas, em seu teste A/B, você só servirá essas variantes para usuários cujos sentimentos sobre a legenda atual (conforme registrado em subtitle_sentiment ) incluam a palavra "entediado".

Você usará uma dimensão personalizada para criar e acompanhar parâmetros personalizados em eventos do Analytics. Consulte Dimensões e métricas personalizadas para obter mais informações.

Para criar uma nova dimensão personalizada:

  1. Abra o console do Firebase , expanda o menu Analytics e selecione Definições personalizadas.
  2. Na página Definições personalizadas, clique em Criar dimensões personalizadas .
  3. Na janela Nova dimensão personalizada , defina o nome da dimensão como "Sentimento da legenda" e, no menu suspenso Escopo , selecione Usuário .
  4. Para o campo Propriedade do usuário , selecione subtitle_sentiment.

7. Configure o experimento de teste A/B

Em seguida, crie um experimento de teste A/B para definir valores diferentes para subtitle_override a serem testados entre si, a fim de otimizar a retenção de usuários de dois a três dias.

  1. Primeiro, selecione Editar no parâmetro subtitle_override na página Configuração remota do console do Firebase:

The subtitle_override parameter on\nthe Remote Config page, showing the Edit option.

  1. Na caixa de diálogo Editar parâmetro que aparece, clique em Adicionar novo .

The Add new experiment option on the\nRemote Config Edit parameter page.

  1. Na lista que aparece, selecione Experimentar .

Remote Config parameter page: Add new\nexperiment

  1. Insira um nome e uma descrição para sua experiência.

Experiment name and description\nsection

  1. Em seguida, escolha as condições de segmentação. Primeiro, selecione seu aplicativo no menu suspenso.

The Targeting step of an A/B Testing\nconfiguration, with an app selected

  1. Em seguida, clique em E para adicionar uma nova condição, selecione Propriedade do usuário e escolha subtitle_sentiment . Se não aparecer, insira-o manualmente.
  2. Como você deseja definir uma legenda apenas para aqueles cujo sentimento atual de legenda inclui "entediado", escolha contém e digite bored .
  3. Opcionalmente, escolha qual porcentagem do público que atende aos critérios acima será exposta ao teste. Selecione 100% para evitar aleatoriedade que você não pode controlar facilmente.

A/B Testing Targeting section with\nsubtitle_sentiment selected

  1. Em seguida, selecione uma meta que o teste tentará maximizar. Escolha Retenção (2-3 dias) .

A/B Testing Goals section

  1. Em seguida, configure os parâmetros do experimento e crie diferentes variantes de legenda. Essas variantes são os diferentes valores que o teste A/B servirá aos usuários cujo subtitle_sentiment contém 'entediado', e o teste A/B determinará qual variante é melhor para maximizar a retenção.
  2. Insira o seguinte valor de parâmetro para a Variante 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. Insira o seguinte valor de parâmetro para a Variante 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. Defina as proporções de variantes com números inteiros da seguinte forma:
    • Linha de base : 1
    • Variante A : 100
    • Variante B : 100
    Isto resultará em pesos totais de 0,5% para a Linha de Base, 49,8% para a Variante A e 49,8% para a Variante B. Variant weights configuration\nsection Essas variantes especificam que uma em cada 201 vezes, o Teste A/B serve como padrão para aqueles que estão entediados com as legendas, mas 200/201 vezes, ele servirá um dos dois novos valores e substituirá a tela de título.
  5. Salve e envie clicando em Iniciar experimento e, em seguida, clique em Iniciar no pop-up de confirmação. Click Start to start the\nexperiment

8. Execute o método Definir propriedade do usuário e atualize

Agora você definiu várias propriedades sobre o usuário, que podem ser usadas para direcionar a lógica ou a apresentação do seu jogo.

Se você ainda não executou o método SetUserProperty ou o configurou para enjoys , você ainda deverá ver a legenda padrão ao abrir o jogo.

Se você definiu como bored (antes de buscar novamente), deverá ver um dos novos valores em uma proporção aproximada de 50/50.

Depois que um dispositivo tiver entrado em um experimento de teste A/B, os valores recebidos desse experimento não serão alterados e serão persistentes por instalação . Como consequência, para receber um dos outros valores experimentais, você deve criar uma nova instalação reinstalando o jogo no mesmo dispositivo/simulador ou instalando o jogo em um novo dispositivo/simulador.

Em um teste A/B real lançado em sua base de usuários, você deve dar à linha de base um peso semelhante ao das outras variantes. Mas, neste caso, você atribui probabilidades muito distorcidas para validar se o experimento está funcionando. Se (no caso 1/201) você ainda receber o valor padrão, tente reinstalar o jogo em seu dispositivo/simulador.

Outro efeito disso é que mudar a propriedade do usuário de volta para enjoys não alterará o valor de volta à linha de base, mas, novamente, você pode fazer isso alternando para enjoys e reinstalando.

9. Parabéns!

Você usou o teste A/B da Configuração remota para testar diferentes valores da Configuração remota e determinar como cada um afeta as métricas do Analytics.

O que cobrimos

  • Como configurar testes A/B usando valores instrumentados da Configuração remota
  • Como usar as propriedades do usuário do Google Analytics como parte das condições de admissão em experimentos de teste A/B

Próximos passos

Quando o experimento terminar, você poderá selecionar um da lista de experimentos do seu projeto para decidir o que deseja fazer com ele. Quer escolher um como “vencedor” ou realizar mais experimentos?