o que pode ser feito para melhorar a derradeira e insana IA em tempo real?

12

Eu tive esse bate-papo com um amigo meu sobre se uma IA pode ser criada ou não, que poderia derrotar qualquer humano sem trapacear em um jogo de estratégia em tempo real. Uma IA que funcionaria quase perfeitamente. A IA dos jogos de hoje tem muitas áreas que podem ser melhoradas, a maioria delas depende de trapaça de recursos, um melhor desenvolvimento inicial por causa disso e ataque em ondas.

Ainda assim, a questão é o que precisaria ser feito para melhorar isso para obter a IA definitiva. Além disso, se você tiver algum exemplo de jogo em que um determinado recurso foi usado, seria ótimo.

Editar: Há pouco esclarecimento que posso fornecer para quem não leu o título ou os poucos parágrafos que descrevem o problema. Trata-se de jogos de estratégia em tempo real e da IA ​​mais avançada. Isso significa Strarcraft, Warcraft, Generais, Red Alert, Age of Empires, IA War etc. Jogos que têm mais de um nível de dificuldade, mas o foco aqui é o desafio final.

tenpn tem um post fantástico, repleto de ótimos recursos. Obrigado, tenpn! Eu gostaria que mais pessoas contribuíssem nessa direção.

altvali
fonte
6
Realmente, essa pergunta não faz sentido sem um caso específico. Todos os jogos têm maneiras diferentes de implementar a IA, dependendo da mecânica do jogo envolvida, e 'como melhorá-los' variará enormemente. No mínimo, este deve ser o Wiki da Comunidade, pois não há resposta 'certa' aqui.
precisa saber é o seguinte
2
Além do primeiro: considere que o xadrez é um jogo de estratégia.
Rushyo 3/09/10
1
Por que você iria querer? Fazer uma IA perfeita para o jogo de Pong é absolutamente trivial e absolutamente divertido de se jogar. O objetivo da IA ​​do jogo não é derrotar o jogador, pois é o jogador (não o computador) quem deve estar se divertindo.
Ian Schreiber
1
Ian: O OP está falando sobre algo muito diferente de Pong. É fácil criar uma IA Pong imbatível ou uma AI Tic-Tac-Toe. O xadrez pode ser levado para uma IA que apenas o muito, muito, muito melhor pode derrotar. Mas o RTS é um jogo diferente.
The Duck comunista
2
Você pode estar interessado no algoritmo STRIPS .
user712092

Respostas:

12

É uma pergunta difícil de responder. Para declarar o que precisa melhorar, você precisa ter alguma IA conhecida para trabalhar. No entanto, aqui estão alguns exemplos de RTS AI de aigamedev.com (registro obrigatório):

Infelizmente, a maioria das coisas realmente boas está por trás do paywall.

Uma solução comum de IA é o Planejador de Ação Orientado a Objetivos, que usa regras para formar planos para satisfazer as metas. Já faz um tempo, mas é muito legal. Há uma breve visão geral (pdf) disponível no site de Jeff Orkin sobre como é aplicada a um FPS, mas exatamente o mesmo princípio (com diferentes regras e objetivos) funciona para RTSs.

Muitos RTSs usarão hierarquias de GOAPs, com diferentes níveis recebendo objetivos do nível acima e preocupados com diferentes níveis de detalhes do campo de batalha. Eu li um ótimo artigo sobre a IA de algum jogo de guerra hexagonal da Segunda Guerra Mundial que foi estruturado dessa maneira, mas, apesar de tudo o que é o google, não consigo encontrar o link agora. Estrela de ouro para quem puder me ajudar.

É claro que a eficácia dos GOAPs e de outros planejadores depende de quão bem você analisa seu mundo de jogo e de quão refinadas são suas ações e objetivos.

Outra tecnologia comum inclui arquiteturas de utilitários (pdf) para pontuação e prioridades e quadros para analisar o mundo do jogo.

tenpn
fonte
6

O ponto é que, se você tem uma IA

que poderia derrotar qualquer humano sem trapacear em recursos em um jogo de estratégia em tempo real

então você tem um jogo que ninguém vai jogar porque não conseguiu passar do primeiro nível.

A parte mais difícil da programação de IA é tornar a IA vencível, mas vencível por alguém com um pouco de habilidade. Torne fácil demais a batida e os jogadores se deixarão levar pela falta de um desafio, dificultará demais e, novamente, as pessoas ficarão cansadas de serem vencidas o tempo todo.

Portanto, não se trata de criar IA complexa (o que não é difícil, afinal, a IA pode processar tudo dentro de sua área de jogo simultaneamente, enquanto um jogador pode apenas processar o que está na tela), mas mais sobre como criar um jogo equilibrado.

