IA de jogos complexos para jogos de estratégia baseados em turnos

26

Estou pesquisando um projeto de jogo de estratégia baseado em turnos e procurando bons recursos sobre esse tópico. O jogo é um típico jogo de guerra em que os países podem lutar entre si, implantar unidades e fazer com que essas unidades se movam em um mapa de blocos hexagonal, se ataque etc.

Estou particularmente interessado em como a IA da Civilização V é organizada! De acordo com a Wikipedia, o jogo usa quatro sistemas de IA diferentes para diferentes camadas da IA ​​do jogo:

  • IA tática controla unidades individuais
  • a IA operacional supervisiona toda a frente de guerra
  • a IA estratégica gerencia todo o império
  • a grande IA estratégica estabelece metas de longo prazo e determina como vencer o jogo

Conceitualmente, parece que faz muito sentido obter uma IA complexa e me deixa curioso descobrir como esses diferentes sistemas de IA funcionam (e trabalham juntos). A IA tática é provavelmente a mais fácil de entender, pois lida com a tomada de decisões de uma única unidade (movimento, ataque, reparo, recuo etc.), mas acho que os outros sistemas de IA são o que realmente interessam. Por exemplo, o que a IA operacional faz e como faz isso? Tenho certeza de que esses são os segredos mais bem guardados da Firaxis Games, mas seria legal começar uma discussão sobre isso para descobrir mais sobre isso.

Além disso, se alguém conhece algum bom livro que lida com IA de jogo de estratégia baseado em turnos, seria ótimo saber. Obviamente, este é um tópico pouco difundido na web. Eu obtive "AI de programação de jogos por exemplo", mas esse livro é mais sobre IA de comportamento de agente único do que IA de alto nível orientada a objetivos.

BadmintonCat
fonte

Respostas:

19

Embora eu concorde com o parágrafo de abertura do DampeS8N (ou seja, a IA do jogo só precisa ser inteligente o suficiente para fazer o jogador pensar que é inteligente), sinto que essa pergunta precisa de um pouco mais de elaboração. As estruturas de dados em uso podem ser FSMs para todos os níveis, mas isso realmente não responde à pergunta sobre como os sistemas individuais funcionam.

Disclaimer: Eu quase não joguei os jogos Civilization, então meu entendimento da jogabilidade é limitado. Se houver algum erro óbvio, peço desculpas. Por favor, corrija-me e editarei com prazer.

Vou tomar citações do artigo original da IGN .

1. IA tática

No nível mais baixo, a IA tática usa as forças disponíveis para vencer uma batalha em escala local.

Essa é provavelmente a parte mais padrão do subsistema. Existem maneiras ilimitadas de fazer isso usando FSMs, árvores de comportamento (ou mesmo executando ações aleatórias, dependendo da dificuldade da IA).

No entanto, como esse jogo é baseado em turnos, semelhante ao Risk, acho que o mais provável é que cada unidade receba uma pontuação. Existem multiplicadores associados a essa pontuação, dependendo de diferentes variáveis ​​(lealdades, bônus de terreno, etc.).

O resultado é então calculado por algo como isto:

If (AI unit score >> (much greater) enemy unit score) Then Completely destroy enemy unit
If (AI unit score > (somewhat greater) enemy unit score) Then Partially destroy enemy unit
If (AI unit score < (somewhat less) enemy unit score) Then Partially destroy AI unit
If (AI unit score << (much less) enemy unit score) Then Completely destroy AI unit

Faz sentido que a IA tente maximizar essa pontuação quando estiver em batalha.

Adicione um valor de epsilon (por exemplo, pequena chance aleatória de fracasso / sucesso) e você terá uma IA bastante decente (ninguém quer um oponente perfeito, isso não é divertido!).

2. IA operacional

Um passo adiante, a IA operacional escolhe quais batalhas lutar e garante que as forças necessárias estejam disponíveis.

Eu acho que há alguns pontos para isso:

  • Avaliando a força atual
  • Reforço de unidades
  • Avaliando quais brigas escolher / evitar

Avaliando a força atual - Isso apenas grita o mapa de influência para mim. Pode ser facilmente representado em uma grade hexagonal. Como este subsistema é orientado para o combate, os valores de influência podem ser representativos dos valores de força de cada unidade nas proximidades. Se você tem um exército enorme focado em uma pequena área de hexágonos, o valor da influência será enorme e a IA operacional levará isso em consideração ao avaliar as lutas a serem escolhidas. Não se esqueça, os valores de influência dos exércitos opostos também serão calculados. Isso permite que a IA operacional preveja possíveis ameaças de entrada.

Reforços de unidades - Ao receber informações sobre facções opostas do mapa de influência, a IA pode determinar quais unidades estão sob maior ameaça. A IA pode, então, emitir um comando para unidades próximas irem e reforçarem as partes ameaçadas.

