Atualização Magnífica da Ação de Fuga

Leon Nicholls Blocked Unblock Seguir Seguindo 8 de janeiro

Em um post anterior , eu discuti o design e a publicação da minha ação chamada " Magnificent Escape ". Desde que o jogo foi lançado para o Assistente do Google, várias melhorias foram feitas e discutidas neste post.

Versões regulares

Desde que a ação foi lançada em 26 de outubro, foram publicadas 7 atualizações. Estes incluíram jogabilidade melhorada, muitas frases de treino adicionais para intenções e algumas correções de bugs.

O Dialogflow atualiza automaticamente os agentes usados para ações no Google. No entanto, o atendimento não é versionado. Por isso, mantenho 2 agentes Dialogflow para desenvolvimento: um com o URL de cumprimento do desenvolvimento e outro com o URL de atendimento da produção. Para se preparar para cada lançamento:

  • Eu atualizo o cumprimento da produção primeiro
  • Em seguida, exporte o agente como um arquivo zip da instância de desenvolvimento
  • Importar o zip para a instância de produção
  • Em seguida, teste o agente de produção e seu cumprimento juntos
  • A instância de produção é então liberada para revisão em Ações no Google

As revisões da Ação no Google para essas versões foram concluídas em cerca de um dia.

Telas

Para dispositivos com telas, os chips de sugestão são exibidos e sugerem coisas que o usuário pode fazer no jogo.

À medida que o usuário explora a sala, esses chips se adaptam para serem contextuais. No entanto, a jogabilidade é aberta. O usuário pode explorar a sala de muitas maneiras diferentes e pode mudar de idéia a qualquer momento. Como um número máximo de 8 fichas de sugestões pode ser exibido de cada vez, as sugestões não são exaustivas do que o usuário pode fazer em qualquer momento do jogo. Alguns usuários acharam que só podiam escolher as sugestões e se sentiam “presos” no jogo.

Para melhorar a experiência do usuário nas telas, a lógica de preenchimento dos chips de sugestão foi modificada para mostrar apenas os valores específicos do chip quando uma pergunta específica é perguntada, como por qual direção procurar. Durante os outros estágios do jogo, os chips de sugestão padronizavam os valores genéricos, como "dica" , "ajuda" , "lobby" e "saída" . Isso incentivaria o usuário a aprender a jogar o jogo.

Jogabilidade melhorada

Desde o lançamento, tenho usado o recurso Treinamento do Dialogflow para encontrar intenções incomparáveis e seu recurso Histórico para ver como os usuários estão jogando o jogo. Embora os usuários estivessem fugindo das salas, ficou claro que a jogabilidade precisava ser melhorada.

Para os usuários que sabem jogar jogos de fuga, parecem muito determinados a explorar tudo na sala até que acabem escapando. No entanto, para outros usuários, não estava claro qual era o objetivo. Para ajudar com isso, a primeira vez que um usuário entra na primeira sala, o prompt foi aprimorado para deixar claro qual item o usuário precisa encontrar para escapar da sala:

“Você se teletransporta para o escritório. Você pode ver uma porta trancada. Você precisa encontrar uma chave para escapar. Você está voltado para o sul. Você também pode olhar para o norte, leste e oeste. Qual direção você quer olhar?

Originalmente, a ação deixaria dicas durante o jogo sobre coisas para tentar. No entanto, estes seriam genéricos, como sugerir as instruções para procurar. A jogabilidade foi melhorada, recompensando o usuário com dicas mais específicas, se fizerem certas ações na sala. Quanto mais o usuário explora a sala, mais dicas são obtidas.

Cada quarto tem também um ovo de páscoa. Originalmente, os ovos de páscoa davam ao usuário uma moeda de ouro como recompensa. No entanto, alguns usuários ficaram confusos sobre o que fazer com a moeda. O ovo de páscoa foi mudado para dar uma dica especial sobre como resolver os enigmas da sala.

Havia também alguns itens de arenque vermelho nos quartos, mas estes se tornaram muito distrativos, então eles foram removidos. Quando o jogo é jogado por voz, o usuário tem que imaginar os itens na sala, e qualquer coisa que distraia isso quebra a jogabilidade. Para voz especialmente, projetar a brevidade e eliminar desvios é muito importante.

