Implementar testes A/B para seu jogo do Unity com a Configuração remota do Firebase

1. Introdução

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

O Teste A/B com a Configuração remota permite testar mudanças na interface, nos recursos ou nas campanhas de engajamento do seu app em um público-alvo antes de implementá-las para um público mais amplo. Você também pode usar os resultados do experimento para:

  • Determinar quais variantes do 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ê use o código instrumentado para a Configuração remota e inicie experimentos que controlam os valores recebidos pelos clientes com base nas condições da Configuração remota (incluindo as propriedades do usuário do Google Analytics), lançamentos por porcentagem, eventos de conversão do Analytics e alguma combinação desses.

Primeiro, você vai implementar uma condição que restringe quem será incluído no experimento definindo propriedades do usuário com base nas ações dele. Em seguida, você vai criar um experimento de Teste A/B que usa as propriedades do usuário do Google Analytics para determinar quais clientes são incluídos no experimento. Por fim, você vai usar esses dados para entender melhor seu público-alvo.

O que você vai aprender

  • Como definir um teste 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

Pré-requisitos

  • Unity 2019.1.0f1 ou mais recente com suporte a build para iOS e/ou Android

2. Ativar o menu de depuração

Há um menu de depuração oculto no projeto, e o botão para acessar esse menu existe no jogo, mas não está ativado no momento. É necessário ativar o botão para acessá-lo no prefab MainMenu.

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

Guia "Project" do editor do Unity mostrando os recursos. Hamster, Prefabs, Menus

  1. Na hierarquia de prefab, encontre o subobjeto desativado chamado DebugMenuButton e clique nele para abrir na guia Inspector.

O editor do Unity mostra o menu principal,\ncom DebugMenu desativado.

  1. Na guia Inspector, marque a caixa no canto superior esquerdo ao lado do campo de texto que contém DebugMenuButton para ativar.

Guia "Inspector" para DebugMenuButton\ncom caixa de seleção

  1. Salve o prefab.

Se você executar o jogo no editor ou no dispositivo, o menu vai estar acessível.

3. Ativar o submenu da Configuração remota

  1. Na guia Project do editor do Unity, expanda Assets > Hamster > Prefabs > Menus e clique duas vezes no objeto DebugMenu para abrir na guia Hierarchy do editor.

    Item DebugMenu aninhado em Recursos,\nHamster, Prefabs, Menus
  2. Na guia Hierarquia, expanda a hierarquia e clique no subobjeto em DebugMenu > Painel, que é identificado como Ações de configuração remota.

Ações da Configuração remota aninhadas em\nCanvas, DebugMenu

  1. Na guia Inspector do Unity, ative as Ações de configuração remota marcando a caixa à esquerda do campo de texto com o nome do objeto.

Editor do Unity com a Configuração remota\nAções ativadas no Painel de DebugMenu

Ele 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. Redefinir a substituição de legenda para o padrão no app

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

Para reativar o padrão no app:

  1. Abra a página da 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 ao lado da condição para excluí-la.
  3. Ao lado do valor padrão restante, ative a opção Usar padrão no app.

Como excluir uma condição do editor de parâmetro da Configuração\nremota

  1. Clique em Salvar para salvar as alterações e em Publicar mudanças para publicar as alterações.Opção "Publicar\nmudanças" na página da Configuração remota

5. Definir propriedades do usuário em funções de depuração

Agora você vai escrever corpos de função para algumas funções pré-configuradas, mas não implementadas, do Google Analytics em DebugMenu.cs, que pode ser encontrado em Recursos > Hamster > Scripts > Estados.

Essas funções definem propriedades do usuário, que são maneiras de descrever segmentos da 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 maneira:

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

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

6. Criar uma dimensão personalizada

Em seguida, você vai configurar várias variantes de legenda para o subtitle_override e conferir qual delas funciona melhor. No teste A/B, porém, você só vai veicular essas variantes para usuários que sentem que a legenda atual (como registrada em subtitle_sentiment) inclui a palavra "entediado".

Você vai usar uma dimensão personalizada para criar e acompanhar parâmetros personalizados em eventos do Google Analytics. Consulte Dimensões e métricas personalizadas para 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. No campo Propriedade do usuário, selecione subtitle_sentiment..

7. Configurar o experimento do Teste A/B

Em seguida, crie um experimento de Teste A/B para definir valores diferentes de subtitle_override que serão testados entre si para 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 da Configuração remota do console do Firebase:

O parâmetro subtitle_override na\npágina da Configuração remota, mostrando a opção "Editar".

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

A opção "Adicionar novo experimento" na página de edição de parâmetros da\nConfiguração remota.

  1. Na lista que aparece, selecione Experimento.

Página de parâmetros da Configuração remota: adicionar novo\nexperimento

  1. Insira um nome e uma descrição para o experimento.

Nome e descrição do experimento\nseção

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

Etapa de segmentação da configuração de um teste A/B, com um app selecionado

  1. Em seguida, clique em E para adicionar uma nova condição, selecione Propriedade do usuário e escolha subtitle_sentiment. Se ele não aparecer, insira-o manualmente.
  2. Como você só quer definir um subtítulo para aqueles cujo sentimento atual inclui "entediado", escolha contém e digite bored.
  3. Opcionalmente, escolha qual porcentagem do público-alvo que corresponde aos critérios acima será exposto ao teste. Selecione 100% para evitar aleatoriedade que não pode ser controlada com facilidade.

Seção de segmentação do teste A/B com\nsubtitle_sentiment selecionado

  1. Em seguida, selecione uma meta para a qual o teste tentará maximizar. Selecione Retenção (2 a 3 dias).

Seção "Metas do teste A/B"

  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 vai mostrar aos usuários cujo subtitle_sentiment contém "bored", e o Teste A/B vai 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:
    • Valor de referência: 1
    • Variante A: 100
    • Variante B: 100
    Isso resultará em ponderações totais de 0,5% para o valor de referência, 49,8% para a variante A e 49,8% para a variante B.Seção de configuração dos pesos de variantesEssas variantes especificam que uma de 201 vezes, o Teste A/B exibe o padrão para aqueles que não gostam das legendas, mas, em 200/201 vezes, ele vai veicular um dos dois novos valores e substituir a tela do título.
  5. Salve e envie clicando em Iniciar experimento e depois em Iniciar no pop-up de confirmação.Clique em "Iniciar" para começar o\nexperimento.

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 jogo.

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

Se você o definiu como bored (antes da nova busca), um dos novos valores será mostrado em uma proporção aproximada de 50/50.

Depois que um dispositivo participa de um experimento do Teste A/B, os valores recebidos desse experimento não mudam e são persistentes por instalação. Como consequência, para receber um dos outros valores experimentais, é necessário 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 toda a base de usuários, você precisa 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 no seu dispositivo/simulador.

Outro efeito é que mudar a propriedade do usuário de volta para enjoys não muda o valor de volta para o valor de referência. No entanto, é possível fazer isso alternando para enjoys e reinstalando.

9. Parabéns!

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

O que vimos

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

Próximas etapas

Quando o experimento terminar, você poderá selecionar um da lista de experimentos no seu projeto para decidir o que fazer com ele. Você quer escolher uma como "vencedora" ou realizar mais experimentos?