Como funciona a lógica da IA?

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Como funciona a lógica da IA?

Mensagem por Ritton em Dom 22 Jan 2012, 22:53

Olá a todos! Primeiramente, não sei se essa é a seção correta para postar o assunto do gênero, mas pelo título e a descrição, me pareceu que seria o local ideal para fazer a pergunta. Bom, eu gostaria que pudessem me ensinar a lógica da IA ou, se possível, montar uma lista de assuntos referentes a isso. Eu gostaria de aprender a lógica para ser aplicada em jogos Top Down.

A lógica que eu queria aprender é o seguinte:

  • Movimento do Inimigo

  • Realizar ações

  • Chegar até um certo local


Membro do Fórum: Espera um pouco Ritton, você não está indo longe demais?
Ritton: Bom, se pudessem passar apenas a lógica da IA em relação ao movimento do inimigo e realização de apenas uma ação, estaria ótimo! O resto é com um bom estudo em GML.

Membro do Fórum: Que tipo de ação você se refere exatamente?
Ritton: Apenas a simples ação do inimigo atirar. Nada mais que isso.

Membro do Fórum: Então por qual motivo você não usa algum método para permitir que de tempo em tempo, o objeto atire?
Ritton: Assim estragaria a IA nessa parte. Quero que o inimigo escolha a hora que deve atirar ou não.

Membro do Fórum: Qual o objetivo da IA?
Ritton: Dois objetivos: Destruir o jogador e destruir um objeto. Para destruir esse objeto, ele realizará a ação de atirar para destruir os objetos em seu caminho.

Membro do Fórum: Não seria complicado?
Ritton: Ao meu ver, seria sim. Por isso peço que me ensinem apenas a lógica da movimentação e da realização de ações. O resto é por minha conta.

Então, alguém poderia me ajudar? Não quero a resposta e sim a resolução da resposta. Se puderem montar uma lista sobre assunto e me guiarem por onde começar, seria ótimo!

Até mais!

Ritton

Ranking : Nota C
Número de Mensagens : 673
Idade : 18
Data de inscrição : 07/06/2011
Notas recebidas : C
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como funciona a lógica da IA?

Mensagem por Gonçalves em Dom 22 Jan 2012, 23:23

Você pode guardar em uma variável a distância entre o inimigo e o jogador point_distance(x,y,jogador.x,jogador.y). Use uma condição para checar se o valor dessa variável é menor que tanto (recomendo 200), se sim, a ação.
Use mp_potential_step() para movimentar o inimigo até certo ponto (x,y), a determinada velocidade (speed), e se desviará até de o objetos não-sólidos (checkall).
Depois eu posto mais algumas coisas... Até!


Última edição por Gonçalves em Dom 22 Jan 2012, 23:29, editado 1 vez(es)

Gonçalves

Ranking : Nota B
Número de Mensagens : 1013
Data de inscrição : 29/10/2010
Notas recebidas : B + A + C
Reputação : 79
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como funciona a lógica da IA?

Mensagem por Tedi Ripper em Dom 22 Jan 2012, 23:26

bom, todo IA tem que ter um motivo, um plano de funcionamento
primeiro vc deve esquematizar todas as alternativas, por exemplo:

Se o inimigo chegar perto do player
  • Checar vida do player
    • Atirar caso seja mais baixa
    • correr como uma garotinha se for maior
  • Atirar destemidamente


ai depois disso, vc vai formulando o codigo

caso vc queira fazer ele escolher entre escolhas ;D usa o choose
Código:
if choose(0,1)=0
{
//correr como uma garotinha
}
else
{
//Fucyea
}

ai vc vai formulando, ah, em relaçao ao inimigo andar, seria interessante se o mapa fosse interativo com o inimigo, por exemplo:
o inimigo tivesse uma rota definida como soldado, mas se ele quiser, pode passar no refeitorio e talz...

para ele movimentar, eu, particularmete, proponho vc usar o Path Find que vem junto com a gmLIBRARY do Jiraya (pq eu usei e é muito bom)
flw

Tedi Ripper

Ranking : Nota C
Número de Mensagens : 765
Idade : 19
Data de inscrição : 21/11/2010
Notas recebidas : C
Reputação : 24
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como funciona a lógica da IA?

Mensagem por luiz_eldorado em Dom 22 Jan 2012, 23:31

Não seria complicado?
Bem, você poderia ver a direção em que o inimigo está no momento e a que está entre ele entre o player. Verifica com um collison_line() se tem algum bloco entre vocês, se não tiver... go. Nunca use move_towards_point(), use mp_potential_step(). Mas se não ver o player, então segue seu caminho. Que caminho? Poderia ser algo como "Tem os lugares onde eu possa ir. Se eu não fui ali então eu vou.". Sobre o objeto, somente se ele já souber onde ele está. Aí é facil, é só ele ir pra lá e pronto! E quando chegar perto, manda bala.
Talvez, se ele ver o jogador, da uma velocidade negativa na direção do jogador (foge) até que ele não esteja mais vendo. Depois de um alarm, ele iria atirar um pouco e ja voltava.