Experimentos

Na postagem anterior, mencionei uma experiência A / B usando o Protocolo de avaliação do Google Analytics para determinar se dar aos usuários uma mensagem especial de boas-vindas ao invocar a ação usando a intenção integrada do 'Play Game' faz a diferença.

Aqui está um trecho do código do Node.js para criar eventos experimentais usando o Google Analytics:

 pedido const = require ('request'); 
const urlencode = require ('urlencode');
 const GOOGLE_ANALYTICS_URL = 
' https://www.google-analytics.com/collect' ;
const VERSION = 'v';
const TRACKING_ID = 'tid';
const CLIENT_ID = 'cid';
const HIT_TYPE = 't';
const EVENT = 'event';
const EVENT_CATEGORY = 'ec';
const EVENT_ACTION = 'ea';
const EVENT_LABEL = 'el';
const EXPERIMENTO = 'experimento';
 opções const = { 
url: GOOGLE_ANALYTICS_URL,
json: false
};
let body = VERSION + '=' + 1;
corpo + = '&' + TRACKING_ID + '=' + this.key;
body + = '&' + CLIENT_ID + '=' + urlencode (uuid || 'anônimo');
corpo + = '&' + HIT_TYPE + '=' + EVENTO;
corpo + = '&' + EVENT_CATEGORY + '=' + urlencode (id || 'nenhum');
corpo + = '&' + EVENT_ACTION + '=' + EXPERIMENTO;
body + = '&' + EVENT_LABEL + '=' + urlencode (contagem || '0');
options.body = body;
 request.post (opções, função (erro, resposta, corpo) { 
if (erro) {
logger.error (`post: $ {error}`);
} outro {
logger.debug (`post: $ {JSON.stringify (resposta)}`);
}
});

Os resultados estão em, e os dados mostram que mais usuários deixam o jogo no primeiro minuto se não receberem a mensagem de introdução. Além disso, mais usuários jogam o jogo por mais tempo quando recebem a mensagem. Então, vou tornar a mensagem especial de introdução um recurso permanente da Ação. Seria interessante ver se outros desenvolvedores têm uma experiência semelhante com suas ações.

Além disso, quando esses usuários deixam o jogo, o prompt de áudio de saída informa ao usuário como invocar a ação novamente explicitamente:

"ESTÁ BEM. Para jogar de novo, basta dizer "fale com uma fuga magnífica". Vamos tentar isso de novo mais tarde.

Agora que os aspectos técnicos da implementação do teste A / B estão funcionando, estou considerando vários outros experimentos para melhorar a Ação.

Analytics

O Analytics provou ser uma valiosa fonte de dados para entender o desempenho do jogo e onde o design pode ser melhorado. Em um post anterior, abordei o básico sobre como usar várias ferramentas de análise com o Actions.

Os dados de eventos no Google Analytics controlam quantos usuários escapam dos quartos. Cada quarto tem um nível de dificuldade (“escritório” é fácil, “quarto” é difícil e “garagem” é super difícil). No entanto, olhando para as estatísticas do número de usuários que escaparam, o quarto pode precisar ser rotulado como o mais fácil.

Comandos Contextuais

Os registros ocasionalmente mostram que os usuários dizem coisas como "abra" ou "mova" . O agente Dialogflow não tinha intenções de lidar com essas frases do usuário e responderia com um dos prompts de fallback.

USER: veja a gaveta

AÇÃO: A gaveta está fechada. O que você vai tentar agora?

USER: abra

AÇÃO: Desculpe, eu não entendi isso. Você pode olhar em volta ou usar itens. O que você quer fazer?

A intenção do usuário era claramente fazer uma ação adicional em um item que acabou de ser explorado. O jogo já monitora o item atual e seu estado, portanto, seria relativamente simples assumir que o último item é o contexto ausente para a solicitação do usuário. Várias novas intenções foram adicionadas para os casos de uso comum para tornar esses comandos contextuais mais naturais:

USER: veja a gaveta

AÇÃO: A gaveta está fechada. O que você vai tentar agora?

