Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

[INT] [Tutorial] IA Básica de TDS (Pt. 3)

Tutoriais, videoaulas, guias e downloads para te ajudar nos estudos.
Avatar do usuário
Tutoriais & Aulas
Colaborador
Colaborador
Reações: 0
Mensagens: 110

[INT] [Tutorial] IA Básica de TDS (Pt. 3)

Mensagem por Tutoriais & Aulas » Sex Abr 29, 2016 12:54 am

Autor original: Gonçalves
TUTORIAL TDS IA (PT. 3)

Olá. Eu sou o Gonçalves e vim aqui ensinar o pouco que eu sei sobre Inteligência Artificial de jogos Top-down Shooter. Baixe o conteúdo do fim da 2ª Parte aqui:

http://www.mediafire.com/?lcsee7bdw2z2777

Tentarei deixar o mais claro possível para os leitores e estarei aceitando feedback.

SUMÁRIO
  • Atores que pegam pickups
INTRODUÇÃO

Nessa etapa criaremos mais alguns adicionais para uma IA um pouco mais inteligente.

ATORES QUE PEGAM PICKUPS

Primeiramente vamos criar um objeto chamado obj_stimpak. Usei essa sprite: Imagem

Na sua colisão com grupo_pessoas, teremos:

Código: Selecionar todos

with(other)
{
    energia = min(100,energia+40)
}

instance_destroy()
Com isso iremos curar quem pegou o stimpak, definindo sua energia como o menor valor entre 100 (o máximo) ou sua energia atual + 40 (ou seja, o stimpak recupera 40 de energia do "ator"). Espalhe alguns pelo mapa.

Agora vamos à IA. Vamos usar o atr_inimigo. Abaixo da condição if viu_alvo = true, que se encontra no seu Step, adicionaremos seu else, que conterá:

Código: Selecionar todos

var pick_prox;
    pick_prox = instance_nearest(x,y,obj_stimpak)

    if distance_to_object(pick_prox) < percepcao and ! collision_line(x,y,pick_prox.x,pick_prox.y,grupo_objetos,0,0) 
    {
        mp_potential_step(pick_prox.x,pick_prox.y,1.2+(velocidade*0.1),0)
        olhar_para(pick_prox.x,pick_prox.y)
        if patrulhar = true {patrulhando = false}
    }
O que fizemos aí? Lembrando que isso só ocorrerá se viu_alvo for false, ou seja, se não tiver vendo nenhum inimigo.

Ele irá guardar numa variável o pickup mais próximo, se não tiver nenhum objeto entre eles e tiver no seu alcance perceptivo, ele vai atrás do mesmo, desativando a patrulha se caso ele estivesse fazendo (assim como quando vê um alvo).

Se você não entendeu quando disse para colocar no else do viu_alvo = true. Insira no fim do Step essa condição para falso:

Código: Selecionar todos

if viu_alvo = false
{
    var pick_prox;
    pick_prox = instance_nearest(x,y,obj_stimpak)

    if distance_to_object(pick_prox) < percepcao and ! collision_line(x,y,pick_prox.x,pick_prox.y,grupo_objetos,0,0) 
    {
        mp_potential_step(pick_prox.x,pick_prox.y,1.2+(velocidade*0.1),0)
        olhar_para(pick_prox.x,pick_prox.y)
        if patrulhar = true {patrulhando = false}
    }
}
Com isso, o ator já irá atrás do stimpak se possível, voltará a patrulhar também depois de pegá-lo. É bem fácil customizá-lo do jeito que queres, podes adicionar uma condição para que só pegue com estiver com a energia baixa, ou até mesmo criar uma varíavel para ignorar pickups, o que evitaria alguns problemas em algumas partes do seu jogo.

Eu sei que o tutorial está pequeno, mas gostaria de sugestões para adicionar ao mesmo!

A engine final se encontra ASSIM por enquanto, mas conforme adicionar mais coisas ao tutorial irei atualizá-la.

OBRIGADO!

Avatar do usuário
Eduardo Macedo
Programador
Programador
Reações: 0
Mensagens: 31

Re: [Tutorial] IA Básica de TDS (Pt. 3)

Mensagem por Eduardo Macedo » Dom Ago 28, 2016 12:04 pm

Muito bom , seria interessante incluir um ataque furtivo pra poder pegar o inimigo pelas costas.

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante