Blog Metlivi

Como criar um jogo com bot de IA com regras claras, memória e escolhas para o jogador

Para criar um jogo jogável com bot de IA, defina um loop pequeno e repetível, armazene o estado do jogo fora da conversa e dê a cada ação do jogador uma consequência clara. Deixe o bot interpretar as solicitações e descrever os eventos; deixe que regras explícitas determinem custos, progresso e finais. Este guia é para desenvolvedores de jogos que estão construindo um jogo baseado em texto com um personagem ou narrador de IA. A tarefa é criar uma sessão curta e testável na qual os jogadores compreendam suas opções, vejam que suas decisões importam e alcancem um final válido. O jogo de entregas abaixo é um modelo ilustrativo, não um produto testado ou um estudo de caso documentado.

22 de setembro de 20263 min de leituraLeitura, artes e culturaPor Metlivi Editorial Team
Seção 1

Comece com um loop central que você possa jogar sem IA

Escreva o loop em uma frase: Mostre a situação → aceite uma ação → verifique as regras → atualize o estado → mostre a consequência e as próximas opções. Cada turno deve concluir esse loop ou explicar por que não pode prosseguir.

Antes de escrever um prompt de personalidade, defina o objetivo, as ações disponíveis, os custos das ações e as condições de encerramento. Você deve conseguir rodar o jogo com fichas de papel ou uma planilha. Isso possibilita inspecionar as mecânicas antes que o diálogo gerado adicione variações.

Pense em um pequeno jogo chamado *Festival Parcel*. O jogador tem cinco unidades de tempo para entregar um pacote. Ele pode escolher uma rota direta ou uma rota pelo jardim e, opcionalmente, pegar uma fita decorativa antes de partir. Um bot atua como o entregador do festival, que explica as rotas e comenta sobre a entrega.

As regras propostas são propositalmente compactas:

Mostre estas regras antes da primeira escolha. Explique que as ações de entrega encerram a sessão, portanto os jogadores devem pegar a fita antes. Uma entrega que gasta a última unidade de tempo ainda é bem-sucedida porque a verificação de sucesso ocorre primeiro.

Este protótipo tem um início, um espaço de decisão e um final completos. Personagens ou locais adicionais devem justificar sua presença agregando decisões úteis a esse loop.

Comece no depósito com o pacote, cinco unidades de tempo e sem fita.
Pegar a fita custa uma unidade de tempo e só pode ser feito uma vez.
A entrega direta custa três unidades de tempo e encerra a sessão com sucesso.
A entrega pelo jardim custa quatro unidades de tempo e encerra a sessão com sucesso, adicionando um cartão-postal do jardim ao final.
Esperar custa uma unidade de tempo.
Consultas de status, dúvidas sobre regras e pedidos de esclarecimento não custam nada.
Uma ação só é permitida quando houver tempo suficiente para pagar seu custo integral.
Após uma ação válida, verifique primeiro se a entrega foi bem-sucedida. Se o pacote ainda não foi entregue e nenhuma rota puder ser paga, encerre com o resultado de entrega perdida.
Seção 2

Torne o estado explícito a autoridade soberana para os resultados

Trate o estado como o registro de verdade do jogo. O texto da conversa pode explicar esse registro, mas não deve alterá-lo silenciosamente.