USER: abra

AÇÃO: Bom trabalho. Quando você abre a gaveta da escrivaninha, encontra um palito de dente dentro e o pega. Então o que vem depois?

Mais sons

Recebi feedback de vários usuários de que a música e os sons do jogo são muito eficazes, especialmente os efeitos de som quando o usuário interage com itens.

Eu adicionei mais sons e substitui alguns dos efeitos com versões de som ainda melhores.

No entanto, como um usuário está explorando a sala, ela pode passar algum tempo sem ouvir nenhum som. Para fornecer feedback sobre o progresso do usuário, achei que seria interessante experimentar um som no início de cada turno da conversa. Eu estabeleci um som curto com várias notas simples. Para mim, isso é estimulante, e também é um empurrãozinho para manter o ritmo do jogo.

Mais intenções

O recurso Histórico do Dialogflow resultou em várias melhorias nas intenções do agente. O agente Dialogflow agora tem 122 intenções e 12 entidades .

A maioria das mudanças nas intenções tem sido expandir as frases do usuário para cada intenção de melhorar o treinamento de aprendizado de máquina e lidar com mais variações na entrada do usuário.

Conversa fiada

Tenho notado nos registros que os usuários ocasionalmente dizem coisas que não estão diretamente relacionadas ao jogo, como dizer "olá" . O Dialogflow tem um recurso chamado Small Talk , que fornece algumas intenções convenientes para lidar com respostas de conversação casuais. Entretanto, a simples habilitação de todas as suas intenções pode causar interferência inesperada nas outras intenções do seu agente. Pode fazer sentido escolher apenas algumas dessas intenções para o seu próprio agente.

Então, importei o agente pré-construído do Small Talk para seu próprio agente Dialogflow. Ao passar o mouse sobre cada intenção na GUI do Dialogflow, salvei cada intenção em um arquivo JSON. Então eu apenas importei aquelas intenções que eu queria para o meu agente usando a opção de menu Upload Intenção ao lado do botão Criar Intenção . As respostas estáticas de cada uma delas foram editadas ou movidas para o preenchimento.

Selecionando opções

Na postagem anterior, mencionei que o agente tem a intenção de permitir que o usuário selecione uma sala de várias maneiras, incluindo o nome da sala ou sua posição ordinal na lista. Cada sala também tem um nível de dificuldade, e alguns usuários escolhem a sala usando isso: “vá com facilidade” . Então, eu adicionei uma nova entidade para cada um dos níveis de dificuldade e seus sinônimos. Os valores dessas entidades foram então referenciados em uma nova intenção de selecionar a sala por nível de dificuldade.

línguas

Atualmente, o jogo suporta apenas inglês, mas é claro que usuários de todo o mundo estão jogando o jogo. Os usuários também estão pedindo que o jogo mude sua linguagem:

"você fala hindi"

"falar espanhol"

Uma nova intenção foi adicionada para responder que apenas o inglês é suportado.

Reações do usuário

É interessante ver como os usuários reagem quando jogam – desde respostas divertidas, respostas negativas, respostas sem inspiração.

Para cada uma delas, foram adicionadas novas intenções que respondem adequadamente e tentam incentivar o usuário a continuar jogando:

USUÁRIO: bla, bla, bla

AÇÃO: yadda yadda yadda. Então o que você fará agora?

USER: isso é ruim

AÇÃO: Desculpe se sentir assim. Você pode querer refazer seus passos. Você pode ter perdido alguma coisa. O que você vai tentar agora?

USER: isso é chato

AÇÃO: Desculpe ouvir isso. Você sabia que há também um ovo de páscoa escondido em algum lugar desta sala? Você pode encontrá lo! Então o que vem depois?

Também notei que alguns usuários exploravam os itens da sala e diziam algo como "esqueça a mesa" ou "esqueça" . Parece que os usuários estavam pensando em voz alta enquanto jogavam o jogo. Infelizmente, o jogo responderia com uma resposta de recuo por não entender o que o usuário estava tentando fazer. Para melhorar a experiência, foi adicionada uma nova intenção que responderia com uma simples confirmação:

