GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Servidor de Discord do fórum?
por Super Games Ontem à(s) 01:27

» Problemas com a caixa de diálogo, ela é pequena e as letras não cabem dentro
por Rukasu777 Qui 16 maio 2024, 18:10

» Problemas com particulas
por RastaMaan Dom 12 maio 2024, 17:03

» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08

» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43

» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42


IA procurar abrigo

5 participantes

Ir para baixo

IA procurar abrigo Empty IA procurar abrigo

Mensagem por saim Seg 10 Fev 2014, 15:26

Normalmente, eu procuro fazer inteligências artificiais agressivas. Quando tenho uma mais defensiva, o jogador tem apenas uma personagem. Ontem me peguei quebrando a cabeça pra imaginar uma IA defensiva contra múltiplos inimigos. Deixa eu descrever melhor o cenário.

Um campo aberto, visão top-down. Munição controlada (não é fácil pegar munição, a IA também não tem munição infinita). Fora alguns abrigos específicos, não há lugar seguro. Esses abrigos são blocos irregulares. Os tiros saem em todas as direções. O jogador controla vários objetos ao mesmo tempo. Pra ficar fácil de visualizar, pense em múltiplos jogadores no mesmo teclado - tendo dois ou mais, pra mim já dá. As ações do jogador e da IA são mover só mover e atirar. Os tiros atingem o alvo no instante em que são disparados. Pra facilitar, mirar não gasta tempo, os objeto giram 360º instantaneamente. A mira é sempre perfeita.

Variações possíveis: o ato de atirar pode levar algum tempo, tipo um segundo. O tiro poderia passar por cima do bloco que serve de abrigo ao objeto que está atirando. O tiro pode se deslocar menos rapidamente. O jogo pode funcionar em turnos, de modo que cada objeto tenha uma distância pra se mover e/ou um número de tiros pra disparar (como se cada tiro ou cada metro gastasse um tanto de uma variável "ação"), mas um objeto agindo de cada vez. Os blocos podem ser regulares e o jogo todo ficar numa grid.

Ok. Esse é o cenário.

Se o jogador tivesse apenas uma personagem, minha IA, o tentar se esconder, iria em direção ao bloco mais próximo e, traçando uma linha do jogador até o bloco, ficaria do lado oposto ao jogador.

Mas tendo mais de uma direção pra me opor, eu não consigo determinar qual seria o ponto seguro mais próximo. Essa é minha primeira dúvida. Como determinar o ponto mais seguro quando múltiplos inimigos estão mirando?
Outra coisa... como determinar quando não existirem mais pontos seguros. Por exemplo, o jogador faz uma jogada sensacional e cerca completamente a IA. O bloco mais próximo está completamente cercado, tem 360 objetos-jogador em volta dele. Como definir que não dá mais pra se esconder?
A terceira dúvida é pra depois de resolvida as primeiras... supondo que eu determine como me esconder de muitos inimigos e que o bloco adjacente esteja completamente cercado, mas exista um bloco ao meu alcance com boa possibilidade de me esconder. Como encontrá-lo? Melhor ainda, como definir a melhor posição pra me esconder?
Quarta dúvida, pra terminar de viajar: e se eu quiser que essa IA tenha um comportamento defensivo e agressivo ao mesmo tempo? Quer dizer, como ir de proteção em proteção até atacar o jogador, com segurança?

Por enquanto, são apenas perguntas teóricas, então evitem responder com códigos. Sei que tem hora que é mais fácil colocar umas linhas de código que descrever a ação, mas fora isso, não precisa de código. Quero mesmo é uma luz quanto a como abordar o problema...
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : IA procurar abrigo Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

IA procurar abrigo Empty Re: IA procurar abrigo

Mensagem por PedroX Seg 10 Fev 2014, 15:38

Boa pergunta. Quando descobrir me avise.

Agora falando sério.

Como determinar o ponto mais seguro quando múltiplos inimigos estão mirando?
O jeito é descobrir todas os possíveis esconderijos. Então você calcula uma nota pra cada um, dependendo de quantos inimigos podem atirar nessa posição.

Como definir que não dá mais pra se esconder?
Quando não houver possibilidades.

como definir a melhor posição pra me esconder [quando completamente cercado]?
Baseando-se na nota.

como ir de proteção em proteção até atacar o jogador, com segurança?
Aí teria as seguintes possibilidades:

Mover somente para abrigos igualmente ou mais seguros, e mais próximos do jogador, ou não.
Mover para qualquer abrigo mais próximo do jogador.

A pergunta que sobra é: como aumentar a rapidez nessa procura?

Edit: Estou sem o GM, porque o Studio não abre e os projetos do GM:8 não rodam ( confused ).

Pra quebrar o galho, ou melhor, a árvore inteira, estou usando o LateralGM com o ENIGMA. Quando eu resolver alguns bugs aqui, vou tentar fazer um exemplo.

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : IA procurar abrigo Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

IA procurar abrigo Empty Re: IA procurar abrigo

Mensagem por luiz_eldorado Seg 10 Fev 2014, 17:04

Não acho boa ideia a do PedroX, pois pelo que li os "esconderijos" são irregulares, então o jogo teria que calcular automaticamente quais são esses esconderijos.

Não sei como isso pode ajudar, mas esse sistema teria uma analogia ao sistema de iluminação dos jogos 2d. Você tem um ponto de luz (inimigo do bot) e os objetos (os esconderijos). A parte "vísível" ficaria mais clara e a parte "invisível" ficaria preta. Então nesses locais pretos seriam os esconderijos. Acho que essa direção entre inimigo e bot deve ser calculada primeiro, antes de fazer o bot ir até o bloco.

