Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
Como funciona a lógica da IA?
5 participantes
Página 1 de 1
Como funciona a lógica da IA?
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:
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!
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- Games Ranking :
Notas recebidas : C
Data de inscrição : 07/06/2011
Reputação : 2
Número de Mensagens : 673
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Como funciona a lógica da IA?
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é!
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- Games Ranking :
Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Reputação : 79
Número de Mensagens : 1013
Prêmios :
x 0 x 4 x 0
x 2 x 0 x 0
x 0 x 0 x 0
Re: Como funciona a lógica da IA?
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
Atirar destemidamente
ai depois disso, vc vai formulando o codigo
caso vc queira fazer ele escolher entre escolhas ;D usa o choose
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
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
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- Games Ranking :
Data de inscrição : 21/11/2010
Reputação : 25
Número de Mensagens : 777
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Como funciona a lógica da IA?
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!
Re: Como funciona a lógica da IA?
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.
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- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: Como funciona a lógica da IA?
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!
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- Games Ranking :
Notas recebidas : C
Data de inscrição : 07/06/2011
Reputação : 2
Número de Mensagens : 673
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» Ajuda com logica de inventario
» [Resolvido] Lógica de um FPS?
» Lógica/Memória
» [Trancado] Logica de programação
» Lógica: Simplificação de expressões
» [Resolvido] Lógica de um FPS?
» Lógica/Memória
» [Trancado] Logica de programação
» Lógica: Simplificação de expressões
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos