Entrar
Últimos assuntos
» Preciso de ajudapor 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
» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Qui 18 Abr 2024, 18:28
» 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
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» 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
» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56
» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21
» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39
I.A TopDown
3 participantes
GMBR :: Ensine & Aprenda :: Exemplos :: Game Maker (engines)
Página 1 de 1
I.A TopDown
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
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
Gonzo- Data de inscrição : 29/05/2012
Reputação : 33
Número de Mensagens : 929
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: I.A TopDown
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.
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: I.A TopDown
saim
pede pra alguem arrumar o link, pq ta fora do ar, vlw pelo toque
pede pra alguem arrumar o link, pq ta fora do ar, vlw pelo toque
Gonzo- Data de inscrição : 29/05/2012
Reputação : 33
Número de Mensagens : 929
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: I.A TopDown
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í!
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))
}
')
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: I.A TopDown
saim
saim, rss MIM só queria a I.A da cpu, mais vlw
saim, rss MIM só queria a I.A da cpu, mais vlw
Gonzo- Data de inscrição : 29/05/2012
Reputação : 33
Número de Mensagens : 929
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: I.A TopDown
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:
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!!!
Re: I.A TopDown
moisesBR não vi sua I.A! vou dar uma procurada pra ver se acho..vlw
Gonzo- Data de inscrição : 29/05/2012
Reputação : 33
Número de Mensagens : 929
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: I.A TopDown
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.Mina do Rock escreveu:só queria a I.A da cpu
Era o "Tira vs Ninja".moisesBR escreveu:hum sain. acho que eu baixei essa engine.... só lembre o nome que procuro aqui e upo pra ela!
@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.
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
Tópicos semelhantes
» Colisão em topdown
» Bug no Movimento - TopDown
» [Resolvido]Carreta TopDown
» [pedido] Sprites de trem topdown
» guerra/topdown/estrategia sem nome
» Bug no Movimento - TopDown
» [Resolvido]Carreta TopDown
» [pedido] Sprites de trem topdown
» guerra/topdown/estrategia sem nome
GMBR :: Ensine & Aprenda :: Exemplos :: Game Maker (engines)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|