O capítulo sobre Estado de Robert Nystrom em *Game Programming Patterns* (https://gameprogrammingpatterns.com/state.html) descreve máquinas de estados finitos por meio de estados, entradas e transições permitidas. Ele também demonstra como flags booleanas combinadas de maneira frouxa podem produzir combinações inválidas. Aplique esse princípio ao ciclo de vida do seu jogo: use um status de sessão, como ativo, entregue ou perdido, com transições definidas.

Para o protótipo de entrega, uma pequena especificação de estado é suficiente:

Derive o cartão-postal do jardim a partir da rota selecionada, em vez de armazenar um segundo valor que poderia contradizê-lo. Da mesma forma, calcule as ações disponíveis no momento com base no estado e nas regras.

Use uma ordem de processamento fixa: interprete a solicitação, valide sua ação e parâmetros, calcule o resultado, confirme a alteração de estado e, em seguida, narre-a. Forneça ao narrador o resultado confirmado e as próximas ações permitidas. Ele não deve inventar um segundo cálculo.

Por exemplo, após pegar a fita, o resultado oficial é: restam quatro unidades de tempo, a fita foi coletada e ambas as rotas cabem no orçamento de tempo. O bot pode descrever a cor da fita, desde que essa cor não tenha efeito mecânico. Ele não pode adicionar um custo de tempo não anunciado nem conceder uma segunda fita.

Você pode criar um protótipo dessas condições com uma ferramenta narrativa existente. O tutorial oficial de ficção interativa da Inkle (https://www.inklestudios.com/ink/web-tutorial/) explica escolhas condicionais, rastreamento de conteúdo visitado anteriormente, variáveis e finais explícitos. Esses recursos oferecem uma base útil para testar o jogo autoral antes de adicionar a narração por IA.

Campo — Valor inicial — Regra
Status da sessão — ativo — Apenas sessões ativas aceitam ações de jogabilidade
Tempo restante — 5 — Não pode ficar abaixo de zero
Fita coletada — falso — Pode mudar para verdadeiro uma vez
Rota escolhida — nenhuma — Torna-se direta ou jardim na entrega
Contagem de ações confirmadas — 0 — Aumenta uma vez por ação de jogabilidade aceita
Seção 3

Dê aos jogadores escolhas que eles possam entender e influenciar

Para este design, avalie o protagonismo do jogador verificando se ele consegue antecipar uma diferença significativa e, em seguida, observá-la no resultado. Vários botões com textos diferentes que levam a um resultado idêntico pouco ajudam a testar isso.

Em *Festival Parcel*, a decisão da rota atende a diferentes preferências dos jogadores:

Estes são cálculos ilustrativos a partir das regras declaradas. Eles fornecem uma ajuda de decisão simples: escolha a entrega direta para terminar mais cedo, pegue a fita para decoração ou vá pela rota do jardim pelo cartão-postal. O tempo restante é um detalhe do final aqui; ele não concede pontos em segredo.

Se o jogo mais adiante premiar um resultado específico, revele essa pontuação antes da decisão. Caso contrário, os jogadores não poderão avaliar o custo-benefício pretendido.

Permita texto livre junto com ações visíveis. "Vamos pelo caminho panorâmico" pode corresponder à entrega pelo jardim. "Faça algo especial" é ambíguo: pode significar pegar a fita, seguir pela rota do jardim ou ambos. Peça um esclarecimento rápido sem gastar tempo.

Para o primeiro protótipo, aceite uma ação de jogabilidade por mensagem. Se o jogador solicitar uma sequência, apresente suas etapas e peça a ele para escolher a primeira ação. Isso evita executar parcialmente um plano cujas etapas posteriores acabem ficando indisponíveis.

Mantenha os pedidos não suportados informativos. Se o jogador pedir para voar, explique que as rotas disponíveis são a direta e a do jardim, com seus respectivos custos. O texto livre pode ampliar a expressão enquanto o sistema de ações mantém um conjunto previsível de recursos.

Plano — Custo total de tempo — Resultado visível
Entrega direta — 3 — Pacote simples entregue com 2 unidades de tempo restantes
Pegar a fita, depois entrega direta — 4 — Pacote decorado entregue com 1 unidade de tempo restante
Entrega pelo jardim — 4 — Pacote simples entregue com um cartão-postal do jardim
Pegar a fita, depois entrega pelo jardim — 5 — Pacote decorado entregue com um cartão-postal do jardim
Seção 4

Defina o que o bot lembra e o que ele pode saber

Separe a memória em três camadas, cada uma com uma finalidade diferente.

O estado oficial da sessão armazena recursos, progresso, rotas selecionadas e finais. Ele persiste através de salvamentos e recarregamentos e só é alterado por meio de ações validadas.

Um registro de eventos da sessão guarda as ações confirmadas e suas consequências. Uma entrada pode informar que a ação 2 pegou a fita e reduziu o tempo de cinco para quatro. Isso auxilia na depuração e em recapitulações precisas. Mantenha identificadores de ação para que uma solicitação repetida não aplique o mesmo evento duas vezes.

O contexto narrativo contém o diálogo recente e uma recapitulação compacta usada para manter o tom e a continuidade. Ele pode ser encurtado sem excluir o estado real do jogo.

O guia da Anthropic para engenharia de contexto eficaz (https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents) discute tanto o resumo do histórico de conversas quanto a manutenção de notas persistentes fora da janela de contexto. Ele também alerta que resumos agressivos podem perder detalhes importantes. A implicação de design aqui é manter os fatos mecânicos exatos em armazenamento estruturado e usar resumos para a continuidade da conversa.

Estabeleça limites de conhecimento, bem como limites de armazenamento. Um personagem deve receber apenas os fatos que tem permissão para saber. Se uma versão futura incluir uma rota oculta, mantenha-a fora do contexto daquele personagem até que a condição de descoberta seja atendida. O estado disponível para o motor do jogo não precisa estar todo disponível para o narrador.

Para este jogo pequeno, mantenha o progresso dentro da sessão salva e limpe-o ao iniciar uma nova partida. Evite deduzir preferências duradouras do jogador a partir de uma única escolha de rota. Se adicionar uma preferência salva, como descrições mais curtas, torne-a explícita e editável.

Teste a memória com uma sequência concreta: pegue a fita, salve, recarregue, pergunte pelo status e selecione a entrega pelo jardim. A fita deve continuar coletada, quatro unidades de tempo devem restar antes da entrega e o tempo final deve ser zero.

Seção 5

Planeje respostas separadas para falhas no jogo e falhas no sistema

Um objetivo não alcançado faz parte do jogo. Uma solicitação de geração que falha é um problema de implementação. Dê a eles consequências diferentes.

Para falhas no jogo, aponte a regra que encerrou a partida. Após três esperas, restam apenas duas unidades de tempo, então nenhuma das rotas de entrega cabe no orçamento. Encerre imediatamente com uma explicação clara e uma opção de reinício, em vez de deixar o jogador preso em uma sessão ativa invencível.

Para falhas de implementação, defina o comportamento de recuperação antes de adicionar uma narração elaborada:

Não substitua silenciosamente um salvamento ilegível por um novo jogo. Isso oculta o progresso perdido e torna a resposta seguinte enganosa.

Construa uma mensagem de resultado simples para cada ação: o que aconteceu, o que mudou e o que está disponível a seguir. A narração expressiva do bot pode acompanhar esse resultado. Durante um tempo limite ou uma resposta contraditória, a mensagem simples ainda permite que o jogador continue.

Conclua os finais com uma recapitulação precisa. Mencione a fita apenas se ela tiver sido coletada e o cartão-postal somente para a rota do jardim. O texto gerado deve preservar as distinções que o jogador passou a sessão escolhendo.

Situação — Comportamento obrigatório
Solicitação ambígua do jogador — Pedir esclarecimento; preservar o estado
Ação indisponível — Explicar a condição não atendida; preservar o estado
Proposta de ação inválida da IA — Rejeitar a proposta e oferecer ações válidas
Falha na narração após confirmação da ação — Exibir um resultado autoral a partir do estado confirmado
Envio duplicado — Retornar o resultado existente sem cobrar novamente
Não é possível carregar o estado salvo — Relatar o problema e oferecer recuperação ou reinício explícito
Seção 6

Faça o playtest das regras e, depois, da interpretação do bot

Primeiro, teste o jogo com texto fixo. Cubra cada ação, final e condição de limite. Em seguida, adicione o bot e repita esses testes usando termos variados. Isso ajuda a distinguir uma regra quebrada de uma solicitação mal interpretada.

Convide jogadores representativos para concluir uma entrega sem instruções prévias. Peça que expliquem o que esperam antes de escolher e o que acreditam que mudou depois. O guia do Nielsen Norman Group sobre testes de usabilidade com pensamento em voz alta (https://www.nngroup.com/articles/thinking-aloud-the-1-usability-tool/) recomenda participantes e tarefas representativos, deixando os participantes falarem; ele também adverte que intervenções do facilitador podem influenciar o comportamento.

Use a observação junto ao registro de ações. Registre ações tentadas, pedidos de esclarecimento, desfechos inesperados e qualquer divergência entre a narração e o estado confirmado. Pergunte se os jogadores entenderam as opções de forma independente de terem gostado ou não de escolher entre elas.

Checklist compacto para playtest. Corrija falhas nas regras e no tratamento do estado antes de expandir o mundo do jogo. Se os jogadores entenderem as escolhas, mas as acharem desinteressantes, mude as contrapartidas. Se gostarem das decisões, mas não conseguirem prever os custos, melhore a apresentação. Expanda o protótipo quando as escolhas existentes continuarem compreensíveis diante de formulações diferentes, sessões salvas e caminhos de falha.

Abertura: Um jogador novo consegue identificar o objetivo, o orçamento de tempo e as ações de finalização?
Loop: Cada ação aceita gera uma consequência visível e um próximo passo ou final válido?
Escolha: Os jogadores conseguem explicar por que selecionaram uma rota ou opção de decoração?
Limite: Pegar a fita e em seguida fazer a entrega pelo jardim é bem-sucedido com exatamente zero de tempo restante?
Validação: Solicitações ambíguas, repetidas e indisponíveis mantêm o estado correto?
Memória: Salvar e recarregar mantém recursos, escolhas e ações disponíveis?
Falha: Uma situação de entrega inviável termina de forma clara, com reinício disponível?
Recuperação: É possível continuar o jogo diante de uma falha na narração sem uma segunda cobrança de tempo?
Consistência: Cada final corresponde à rota confirmada e ao estado da fita?
Leituras relacionadas

Continue explorando o tema