Página 1 de 1

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

Enviado: Sex Abr 29, 2016 12:54 am
por Tutoriais & Aulas
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!

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

Enviado: Dom Ago 28, 2016 12:04 pm
por Eduardo Macedo
Muito bom , seria interessante incluir um ataque furtivo pra poder pegar o inimigo pelas costas.