Fazendo uma IA de jogo 4x passável

8

Estou codificando um jogo 4X "simples" (se um jogo 4X puder ser simples). É um escopo independente, e eu estou me perguntando se há alguma maneira de criar uma IA aceitável sem que eu tenha passado meses codificando nela.

O jogo tem três partes principais de tomada de decisão; gastos em pontos de produção, gastos em pontos de movimento e gastos em pontos técnicos (basicamente existem 3 'moedas' diferentes, a moeda não gasta no final do turno não é salva)

  • Gastar pontos de produção
    • Atualize um planeta (aumente sua tecnologia e produção)
    • Construir navios (3 tipos)
  • Mover navios de planetas para planetas (custando Pontos de Movimento)
    • Mover para atacar
    • Mover para fortalecer
  • Tecnologia de pesquisa (pode pesquisar parcialmente uma tecnologia, como no Master of Orion)

O plano para mim agora é uma abordagem de força bruta. Existem basicamente 4 opções amplas para o player -

  1. Atualize o (s) planeta (s) para sua produção e saída tecnológica

  2. Conquiste o maior número possível de planetas

  3. Proteja o maior número possível de planetas

  4. Chegue a uma determinada tecnologia o mais rápido possível

Para cada decisão, percorrerei as opções possíveis e apresentarei uma pontuação; e a IA escolherá a decisão com a pontuação mais alta. No momento, não tenho idéia de como 'misturar decisões'. Ou seja, por exemplo, a IA deseja atualizar e conquistar planetas ao mesmo tempo. Suponho que posso ter outra lógica que faça uma otimização da força bruta em uma combinação dessas 4 decisões ...

Pelo menos, esse é o meu plano se não consigo pensar em nada melhor. Existe alguma maneira mais rápida de criar uma IA aceitável? Não preciso de uma boa, para rivalizar com o Deep Blue ou algo assim, apenas algo que tenha a ilusão de inteligência.

Esta é a minha primeira vez fazendo uma IA nessa escala, então não ouso tentar algo grande demais também. Até agora, tenho experiências com FSM, DFS, BFS e A *

Extrakun
fonte
2
A maneira correta de abordar esse problema é pesquisar você mesmo. Implemente o que você descreve e veja como ele funciona. Então faça melhor. Depois de achar que possui um bom algoritmo, reimplemente a IA para usar a nova estrutura. Eu sugiro criar isso em uma linguagem de script como Lua, para facilitar o descarte do código antigo.
Nicol Bolas
Para esclarecer, eu poderia tentar implementar o que tenho em mente. Só estou imaginando se existem outras maneiras de criar uma IA além do min-maxing ou do método tradicional 'iterate-and-computate best-score'.
Extrakun #

Respostas:

4

Parece que você pode experimentar o Minimax para "misturar" suas decisões. Houve uma conversa no Game AI Conf do ano passado pelos programadores por trás da Green Corp, e foi isso que eles usaram para criar sua IA. Levou muito tempo para acertar, mas eles têm um resultado decente.

Laurent Couvidou
fonte
1

Se for bom o suficiente para despertar interesse (e você terá que presumir que será, ou pode sair agora), e ele suporta redes, o melhor curso de ação para esse tipo de coisa é:

  • construiu multiplayer sem qualquer AI
  • garantir que todos os dados enviados ao cliente possam ser facilmente "entendidos" por uma IA
  • crie uma IA muito simples, que permita algum tipo de script ou muitas opções de configuração
  • permitir que os jogadores modifiquem os scripts da IA, vinculem-nos ao jogo e deixem a IA jogar via rede, como se fosse um jogador real

Fazendo isso, a parte mais difícil será permitir que a IA seja roteirizada e usada dessa maneira, e você apenas terceirizará a otimização real da IA ​​para os jogadores.

Isso não apenas fornecerá uma IA muito melhor, mas também agregará muito valor ao jogo em si!

o0 '.
fonte