Avaliando quais brigas escolher / evitar - Algumas situações podem ocorrer aqui. Se a IA detectar que uma unidade está ameaçada E não houver unidades próximas para ajudá-la, poderá: a) decidir sacrificar a unidade (se for apenas infantaria humilde, em vez de um general insubstituível, por exemplo) ou b) Encomende a unidade recuar. Por outro lado, se a IA detectar uma unidade inimiga fraca perto de um exército, poderá ordenar que as unidades matem esse inimigo.

Aqui está um artigo decente que utiliza mapas de influência em jogos de estratégia em tempo real.

3. IA estratégica

Subindo ainda mais, a IA estratégica gerencia o império como um todo, concentrando-se em onde construir cidades e o que fazer com elas.

"Onde devo construir uma cidade?" apenas soa como avaliação de posição. Os programas de xadrez e outros jogos o utilizam para determinar a conveniência de uma determinada posição. Por exemplo:

Hex A: Perto de recursos, em terrenos altos, perto de aliados, perto de inimigo Hex B: Longe de recursos, em terreno de nível médio, distância média de aliados, longe de inimigo

A função de avaliação de posição pode levar esses três fatores da seguinte forma:

Score = Proximity to resources (closer yields a higher score) + 
terrain elevation (higher yields higher score) + 
proximity to allies (closer is better) + 
proximity to enemies (farther is better)

E o hexágono que tiver a pontuação mais alta será onde a cidade será construída. Mais informações sobre as funções de avaliação podem ser encontradas aqui .

Eu acho que a IA estratégica também tem um monte de estratégias pseudo-pré-definidas no jogo, dependendo do tipo de vitória que a IA está buscando.

4. Grande IA estratégica

No topo da escada está a grande IA estratégica, que decide como ganhar o jogo.

Eu acho que este é provavelmente o mais simples do grupo, e dá a impressão de que é mais impressionante do que realmente é. Em um jogo como este, haverá apenas um número finito de tipos de vitória. O artigo menciona uma vitória da Conquista, assumindo que também há vitórias da Aliança, etc., pode ser tão simples quanto escolher aleatoriamente um dos tipos e depois passá-lo para os outros sistemas.

EDIT: Obviamente, como apontado pelo DampeS8N, o tipo de mapa poderia ditar a melhor condição de vitória a ser adotada, caso em que poderia ser codificado pelos designers ou por algum tipo de função de avaliação considerando diferentes variáveis.

Resumo
Acho que o que é realmente importante observar sobre esse tipo de sistema é que, da maneira como os subsistemas são colocados em camadas, eles não precisam se comunicar muito um com o outro. Parece ser uma arquitetura de cima para baixo, com os componentes fracamente acoplados. Do ponto de vista do design técnico, é limpo e flexível, e provavelmente se inspira no Emergent Behavior e / ou Subsumption Architecture .

Eu realmente peço desculpas pelo tamanho deste post, ele se transformou em um animal :(

De qualquer forma, espero que ajude!

Ray Dey
fonte
2
"Acho que este é provavelmente o mais simples do grupo, e dá a impressão de que é mais impressionante do que realmente é". Eu não teria tanta certeza. Há uma diferença entre apenas decidir ir para uma vitória de conquista e decidir em quem declarar guerra, se estamos excessivamente estendidos e precisamos processar pela paz, qual é o alvo mais fraco para atacar, quais unidades precisamos construir, adquirir os recursos estratégicos certos para fortalecer nosso exército, encontrando uma maneira de fazer com que dois inimigos lutem entre si, etc. Essa fase é muito mais complicada do que você imagina.
Nicol Bolas
11
Uau, e eu pensei que minha resposta estava ficando um pouco longa. RI MUITO. Bom show.
DampeS8N
11
Uma coisa que vale a pena notar é que Civ absolutamente não tem condições simples de vitória. Existem muitas maneiras de ganhar. Construindo maravilhas, avançando a ciência, a conquista diplomática, etc. Escolher o que procurar é geralmente muito difícil e pode mudar com base nas condições do mapa. Você pode descobrir, por exemplo, que alguém que você acabou de conhecer está muito à sua frente na ciência e terá que abandonar esse caminho e se contentar com um novo. Muitas vezes, o sucesso se resume em manter suas opções em aberto o máximo de tempo possível.
DampeS8N
@NicolBolas, pode muito bem ser mais complexo do que isso, mas todos os argumentos que você fez parecem ser responsabilidades pelos níveis mais baixos da IA. Decidir quem declarar guerra - - Operacional. Qual alvo é o mais fraco para atacar -> Operacional / Tático. Adquirindo os recursos certos -> Operacional / Estratégico. Isso é totalmente calculado, mas faria sentido que os sistemas inferiores sejam responsáveis ​​pelas estratégias específicas para garantir o menor nível de acoplamento.
quer
11
@ RayDey: O nível mais alto de IA precisa estar envolvido em coisas como aquisição de recursos, porque precisa decidir como obtê-lo. Diplomacia poderia obtê-lo. A expansão para o recurso pode obtê-lo. O nível operacional não é o local adequado para decidir se alguém deve lutar por ele, em oposição a outras táticas. Acoplamento é uma necessidade para um jogo como Civilization; tudo afeta tudo o resto nesse jogo. Você não pode ter uma IA eficaz que tome decisões sem muito acoplamento. Embora isso pode explicar porque AI de Civ V é ... não particularmente brilhante;)
Nicol Bolas
9

