Eu sou novo na programação de jogos e estou tentando fazer um jogo espacial de cima para baixo em 2D com duas naves espaciais que lutam entre si. Estou indo bem com a nave espacial controlada pelo usuário, mas não tenho idéia de como começar a programar uma IA. Alguns métodos / padrões são melhores para esta situação? Onde eu começaria?
58
Respostas:
O padrão de estratégia é ótimo para determinar o que fazer, mas não quando fazê-lo. Você também precisará usar as Máquinas de Estado Finito para saber em que estado sua IA está e quais decisões apropriadas estão disponíveis.
Um guia prático para criar um jogo completo AI: Volume I
fonte
Se esta é sua primeira vez desenvolvendo IA, você não precisa se preocupar com coisas como padrão de estado, matemática comportamental ou até mesmo obter um livro sobre o assunto.
Você pode literalmente se safar com algo assim:
O principal aspecto da correção da IA é pensar em quais comportamentos você deseja que o personagem tenha e como isso pode ser alcançado de forma realista. Portanto, para um inimigo básico da espaçonave, eu imaginaria que as possíveis ações que ele poderia realizar seriam:
E quando essas ações poderiam acontecer?
Depois de fazer isso devido ao baixo número de "estados" em que seu personagem pode estar, você pode usar uma declaração if simples como a acima. Eu recomendaria que você analise os comportamentos de direção, pois esses são comportamentos muito simples de implementar e podem resultar em um movimento realmente bonito.
Mais informações podem ser encontradas aqui: http://www.red3d.com/cwr/steer/
E eu recomendaria definitivamente o livro de Mat Buckland, Programming Game AI By Example , especialmente quando você está começando.
Quando você estiver realmente confortável com isso, sugiro examinar os padrões de estado e estratégia.
O ponto é começar pequeno e simples. Não se preocupe com todos esses termos, para que todos fiquem discutindo sobre FSMs e padrões de design e o que for. Projete e construa antes de tudo, depois se preocupe em como melhorá-lo usando métodos ou padrões existentes.
Espero que ajude!
fonte
Você pode consultar o OpenSteer e a documentação dos comportamentos de direção que o acompanha. O código-fonte não é de nível iniciante, mas os conceitos por trás dele devem lhe dar boas idéias.
fonte
Você pode querer olhar para o padrão de design da estratégia . Escreva essencialmente as mesmas estratégias básicas de como os navios se comportarão:
Então você usará a lógica (máquinas de estado) para escolher entre essas estratégias. Por exemplo: Se os escudos dos navios caírem abaixo de 50%, corra para longe do alvo e vá em direção a itens de poder / cura e assim por diante.
fonte
Posso sugerir que você compre o livro Inteligência Artificial para Jogos de Ian Millington - é excelente! :) http://www.ai4g.com/
O código fonte está na licença Github - MIT.
Obviamente, se você não estiver usando C / C ++, isso poderá ser menos relevante.
Mas realmente uma introdução incrível ao mundo da estupidez / inteligência artificial.
O que você precisará é de máquinas de direção e de estado. Para iniciantes.
fonte
Alguns conselhos práticos se você optar por máquinas de estado: cuidado com o megastate.
É tentador ter um estado de "fuga" que lida com a definição de uma posição para a qual fugir, definindo uma velocidade de alvo alta, limpando todos os alvos etc. É muito melhor ter muitas máquinas de estado, cada uma controlando um ou poucos controles de navio - por exemplo, um máquina de estado que lida com a seleção de uma posição de destino, uma que lida com armas etc.
Isso pode parecer estúpido, pois você teria que adicionar estados de fuga a cada máquina individual, mas como você está restrito a apenas uma ou duas saídas, seus estados acabam muito pequenos, portanto isso não deve ser um problema.
Além disso, como agora cada controle está sob controle individual, você pode selecionar uma posição de alvo de fuga enquanto ainda tem o estado de ataque controlando suas armas. Você pode esmagar um inimigo enquanto ainda conserva a potência do motor devido a um vazamento de líquido de arrefecimento. Você pode dirigir para evitar uma colisão enquanto ainda descarta contramedidas. Tudo isso seria impossível com uma única máquina de estado abrangente.
fonte
Matemática Comportamental para Game AI
Adicionando este livro à lista de pontos de partida para aprender a programação de IA. Com seu foco na observação e implementação de comportamento, em vez de algoritmos de aplicação limitada, acredito que seja bem adequado à tarefa.
fonte
Como criar AI é uma pergunta complicada, porque consiste em várias partes:
Outros pôsteres sugeriram ótimos livros e eu gosto dos AI4Games sugeridos por jacmoe, mesmo sendo bastante geral em partes (como muitos livros, o que é claro que é compreensível).
Obviamente, cada tipo de jogo tem suas necessidades específicas, e os jogos de arcade / atirador não precisam de arquiteturas complexas para suportar uma jogabilidade interessante. As libs de direção simples farão o trabalho como base desse comportamento e, em seguida, você adiciona detalhes para vários tipos de inimigos (alguns disparam periodicamente, outros disparam prevendo o movimento do jogador, outros giram para enfrentar o inimigo, outros podem coordenar seus ataques etc).
fonte
Pense no que você faz quando joga o jogo. Faça a si mesmo algumas perguntas.
Então, o que eu faço é fazer com que a AI olhe para o campo de jogo e faça uma lista de possíveis ações ou movimentos que a AI poderia fazer com base nessas perguntas. Classifico e classifico esses movimentos com um "fator de inteligência". Então, é tão simples quanto escolher e executar um movimento / ação com base em alguma combinação de aleatoriedade e em qualquer nível de dificuldade que o jogador escolheu no início do jogo.
Depois de 500 milissegundos, faço novamente.
Ele não possui habilidades de aprendizado nem nada, mas com ajustes suficientes pode ser bastante convincente, o que realmente importa
fonte