"ESTÁ BEM. O que você gostaria de tentar a seguir? ”

Orientação

O usuário é informado no início do jogo que cada sala tem 4 paredes: norte, sul, leste e oeste. Esta é a principal maneira de navegar em cada sala. No entanto, os usuários também usam “virar à esquerda” ou “olhar atrás de mim” . Os usuários também podem querer apenas dar uma olhada ao redor com "olhar ao redor da sala" ou "descrever o quarto" .

Os usuários também podem querer apenas ser lembrados de quais itens encontraram ou coletaram com "onde está a porta" ou "quais itens eu tenho" .

Foram adicionadas intenções específicas que suportam esses tipos de solicitações do usuário e suas variações, mesmo que não façam parte das instruções do jogo.

Suporte proativo

O jogo fornece dicas e permite que os usuários peçam ajuda se ficarem presos tentando escapar dos quartos. No entanto, há outras indicações de que os usuários estão com dificuldades ou precisam de ajuda que possa ser detectada proativamente em cumprimento.

Um sinal pode ser se o usuário fizer a mesma pergunta em sequência. Uma intenção pode corresponder à entrada do usuário, mas pode não ser o que eles esperam, por isso é natural que os usuários façam a pergunta novamente. Um método de utilitário foi incluído na lógica de preenchimento para armazenar a última solicitação do usuário no armazenamento de sessão e, em seguida, detectar quando a mesma entrada de usuário bruta é repetida em sequência. O utilitário, em seguida, entra em curto-circuito com a lógica normal de tratamento de intenção para fornecer uma resposta específica para ajudar o usuário a voltar à pista:

“Parece que estamos conversando um com o outro. Você pode procurar em direções diferentes ou ver os itens encontrados. O que você quer tentar agora?

Para alguns dos quebra-cabeças, como abrir o cofre, pode ficar claro que o usuário está adivinhando ou tentando os movimentos errados por muito tempo. O cumprimento pode detectar isso e interromper a interação com instruções sobre como encontrar uma dica na sala para resolver o enigma.

Retenção

Para ajudar a aumentar a retenção, o prompt de saída quando os usuários cancelam a ação é personalizado com base em quanto tempo o usuário gastou no jogo ou quanto do quarto foi explorado.

Observe que todos os prompts de cancelamento estão limitados a 60 caracteres.

Para usuários iniciantes, deixamos claro que o estado do jogo é persistente para que eles possam continuar jogando mais tarde:

"ESTÁ BEM. Pegue aqui da próxima vez. Volte logo."

E adicione várias variações para incentivar o usuário a continuar jogando:

"Claro, mas você estava tão perto de encontrar o ovo de páscoa."

“OK, mas você estava tão perto. Volte logo."

"ESTÁ BEM. E você estava indo tão bem. Espero vê-lo em breve."

Erros cometidos

Olhando para os logs, vi que havia correspondência de intenção incorreta ocasional, que era devido à mesma frase de treinamento repetida em várias intenções. Depois de fazer uma auditoria de todas as intenções, encontrei outros casos e removi as duplicatas desnecessárias.

Para a intenção de manipular solicitações de usuários para alterar o idioma, usei o mesmo valor de parâmetro em todas as frases do usuário, o que fez com que algumas respostas do usuário não fossem correspondidas corretamente. É importante variar os valores dos parâmetros usados nas frases do usuário para fazer com que o aprendizado de máquina para o agente funcione melhor.

Próximos passos

Neste post, mostrei como é importante manter a sua Ação depois de iniciada, estudando como seus usuários interagem com sua Ação.

Continuarei com minha auditoria diária dos logs do histórico do Dialogflow para continuar aprimorando o tratamento intencional.

Além disso, para dar suporte a compras digitais , estou trabalhando em uma maneira de adicionar mais salas.

Tente jogar meu jogo e me diga quais melhorias você recomendaria!

Quero mais? Vá até a comunidade Ações no Google para discutir ações com outros desenvolvedores. Participe do programa da comunidade do desenvolvedor do Actions on Google e você poderá ganhar um crédito mensal de US $ 200,00 do Google Cloud e uma camiseta do Assistente ao publicar seu primeiro aplicativo.