Em geral, a IA nos jogos não deve ser considerada 'complexa', trata-se de obter o que você deseja com o mínimo de esforço possível. O nome do jogo é Emergência.

Nesse caso, sua conceituação fundamental está errada. Esses 4 sistemas não precisam trabalhar juntos. Eles só precisam se parecer com eles. Eles também podem ser muito mais despojados do que você pensa que precisam.

Você também reverteu a ordem das dificuldades. O componente mais difícil da Civ AI é a IA tática, seguida de perto pela Operacional. Estratégico é provavelmente muito simples, e a grande IA é provavelmente mais simples ainda.

A comunicação entre os componentes é mais como um sistema de grunhidos e menos como uma comunicação real. Do nível alto ao baixo, ficaria assim:

Grand AI

avaliar o estado do mapa. Dado o conhecimento que a IA tem (que poderia ser tudo ou apenas o que teria se fosse um jogador), decide qual objetivo final é o mais rápido a ser alcançado. É provável que uma máquina de estado finito faça algum processamento de números e escolha um objetivo. Possivelmente é algo mais exótico; um algoritmo genético ou, possivelmente, um doohickey Bayesiano . Em seguida, resmunga uma mensagem como "mais ciência".

Strat AI

em seguida, analisa o que ele tem disponível para trabalhar usando muitas das mesmas informações. Ele tenta atingir esse objetivo geral, mas também se preocupa com aspectos mais detalhados do jogo. Estou em guerra? Eu tenho pessoas famintas? em breve. Provavelmente é também uma máquina de estado finito , possivelmente Fuzzy Logic (que é realmente apenas uma evolução em um FSM.) Vamos supor que seja um FSM simples. Ele fará as perguntas acima em uma ordem em que, de acordo com certos critérios, decidirá que coisas diferentes precisam acontecer nesta rodada. Estou em guerra, aloque dinheiro para treinar soldados. Meu povo está passando fome, construa um celeiro aqui em vez de construir algo científico.

Escolher quais unidades construir pode fazer parte do Strat AI ou Op AI, dependendo de como estamos dividindo as coisas.

Op AI

pegará as unidades disponíveis e as designará para se moverem em diferentes frentes de guerra. Ele decidirá a forma geral do conflito, para onde as novas unidades se dirigirão quando forem implantadas. Provavelmente também é um FSM. Pode notar que o inimigo na Frente A está atacando com unidades fracas contra a Unidade B e enviará mais Unidades Bs para lá, em vez de para a outra Frente que é forte contra a Unidade B. Ele emitirá ordens gerais para as unidades em geral. Ataque à vontade. Retiro. Em breve.

IA tática

é específico da unidade. Cada tipo de unidade reagirá de maneira diferente à ordem geral. Uma unidade que se destina ao suicídio pode ignorar uma ordem de retirada. Unidades que são covardes podem recuar mesmo quando instruídas a lutar. Civ é tipicamente muito leve sobre esse tipo de coisa. Geralmente todas as unidades em Civ seguem seus comandos. Dada a ordem maior em que estão, eles são (veja um padrão aqui?) Um FSM. Estou ferido? Eu deveria recuar e me curar. Tenho uma vantagem neste local? Ataque. Estou perto demais para atacar? Recuar. E a complexidade desse FSM não precisa ser muito maior do que essas três coisas para ser eficaz e convincente como inteligente.

Isso pode ser aprimorado?

Sim, claro. A questão é se os jogadores notarão. E 99% das vezes não.

Agora, isso é tudo AI de tomada de decisão. Existem outros subsistemas de IA em jogo aqui. Existe A * ou algum outro algoritmo de localização de caminho que permite que as unidades encontrem o caminho mais curto para um local. Existem algoritmos para encontrar a melhor localização para iniciar novas cidades. Em breve. Muitas vezes, são agrupados com IA, e geralmente são realmente mais complexos que a parte "pensante" da IA. De fato, o código para encontrar as respostas para as perguntas que o FSM precisa fazer é frequentemente ordens de magnitude mais complexas do que o próprio FSM. Como exatamente se decide que

DampeS8N
fonte
Bayoh's baseado em doohicky - impressionante
Brian Broom