Como implementar a IA no jogo de luta

8

Eu construí um lutador 2D http://neighr.com/mif/index.htmlontem.

O segundo 'jogador' quase não faz nada. Na verdade, nada. Para ser sincero, nunca fiz um jogo antes com um adversário como este.

Então, minha pergunta é: como começar com a programação de IA para o oponente? Existem tutoriais, melhores práticas? Quero que seja um desafio (para o jogador, não para mim).

Lanbo
fonte

Respostas:

12

N-gramas são populares aqui. A idéia básica é manter uma lista de movimentos que o jogador fez. Você pode então, dados os últimos N movimentos do jogador, descobrir a probabilidade percentual de qual será o próximo movimento dele.

Seu jogo deve ter um banco de dados de contadores e blocos efetivos para cada jogada.

Para modos ofensivos na IA, você ainda pode modelar o jogador básico para determinar quais ataques o jogador teve mais problemas para bloquear ou combater e reutilizá-los.

Para dificuldade de IA, reduza a IA em níveis mais fáceis. O pior modo AI pode inverter as escolhas (ou seja, se ele sabe que o jogador geralmente bloqueia socos, ele tem um chane mais alto do que baixo para dar um soco). O modo de maior dificuldade usaria o algoritmo não deficiente, e provavelmente vai acabar com o jogo.

Se você deseja tornar o jogo mais divertido, também recomendo adicionar personalidade à IA. Alguns personagens podem provocar mais, outros podem ser mais defensivos do que ofensivos etc. Os jogadores gostam de poder atribuir inteligência humana aos personagens de IA.

Sean Middleditch
fonte
3

Honestamente, mesmo que algumas das principais respostas recomendem IA mais complexa, se essa é uma tentativa inicial de um jogo e você ainda não é tão habilidoso com código, tente uma IA mais burra

Por exemplo, um sistema simples de

espera (0 a 3 segundos)

Roll d6

escolha entre 6 ações.

Ou algo semelhante, dependendo de quantas ações você tiver

ProtoJazz
fonte
2

É assim que eu iria fazer ai para um jogo de luta.

Faça listas de movimentos (dependendo do char) que sejam apropriados para diferentes distâncias do jogador e peça que ele faça um movimento. Se a dificuldade for muito difícil. Faça com que ele escolha um golpe difícil. Caso contrário, escolha a jogada que faz menos para médio e menos para fácil. Você também pode jogar um fator aleatório que escolhe diferentes intervalos daquele em que o jogador está, dependendo da dificuldade. A quantidade de decisões deve basear-se na dificuldade em que ele avalia 3 segundos após cada movimento (fácil) 2 segundos (médio) ect. Cada vez que determina seu curso de ação.

resumindo, escolha uma distância (conjunto de movimentos), escolha um movimento e, em seguida, quanto tempo eles esperam antes de fazerem a mesma coisa. Entre a espera da próxima ação, eles podem se esquivar e se esquivar por acaso. Espero que isto ajude.

Kaliber64
fonte
+1 Esta é uma solução extremamente simples, mas absolutamente viável e eficiente. Por acaso, você saberia se um sistema como esse foi usado em algum jogo comercial? :)
Miguel
Não, eu não. Estou falando de muito pouca experiência. Então, se é bom, e eu pensei nisso. Então certamente eu não sou o primeiro. (Se é bom). N movimentos seriam mais inteligentes. Mas mais difícil.
precisa saber é o seguinte