É algo mais ou menos assim. Vou dormir, até mais!

luiz_eldorado

Ranking : Nota C
Número de Mensagens : 928
Idade : 17
Data de inscrição : 30/07/2011
Notas recebidas : C
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://luizpontes.tk/

Voltar ao Topo Ir em baixo

Re: Como funciona a lógica da IA?

Mensagem por saim em Dom 22 Jan 2012, 23:34

Oi, Ritton.

Você realmente está mexendo numa caixa de marimbondo. IA é perigosíssimo, porque depois que você pega o jeito, se apaixona e não quer mais largar.

O chato é que não existe uma fórmula mágica secreta, como você já deve esperar. Cada IA tem sua lógica, cada uma "pensa" diferente da outra.

O grande segredo é detalhar ao máximo o que você quer que o objeto faça. Digo, detalhar pra você mesmo, talvez anotar num papel, mas começar a programar a IA muito antes de abrir o game maker.

Por exemplo, você quer que o inimigo atire no jogador ou num outro objeto. Qual o critério ele deve usar pra escolher? Distância? Linha de tiro liberada? E no caso desse critério empatar pros dois alvos, qual o critério de desempate?
Fora isso, o inimigo deve se mover, certo? Pra onde? Como ele vai escolher o lado que deve virar, é algo aleatório ou ele deve buscar uma forma eficiente de liberar uma linha de tiro ou deve simplesmente percorrer um path pré-programado?
Aí, se ele vai seguir algum critério de movimentação inteligente, que critério será esse?
O segredo não está só nas respostas, está principalmente nas perguntas.

Uma vez que você tiver todas essas (e mais um monte de) perguntas, você estará com seu pseudocódigo pronto. Aí, passar pra linguagem de programação é quase que um trabalho puramente braçal.

Eu recomendo ler dois tutoriais que eu roubei da internet, que são o da máquina de estados finitos e o do A*.
A máquina de estados finitos é de uma teoria muito simples, que é aquele truque de usar uma variável chamada "ação", que muita gente aqui usa sem perceber que é uma MEF. No tutorial ela é mais elaborada e eficiente. Ela usa nomes de scripts, e não variáveis, como definição do estado atual.
O tutorial do A* é, na essência, um link pro tutorial de verdade, que já existia em português e eu fiquei sem graça de copiar e colar. O que eu fiz foi traduzir a teoria pra UM dos scripts possíveis de elaborar a partir dela.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Como funciona a lógica da IA?

Mensagem por Ritton em Seg 23 Jan 2012, 10:17

Muito obrigado a todos! Antes eu não sabia por onde começar e quase me deu vontade de desistir do projeto. Mas não dessa vez, eu prometi que eu não ia desistir e que continuaria em frente. Eu havia aberto um exemplo chamado "Treasure" que vinha com o Game Maker. A IA é bem simples, tanto que se você estiver na frente do inimigo ele desvia ao invés de ir na sua direção.

OBS: Para quem nunca testou esse exemplo, "Treasure" é um Pac-man que vem junto com o GM, contido na pasta Examples.

Minha intenção é que o inimigo não vá em direção do player e sim que haja o contrário. Quando isso ocorrer, o inimigo verá que é uma ameaça e tentará destruir enquanto os outros tentam chegar ao seu objetivo, ou seja, destruir certo objeto.

O projeto surgiu enquanto eu lia os tutoriais do fórum. De repente eu propus a mim mesmo refazer o que eu aprendi para ver se eu tinha aprendido. A ideia estava ficando tão bacana já que foi inspirada em um jogo antigo de NES, que eu resolvi continuar sem deixar a engine mofando.

Bom, começarei a definir todas as limitações dos inimigos, o objetivo deles e o que ele deve fazer. Anotarei tudo em uma papel a parte, e depois vou transferir para a linguagem GML. Essa vai ser a parte complicada xD. Pelo menos, será um grande pulo em GML, pois eu ficarei mais acostumado. Eu havia lido uma vez esse tutorial da Máquina de Estados Finitos, mas eu não havia entendido. Agora que eu evolui um pouco, hora de reler o tutorial.

Obrigado a todos e bastante sucesso em suas realizações! ;)

PS: Liberado para ser trancado!

Ritton

Ranking : Nota C
Número de Mensagens : 673
Idade : 18
Data de inscrição : 07/06/2011
Notas recebidas : C
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como funciona a lógica da IA?

Mensagem por Conteúdo patrocinado Hoje à(s) 14:08


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum