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:

  • Determine quais variantes de valor do parâmetro melhoram as métricas principais, como receita e retenção.
  • Descubra quais subgrupos de usuários preferem quais variantes.
  • Colete e armazene dados de experimentos para realizar análises adicionais sobre os efeitos da configuraçã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 controlem 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 disso.

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 serão incluídos. E, por fim, você 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, cardápios

  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 Unity Editor, abra Assets > Hamster > Prefabs > Menus e clique duas vezes no objeto DebugMenu para abri-lo na guia Hierarchy do editor.

    Item DebugMenu aninhado em Recursos,\nHamster, Prefabs, Menus
  2. Na guia Hierarchy, expanda a hierarquia e clique no subobjeto em DebugMenu > Panel, identificado como Ações da 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 em DebugMenu, Panel

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 exibir variantes diferentes. Como parte deste codelab, você excluirá a condição que criou e reintroduzirá o padrão no app, além de substituí-la apenas pelo 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âmetros da\nConfiguração remota

  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 podem ser encontradas 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 ao subtítulo do jogo.

Implemente SetUserBoredOfSubtitle e SetUserEnjoysSubtitle encontrando as versões atuais 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 às 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 nos 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 para comparar e otimizar a retenção de usuários de dois a três dias.

  1. Primeiro, selecione Editar no parâmetro subtitle_override da página 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 o app 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 manualmente.
  2. Como você só quer definir uma legenda 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 "Segmentação do teste A/B" com\nsubtitle_sentiment selecionado

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

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

  1. Em seguida, configure os parâmetros do experimento e crie variantes de legenda diferentes . Essas variantes são os diferentes valores que o Teste A/B vai mostrar aos usuários cujo subtitle_sentiment contém "entediado", 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 das variantes com números inteiros da seguinte maneira:
    • Valor de referência: 1
    • Variante A: 100
    • Variante B: 100
    Isso vai resultar em pesos 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, em uma de cada 201 vezes, o Teste A/B serve o padrão para quem está cansado das legendas, mas em 200/201 vezes, ele vai servir um dos dois novos valores e substituir a tela de título.
  5. Para salvar e enviar, clique em Iniciar experimento e em Iniciar no pop-up de confirmação.Clique em "Iniciar" para iniciar 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ê não tiver executado o método SetUserProperty anteriormente ou tiver definido como enjoys, o subtítulo padrão ainda vai aparecer ao abrir o jogo.

Se você tiver definido como bored (antes da nova busca), um dos novos valores vai aparecer em uma proporção de 50/50.

Depois que um dispositivo entra em um experimento de 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, você precisa 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 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 do 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?