IA de Jogos
Filosofia Central
A Inteligência Artificial (IA) de jogos não é aprendizado de máquina acadêmico tentando prever o futuro ou vencer grandes mestres do xadrez humano. IA de jogos é uma ilusão de entretenimento e ritmo. Um NPC que joga com precisão sobre-humana, pontaria perfeita e zero hesitação é frustrante e sem graça de enfrentar. A IA de jogos deve fornecer telegrafia clara, tomada de decisão tática legível, percepção sensorial crível e calibração dinâmica de dificuldade que dá aos jogadores a sensação emocionante de superar um oponente competente.
Arquitetura de IA de Jogos em 4 Etapas
Etapa 1: Arquiteturas de Tomada de Decisão: Árvores de Comportamento vs FSMs
- Árvores de Comportamento (O Padrão da Indústria para IA de Combate):
- Construídas em nós hierárquicos avaliados da esquerda para a direita:
- Compostos:
- Sequência ($ o$): Executa filhos sequencialmente; falha se algum filho falhar (ex.: Tem Arma $ o$ Recarregar $ o$ Mirar).
- Seletor ($?$): Executa filhos até que um suceda (ex.: Fugir se Vida Baixa $?$ Ataque Corpo a Corpo $?$ Buscar Cobertura).
- Decoradores: Portões condicionais (ex.: Inverter, Limite de Tempo, Cooldown).
- Folhas / Tarefas: Ações executáveis concretas (ex.: MoverParaPosicao, TocarAnimacao).
- Compostos:
- Construídas em nós hierárquicos avaliados da esquerda para a direita:
- Máquinas de Estado Finito (FSMs):
- Melhor para criaturas ambientes simples ou chefes discretos (Estados: Patrulha, Investigar, Perseguir, Atacar, Fugir).
Etapa 2: Sistemas de Percepção Sensorial (Visão e Audição)
- Cones de Visão (Percepção Visual):
- Avalie a visibilidade do alvo usando 3 portões:
- Verificação de Distância: O jogador está dentro do raio de visão ($D \le R_{text{max}}$)?
- Ângulo do Campo de Visão: O produto escalar do vetor direcional do inimigo e a direção para o jogador é $\ge \cos( heta / 2)$?
- Linha de Visão (Raycast): Um raycast físico dos olhos do inimigo até o torso do jogador atinge a geometria do mundo ou o jogador?
- Avalie a visibilidade do alvo usando 3 portões:
- Percepção Acústica (Audição):
- Propague eventos sonoros pelo mundo do jogo (ex.: Tiro = raio de 40m; Passos = raio de 8m).
- NPCs alertados fazem a transição para um estado Investigar direcionado à origem do som.
Etapa 3: Pathfinding em NavMesh e Flanqueamento Tático
- Pathfinding A* em Malhas de Navegação:
- NPCs consultam NavMeshes pré-cozidas para travessia de caminho.
- Obstáculos de Velocidade Recíproca (RVO / ORCA): Implemente prevenção de colisão local para que grupos de 5 inimigos não marche em uma única fila idêntica ou emperre entradas de portas.
- Busca de Cobertura Tática e Flanqueamento:
- Consulte Sistemas de Consulta Ambiental (EQS): Amostre pontos candidatos ao redor do jogador, pontue pontos com base no ângulo da geometria de cobertura, distância e proteção de linha de visão.
Etapa 4: Telegrafia e a Ilusão de Competência
- Telegrafia de Intenção:
- Antes de executar um ataque letal, os NPCs devem telegrafar a intenção por meio de dicas de áudio ("Flanqueando pela esquerda!", "Granada para fora!"), animações de preparação ou linhas de mira a laser.
- O "Efeito Stormtrooper" (Incompetência Controlada):
- O primeiro tiro disparado contra um jogador desprevenido deve errar intencionalmente por 1 metro para alertar o jogador e criar adrenalina antes de causar dano real.
Formato de Entrega: Especificação de Árvore de Comportamento de IA Inimiga (ENEMY-AI-SPEC.md)
# Especificação de Árvore de Comportamento de IA Inimiga de Combate: [Arquétipo de NPC]
## 1. Parâmetros de Percepção
- **Distância de Visão**: 25 metros (Dia) / 14 metros (Noite)
- **Ângulo do Campo de Visão**: 110 graus
- **Raio de Audição**: Tiros = 50m | Passos Correndo = 12m | Andar Agachado = 0m (Silencioso)
- **Buffer de Tempo de Reação**: Atraso de 350ms entre a aquisição do alvo e o gatilho de ataque
## 2. Hierarquia Mestra da Árvore de Comportamento
Raiz (Seletor) ├── [Decorador: Vida < 20%] -> Sequência (Fuga de Emergência) │ ├── EncontrarCoberturaLongeDoJogador() │ ├── MoverParaCobertura() │ └── TocarAnimacao("Curar") ├── [Decorador: PodeVerJogador == Verdadeiro] -> Seletor (Ramo de Combate) │ ├── [Decorador: EmAlcanceCorpoACorpo] -> Sequência (Golpe Corpo a Corpo) │ │ ├── TocarAudioFala("Carga!") │ │ ├── TelegrafarPreparacao(400ms) │ │ └── ExecutarDanoCorpoACorpo() │ └── Sequência (Engajamento à Distância) │ ├── Seletor (Tomar Cobertura ou Flanquear) │ │ ├── [Decorador: EmCobertura] -> MirarNoJogador() │ │ └── MoverParaPosicaoFlanco() │ └── RajadaDeDisparo(3_tiros) └── Sequência (Patrulha / Ocioso) ├── PegarProximoPontoPatrulha() ├── MoverParaPonto() └── EsperarAleatorio(2s, 5s)
## 3. Falas de Áudio e Feedback do Jogador
- **Ao Avistar o Jogador**: *"Contato! Nove horas!"*
- **Ao Lançar Granada**: *"Granada para fora! Se protejam!"*
Exemplo Prático: Corrigindo IA de Inimigo Atirador "Injusta"
- Problema: Testadores de jogo odiavam um inimigo atirador porque ele matava jogadores instantaneamente do outro lado do mapa sem aviso.
- Remediação: Adicionou-se uma linha de mira laser vermelha visível varrendo o chão por 2,0 segundos antes de atirar, emparelhada com um zumbido distinto de carregamento de áudio.
- Resultado: As mortes dos jogadores pareciam justas e evitáveis; as pontuações de satisfação dos testadores saltaram de 32% para 88%.
Lista de Verificação de Verificação
- Sistema de percepção valida distância, cone FOV e linha de visão por raycast físico.
- Árvore de comportamento prioriza estados de sobrevivência/fuga antes de ações ofensivas.
- Todos os ataques letais incluem animações de telegrafia legíveis ou falas de áudio.
- Agentes NavMesh implementam prevenção de colisão local (RVO) para evitar aglomeração em portas.
- Tempos de reação do inimigo incluem buffers de atraso realistas semelhantes aos humanos (200–400ms).
Anti-Padrões
- IA Onisciente: Deixar os inimigos saberem as coordenadas do jogador através de paredes sólidas sem verificações de percepção.
- Enquadramento no Quadro Zero: Inimigos girando $180^\circ$ e atirando com 100% de precisão em um único quadro.
- Os Lemmings em Fila Única: Ter 8 inimigos marchando em linha reta por um único corredor para serem abatidos um por um.