Skizz
fonte
1
Para esclarecer, criar uma IA que possa derrotar qualquer humano não é tão difícil, pois ele pode controlar suas unidades com melhor granularidade do que qualquer humano poderia esperar (devido a restrições da interface do usuário). Um humano leva segundos para reagir a eventos, selecionar e comandar unidades, enquanto a IA pode atualizar os pedidos de cada unidade individualmente a cada 'turno do jogo' em resposta a qualquer evento. Mas, na prática, isso não é feito, pois tornaria o jogo tedioso. A parte mais difícil é tornar a IA burra o suficiente para vencer.
Skizz
3
Esclarecer o esclarecimento - tornar a IA imbatível não é tão difícil; tornar a IA vencível, desafiadora e envolvente é muito, muito mais difícil.
Skizz
3

Muito poderia ser feito, mas minha reação imediata a essa pergunta foi uma contra-pergunta: por que alguém iria querer a melhor inteligência artificial do RTS? E por que essa pessoa não joga online contra outro oponente humano?

O ponto crucial é: não é o problema de tornar a IA imbatível, é o problema de fazê-la pensar rápido o suficiente (por exemplo, é preciso ter atalhos) para poder jogar contra 3 ou até 7 oponentes da IA ​​no mesmo mapa com um computador regular. Mesmo hoje e amanhã, e espero que não tenha mudado nem daqui a dez anos.

A próxima questão é: contanto que a IA siga regras estritas, ela será explorada. Até regras difusas o tornam vulnerável a explorações. A IA precisaria aprender e cometer erros - intencionais e não intencionais. Também precisaria surpreendê-lo. E então você está jogando contra outro ser humano. Como a IA nem sequer chega perto de copiar o modo de pensar humano, tanto em termos algorítmicos quanto em termos de poder de processamento, é muito melhor não desperdiçar seu tempo com uma IA de um único jogador que não é tão divertida de jogar quanto outra ser humano, nem que seja pelos fatores sociais envolvidos.

LearnCocos2D
fonte
1

O que você define como "trapaça de recursos" é como "aumentar o equilíbrio" em jogos de corrida. O 'impulso' é usado para tentar manter o pacote relativamente próximo um do outro para criar a ilusão de uma corrida acirrada. Se o jogador não estiver na liderança, ele poderá manter o jogador à vista e, se estiver na liderança, manterá a pressão colocando os oponentes diretamente em sua cauda, ​​mesmo que a própria CPU seja um driver medíocre.

Em um RTS, você está olhando para uma coleção de valores que podem ser organizados de maneira ideal. Você sabe exatamente quanto tempo leva para obter um recurso, quanto custa os itens de construção, o tempo de percurso do mapa etc.

Se você é quem criou as tabelas e tem as informações prontamente disponíveis, é apenas uma questão de agrupar os dados para encontrar as melhores taxas de saída.

Mas quão divertido é jogar contra um inimigo que sempre faz exatamente a mesma coisa com base no contexto do campo de jogo?

Então você adiciona o caos. Você dá à AI uma eficiência em uma escala móvel. Você tem que assediar o jogador. Se o jogador parece estar indo muito bem, você tem um truque da IA ​​e fornece alguns recursos ou reforços extras para manter o jogador alerta.

Você quer que o jogador sinta a satisfação de enfrentar um adversário desafiador, em vez de bater em uma IA fraca ou ser abatido pelo Hal9000. A perfeição de um oponente da CPU reside em sua imperfeição. :)

Casey Wagner
fonte
2
E diferente, mas relacionado: é bom se a IA às vezes faz coisas que não são tecnicamente sua melhor opção, mas adiciona um pouco de diversão ao jogo, como usar unidades ou movimentos incomuns (por exemplo, lançar tropas na parte de trás da base do jogador) )
Bart van Heukelom
0

Uma coisa importante é que você precisa acompanhar o desenvolvimento estratégico do jogo. Nenhuma quantidade de desenvolvimento permitirá que uma IA vença uma partida de Starcraft 1 (em jogo limpo) se achar que um exército central de fuzileiros navais é a maneira de jogar um jogo terráqueo-terráqueo.

Não apenas isso impedirá que a IA seja derrotada de forma consistente devido à sua escolha de estratégia obsoleta, mas ter um repertório maior de abordagens ao jogo tornará a AI mais envolvente, se a AI fizer escolhas viáveis ​​ao longo do caminho.

Uma rica árvore de estratégia permite até um controle deslizante de dificuldade; por exemplo, a insana Zerg AI tenderá a adotar abordagens flexíveis que se adaptem ao inimigo e se expandam rapidamente quando for dada a oportunidade, mas no nível de dificuldade normal, é provável que você escolha construções mais rígidas e seja menos propenso a expansões em massa.

user64554
fonte