Conectar-se

Esqueci minha senha

Últimos assuntos
» [Duvida] O que aprender
Hoje à(s) 02:56 por Thiago Jaqueta

» [DÚVIDA] Colisão de objeto afetar apenas um
Hoje à(s) 02:48 por Thiago Jaqueta

» colisão de queda após outra colisão dando problema
Ter 27 Jun 2017, 20:18 por Willy

» BUILD FAILED: Cannot find BUILD.xml
Seg 26 Jun 2017, 14:50 por ReisBlender

» Nota de esclarecimento - GMBR voltou!
Sex 23 Jun 2017, 20:33 por Willy

» Regras do Fórum
Sex 23 Jun 2017, 19:02 por GMBR

» Retorno da GMBR!!!
Ter 24 Jan 2017, 15:43 por GMBR

» Jogo Dengue HTML
Seg 30 Nov 2015, 16:17 por guga

» Criando IA Simples para inimigos
Qua 25 Nov 2015, 19:22 por DJDAVYD

» Ordenar variavel em ordem decrescente
Sex 28 Ago 2015, 21:09 por Kodained

» Crio Trilha Sonora para Games!
Qui 27 Ago 2015, 13:50 por Isaias Malafaia

» Problema com Colisão
Qui 27 Ago 2015, 12:30 por The_Game

» Quem quer Uma Engine, e de Quê?
Qui 27 Ago 2015, 09:22 por theguitarmester

» [RESOLV]Como adicionar 2 objetos na mesma posição?
Qua 26 Ago 2015, 11:38 por Bhryenno Kelvyn Carlson

» Sistema de porta!!!
Ter 25 Ago 2015, 21:29 por theguitarmester

» Venda de objetos em Inventário - Multiplicado
Seg 24 Ago 2015, 18:33 por AG Hydra

» Atirar na direção certa
Seg 24 Ago 2015, 09:03 por theguitarmester

» Western Duels
Seg 24 Ago 2015, 07:47 por theguitarmester

» Problemas na compilação android
Dom 23 Ago 2015, 23:43 por Zero.

» Dúvida sobre strings, lendo txt
Sab 22 Ago 2015, 20:31 por Pai véi

» Como estabilizar um som
Sab 22 Ago 2015, 19:03 por Isquilo_Roedor

» Janela Modal
Sab 22 Ago 2015, 09:23 por Pai véi

» Sobre instance Creation Code
Sab 22 Ago 2015, 08:39 por Pai véi

» LudumDare #33
Sex 21 Ago 2015, 21:17 por WellingtonBecker

» Como fazer um temporizador
Sex 21 Ago 2015, 19:02 por Isquilo_Roedor

Quem está conectado
18 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 18 Visitantes

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 324 em Ter 05 Out 2010, 13:36

I.A TopDown

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

I.A TopDown

Mensagem por Gonzo em Seg 18 Jun 2012, 12:57

oi gente.. uma vez eu vi uma engine de topdown bem feitinha era tipo assim..
quando vc ia para cima do adversário ele se esquivava , mais ele tambem atacava , e a inteligencia artificial era muito real, é uma pena que eu não consiga mais achar essa engine, se alguem souber fazer essa I.A , agradeço e já dei uma procurada aqui no forum, mais a I.A não é boa, vlw Like a Star @ heaven

Gonzo

Data de inscrição : 29/05/2012
Número de Mensagens : 927
Insígnias de JAM :

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

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: I.A TopDown

Mensagem por saim em Seg 18 Jun 2012, 14:43

Inteligência artificial foi o tema do primeiro desafio. O meu jogo foi feito open-source. Você pode baixá-lo no tópico de resultados do concurso. O jogo em si é meio idiota, mas o princípio do funcionamento da engine é interessante, é uma variação da máquina de estados finitos que, por levar em conta a posição do jogador, é mais honesta do que uma que levasse em conta as entradas de dados.
avatar
saim

Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

Prêmios
   : 1
   : 0
   : 3

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: I.A TopDown

Mensagem por Gonzo em Seg 18 Jun 2012, 14:52

saim

pede pra alguem arrumar o link, pq ta fora do ar, vlw pelo toque Smile

Gonzo

Data de inscrição : 29/05/2012
Número de Mensagens : 927
Insígnias de JAM :

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

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: I.A TopDown

Mensagem por saim em Seg 18 Jun 2012, 15:29

Ish, lascou... Agora que me lembrei, a inscrição naquele concurso era feita colocando os arquivos na pasta do Pedro. Na minha conta do dropbox, mesmo, não coloquei nada...
Olha, eu ainda tenho os objetos aqui. Vou te passar o código da IA, mas não estou conferindo se está tudo comentado ou se existem globais que requerem contextuação. Se precisar de qualquer explicação, estamos aí!
objIA:
object_set_sprite(argument0, argument1);