Se uma engine de luz pode calcular os pontos claros e escuros, não deve ser difícil fazer os pontos de esconderijo para o bot.

saim escreveu:A terceira dúvida é pra depois de resolvida as primeiras... supondo que eu determine como me esconder de muitos inimigos e que o bloco adjacente esteja completamente cercado, mas exista um bloco ao meu alcance com boa possibilidade de me esconder. Como encontrá-lo? Melhor ainda, como definir a melhor posição pra me esconder?
Nesse caso é a mesma coisa que em cima, ver os "pontos de escuridão". Se um esconderijo está cercado, ele estaria totalmente claro, então não é válido como esconderijo.
luiz_eldorado
luiz_eldorado

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 30/07/2011
Reputação : 47
Número de Mensagens : 928
Prêmios : IA procurar abrigo Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://luizpontes.tk/

Ir para o topo Ir para baixo

IA procurar abrigo Empty Re: IA procurar abrigo

Mensagem por saim Seg 10 Fev 2014, 18:16

@PedroX: Talvez eu não tenha me expressado bem. O campo todo é esconderijo, ao mesmo tempo em que não é. Eu estou escondido no momento em que existe um bloco entre eu e meu inimigo.
Eu gosto muito da idéia de dar notas pra posições. Me lembra o A*
off:
Mas se todo o campo pode ser esconderijo, como dar uma nota? Talvez usando aquela modificação que divide a tela em grids (também como o A*)... Aí, cada célula da grid poderia ter um adicional negativo (existe isso? adicional negativo?) se o collision_line de CADA inimigo conseguir passar por ela. Nesse caso, teríamos um loop do tamanho da quantidade de inimigos, o que não parece absurdo, talvez até pra colocar no step!!!
Mais que isso, teríamos as melhores posições próximas ao bot, o que já dá um avanço excelente à solução do problema de quando completamente cercado.
É, acho que entendi sua idéia. Gostei dela. Mais, dá pra bolar um joguinho de estratégia, baseado nisso.
O problema não é tanto fazer um jeito rápido de calcular a solução, mas evoluir essa IA pra prever as posições que o jogador PODE estar (mas isso já não faz parte do escopo do tópico).

@luiz_eldorado: Cara, MUITO parecido com sistema de iluminação. Só que sistemas de iluminação (que eu conheço, pelo menos) não me dão pontos iluminados, mas pontos que colidam com masks. Essas masks estão sempre numa direção, então fica mole saber se há colisão ou não. No caso do meu problema, eu quero determinar uma posição em que a luz não chegue, que pode (provavelmente será) ser diferente da posição em que estou. Então eu não tenho o ângulo da mask. Pode ser qualquer ângulo.
Mais uma vez, caímos na necessidade de dividir a tela numa grid e testar, célula-por-célula, se a luz chega lá e em que intensidade. Na verdade, não é muito diferente da idéia do PedroX, só foi colocada de forma diferente.

Tem uma coisa que essa idéia deixa em aberto, mas parece fácil de solucionar. Dependendo da disposição da room e situação de jogo, pode acontecer de a célula mais segura ficar longe das células com blocos, o que não convence como uma simulação de um jogador real (pode até ser mais eficiente!). Mas aí, podemos dar um valor maior pras células adjacentes aos blocos.
Aliás, em analogia ao A*, podemos dar esse valor "de bloco" pra cada célula logo no início do jogo, o que aceleraria o processamento na hora de calcular o melhor abrigo no momento.

ABRIGO! Essa é a palavra. Esqueçam esconderijo.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : IA procurar abrigo Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

IA procurar abrigo Empty Re: IA procurar abrigo

Mensagem por Kapoty Qui 13 Fev 2014, 11:53

Sei que não queria códigos muito menos uma engine, mas como a solução já foi dada no tópico, eu resolvi criar está engine:

https://dl.dropboxusercontent.com/u/78063995/Saim.gmk

Ela está toda comentada.
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : IA procurar abrigo Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

IA procurar abrigo Empty Re: IA procurar abrigo

Mensagem por felipejoys Qui 13 Fev 2014, 14:37

Pra primeira dúvida... o meio de onde você vê onde há a maior brecha sem inimigos! Não em coordenadas, mas em ângulos. Pegue os ângulos de ataque dos inimigos, calcule o raio a partir de si que une eles (por exemplo, um inimigo em 10 e um em 330 daria 40º), pegue o centro de todos e inverta (seguindo o exemplo, o centro de 10 para 330 seria 350º, basta mover-se na direção oposta, tirando 180º). Se quiser detalhar, pegue a maior brecha entre eles a partir desse ângulo resultante. Assim ele iria para o caminho com menos concentração de inimigos, mas com a maior brecha entre eles também. Não sei, só uma idéia.
felipejoys
felipejoys

Data de inscrição : 29/12/2013
Reputação : 1
Número de Mensagens : 56
Prêmios : IA procurar abrigo Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

IA procurar abrigo Empty Re: IA procurar abrigo

Mensagem por PedroX Dom 16 Fev 2014, 15:43

Interessante seu exemplo, Kapoty. Agora só é preciso melhorar a performance, já que não dá pra por no Step por enquanto. E seria bom 'prever o futuro', conforme você comentou.

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : IA procurar abrigo Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

IA procurar abrigo Empty Re: IA procurar abrigo

Mensagem por Kapoty Sáb 12 Abr 2014, 15:18

Desculpe-me reviver o tópico mas, saim, conseguiu resolver seu problema?
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : IA procurar abrigo Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

IA procurar abrigo Empty Re: IA procurar abrigo

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos