Como controlar LLM em um jogo de RPG: arquitetura Beyond The Verge
Beyond The Verge dominou os problemas de LLM em jogos de RPG: deriva de modelo, amnésia e violações de regras. A solução é radical: um backend autoritário em…
Processado por IA de Habr AI; editado por Hamidun News
Beyond The Verge — um RPG de texto totalmente em russo baseado em LLM — enfrentou um problema clássico: modelos esquecem o contexto, violam as regras do jogo e adicionam itens do nada. Após 30 turnos, o jogo se torna um bate-papo incoerente. Os desenvolvedores escolheram não tentar 'domar' o modelo, mas tirar dele o controle da mecânica.
Por que LLM não é adequado para mecânicas
LLM é generativa por natureza, enquanto RPG requer determinismo. O modelo lembra apenas do contexto da janela, não diferencia sua imaginação do estado do jogo e pode mudar espontaneamente o enredo ou violar a lógica. Se permitido gerenciar o inventário, facilmente perderá a espada, esquecerá das limitações ou adicionará um item que o jogador não pegou.
Arquitetura: LLM apenas narrador
Beyond The Verge dividiu a responsabilidade. Toda mecânica do jogo é lógica determinística no backend:
- Inventário — uma linha em PostgreSQL com IDs de itens, peso e propriedades
- Mapa — um grafo de vértices (localizações) e arestas (transições entre elas)
- Estado do personagem — um vetor em pgvector para busca rápida de contexto
- Sistema de combate — fórmulas de dano, defesa e críticos — tudo é calculado
- Missões — máquinas de estados finitos com estados fixos
O LLM recebe um snapshot do estado do jogo em forma de texto e gera apenas a descrição: "Você entrou em uma floresta escura. Sons de pássaros podem ser ouvidos. No inventário: punhal, poção de mana (30%). Um goblin fraco à frente". A ação do jogador é analisada, validada pela lógica backend (o personagem pode fazer isso?), o resultado é calculado e depois o LLM descreve as consequências.
FastAPI + PostgreSQL + pgvector
O stack é simples, mas eficiente: FastAPI processa o turno do jogador, PostgreSQL armazena o estado (inventário, NPCs, missões) e pgvector busca contexto relevante para o LLM (memórias do personagem, atmosfera da localização), enquanto Flutter Web é a interface. Quando o jogador se move, o backend atualiza a posição no grafo do mapa, encontra as melhores descrições em pgvector e coleta objetos visíveis. O LLM recebe um contexto compacto e gera texto em menos de 1 segundo. Sem conflitos com a memória do modelo, sem amnésia.
Escalabilidade através do versionamento
Com 1.000 sessões de jogo simultâneas, o estado pode entrar em conflito: dois turnos ao mesmo tempo — quem vence? Solução: bloqueio otimista com versionamento de estado. Cada estado tem um número de versão; se um conflito é detectado durante um turno, o cliente se ressincroniza e o turno é rejogado. Condições de corrida são eliminadas, enquanto o sistema é escalado linearmente.
O que isso significa
LLM é uma ferramenta de geração de texto, não de controle. Para sistemas confiáveis, lógica, estado e mecânicas devem estar no código, não no modelo. O LLM traduz eventos em descrições vivas. Este é um padrão para todos os sistemas de IA com estado determinístico: agentes de navegador, simulações complexas e jogos. Separar o controlado do generativo é o caminho para a confiabilidade e escalabilidade.
Quer parar de ler sobre IA e começar a usar?
AI News é um feed curado de notícias de IA. A Hamidun Academy ensina você a usar IA no trabalho.