object_event_add(argument0, ev_create, 0, '
//general variables
initialHealth = 100;
Health = initialHealth;
initialAmmo = 20; //munição inicial
ammo = initialAmmo; //munição
meleDmg = 5; //dano manual (multiplicar por velocidade)
meleRng = 82; // alcance, em pixels, do dano manual
shotDmg = 15; //dano dos tiros
shotTime = 25; //tempo entre os tiros
shotLife = 25; //tempo ede vida dos tiros
shotSpeed = 6; //tempo ede vida dos tiros
dire = 0; //direção
angSpeed = 4; //velocidade angular
Speed = 4; //velocidade linear
atrict = 0.9; //atrito (multiplicador)
maxSpeed = 6; //velocidade máxima
side = choose(0, 1, -1); //1 = direita, -1 = esquerda
alarm[0] = 45; //atualiza o side


//state variables
var i; i = 0;
st_aiming = i; i += 1;
st_shooting = i; i += 1;
st_hitting = i; i += 1;
st_defending = i; i += 1;
st_hitRange = i; i += 1;
st_hitMele = i; i += 1;
state_index = 0;
state_time = 0;

//gameplay variables
enemy = objNinjPl;
aimDir = 0;
aimDist = 0;
')

object_event_add(argument0, ev_alarm, 0, '
side = choose(0, 1, -1); //1 = direita, -1 = esquerda
alarm[0] = 45; //atualiza o side
')

object_event_add(argument0, ev_step, 1, '
//vira pro inimigo
aimDir = point_direction(x, y, enemy.x, enemy.y);
aimDist = point_distance(x, y, enemy.x, enemy.y);
var angDiff;
angDiff = ((((aimDir - image_angle) mod 360) + 540) mod 360) - 180;
image_angle = median(image_angle, image_angle + sign(angDiff) * angSpeed, image_angle + angDiff);

if (!paused){
event_perform(ev_trigger, state_index);
state_time += 1;
}
')

object_event_add(argument0, ev_trigger, 0, '
//st_aiming
if state_time >= 30{
if (aimDist > meleRng * 1.5){
state_index = st_shooting;
state_time = 0;
}
else {
state_index = st_hitting;
state_time = 0;
}
}

var incoming;
incoming = false;
if (instance_exists(objShuriken)){
with(objShuriken){
if (direction == point_direction(x, y, other . x, other . y)){
incoming = true;
}
}
}
if (incoming == true){
state_index = st_defending;
state_time = 0;
}

if (side != 0){
x = median(0, x + lengthdir_x(Speed, image_angle + 90 * side), room_width) ; y = median(0, y + lengthdir_y(Speed, image_angle + 90 * side), room_height);
}
')

object_event_add(argument0, ev_trigger, 1, '
//st_shooting
if (state_time == 1){
if (ammo > 0){
with (instance_create(x + lengthdir_x(51, image_angle - 43.5), y + lengthdir_y(51, image_angle - 43.5), objBala)){
direction = other . image_angle;
image_angle = direction;
Speed = other . shotSpeed;
alarm[0] = other . shotLife;
damage = other . shotDmg;
}
ammo -= 1;
}
else {
state_index = st_hitting;
state_time = 0;
}
}

if (state_time == shotTime){
state_time = 0;
}

if (ammo < initialAmmo / 2 || aimDist > shotLife * shotSpeed){
x = median(0, x + lengthdir_x(Speed, image_angle), room_width); y = median(0, y + lengthdir_y(Speed, image_angle), room_height);
}

if (aimDist <= meleRng * 1.5){
state_index = st_hitting;
state_time = 0;
}

if (side != 0){
x = median(0, x + lengthdir_x(Speed, image_angle + 90 * side), room_width) ; y = median(0, y + lengthdir_y(Speed, image_angle + 90 * side), room_height);
}
')

object_event_add(argument0, ev_trigger, 2, '
//st_hitting
if (aimDist > (sprite_width + 5)){ //seria 2 * (sprite_width / 2)
if (ammo < initialAmmo / 2){
x = median(0, x + lengthdir_x(Speed, image_angle), room_width); y = median(0, y + lengthdir_y(Speed, image_angle), room_height);
}
else {
x = median(0, x - lengthdir_x(Speed, image_angle), room_width); y = median(0, y - lengthdir_y(Speed, image_angle), room_height);
if (point_distance(x, y, enemy.x, enemy.y) > meleRng * 1.5){
state_index = st_shooting;
state_time = 0;
}
}
}
if (aimDist <= meleRng && state_time >= 20){
with (instance_create(x, y, objCacete)){
image_angle = other . image_angle + 90;
damage = other . meleDmg;
creator = other;
}
state_time = 0;
}
')

object_event_add(argument0, ev_trigger, 3, '
//st_defending
var incoming;
incoming = false;
if (instance_exists(objShuriken)){
with(objShuriken){
if (direction == point_direction(x, y, other . x, other . y)){
incoming = true;
}
}
}
if (incoming == false){
state_index = st_aiming;
state_time = 0;
}

if (side != 0){
x = median(0, x + lengthdir_x(Speed, image_angle + 90 * side), room_width) ; y = median(0, y + lengthdir_y(Speed, image_angle + 90 * side), room_height);
}
')

object_event_add(argument0, ev_trigger, 4, '
//st_hitRange
if instance_exists(objCacete){
with(objCacete){
instance_destroy();
}
}
if (state_time == 10){
state_index = st_aiming;
state_time = 0;
}
')

object_event_add(argument0, ev_trigger, 5, '
//st_hitMele
if (state_time == 1 || state_time == 2){
x -= lengthdir_x(Speed * 10, image_angle); y -= lengthdir_y(Speed * 10, image_angle);
}
if (state_time == 15){
state_index = st_aiming;
state_time = 0;
}
')

object_event_add(argument0, ev_draw, 0, '
draw_sprite_ext(sprite_index, image_index, x, y, image_xscale, image_yscale, image_angle, c_white, 1);
draw_sprite_ext(sprGun, 0, x, y, image_xscale, image_yscale, image_angle, c_white, 1);
draw_rectangle_color(10, 10, 10 + 100, 30, $000088, $000044, $000044, $000088, 0);
draw_rectangle_color(10, 10, 10 + 100 * Health / initialHealth, 30, $004400, $008800, $008800, $004400, 0);
var i;
for(i = 0; i < initialAmmo; i +=1){
draw_rectangle_color(10 + 5 * i, 35, 13 + 5 * i, 45, $000000, $000000, $000000, $000000, (ammo <= i))
}

')
avatar
saim

Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

Prêmios
   : 1
   : 0
   : 3

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: I.A TopDown

Mensagem por Gonzo em Seg 18 Jun 2012, 16:15

saim

saim, rss MIM só queria a I.A da cpu, mais vlw

Gonzo

Data de inscrição : 29/05/2012
Número de Mensagens : 927
Insígnias de JAM :

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

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: I.A TopDown

Mensagem por moisesBR em Seg 18 Jun 2012, 17:15

hum sain. acho que eu baixei essa engine.... só lembre o nome que procuro aqui e upo pra ela!

Mina, a propósito, vc viu minh IA? assinatura. mas se o problema é o 4shared dou um jeito

Edit:
Ops! nao vi direito "IA top view!" por isso: strike, mas queria opinar mas vai que eu tenha aqui e nao sei?

No mais estou trabalhando arduamente nisso! Mina, acho que vale a pena vc dar uma olhada. Só pra vcs saber: to tentando fazer a IA como a do Metal gear solid!!!
avatar
moisesBR

Data de inscrição : 24/10/2009
Número de Mensagens : 873
Insígnias de JAM :

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

Prêmios
   :
   :
   :

Ver perfil do usuário http://inprovise.blogspot.com/

Voltar ao Topo Ir em baixo

Re: I.A TopDown

Mensagem por Gonzo em Seg 18 Jun 2012, 17:38

moisesBR não vi sua I.A! vou dar uma procurada pra ver se acho..vlw

Gonzo

Data de inscrição : 29/05/2012
Número de Mensagens : 927
Insígnias de JAM :

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

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: I.A TopDown

Mensagem por saim em Ter 19 Jun 2012, 08:21

Mina do Rock escreveu:só queria a I.A da cpu
Foi o que eu postei. Onde esta escrito "object_event_add", você coloca o código dentro do evento correspondente. É que eu fiz o jogo com arquivos externos, por isso está com essa sintaxe estranha, mas é a mesma coisa.

@moisesBR escreveu:hum sain. acho que eu baixei essa engine.... só lembre o nome que procuro aqui e upo pra ela!
Era o "Tira vs Ninja".

@Mina do Rock: Depois eu fiquei pensando, acho que nada do que postarmos aqui vai te atender completamente, porque só fizemos os jogos pensando em situações específicas. Acho que o mais indicado seria você entender como funciona uma IA e fazer a sua, personalizada. Basicamente, você vai ter que definir exatamente como quer que a personagem reaja a cada situação (todas as situações possíveis devem ser previstas) e traduzir isso em código. Vai ter que escrever muito, mas é mais trabalho braçal do que mental.
avatar
saim

Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

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

Prêmios
   : 1
   : 0
   : 3

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: I.A TopDown

Mensagem por Conteúdo patrocinado


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