Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: unbleached en Enero 12, 2011, 02:14:10 PM

Título: duda con colision grid y pathfinding
Publicado por: unbleached en Enero 12, 2011, 02:14:10 PM
hola buenas....vereis....estoy empezando a hacer la IA de mis enemigos en mi juego de guerra....hasta ahora he hecho un grid y he puesto que calcule la ruta evitando el objeto bloque....todo funciona pero resulta que el soldado se monta encima del objeto bloque un poco...como puedo hacer que haga la misma ruta pero sin que colisione con "bloque" mil gracias
Título: Re: duda con colision grid y pathfinding
Publicado por: Jiraya en Enero 12, 2011, 02:31:51 PM
intente utilizar la b?squeda de caminos del fabricante del juego.
[gml]
mp_potential_step(x,y,speed,checkall);
[/gml]
Título: Re: duda con colision grid y pathfinding
Publicado por: Zeneke en Enero 12, 2011, 03:30:21 PM
Intenta ayudarnos un poquito. Pon el codigo de tus colisiones y cualquier codigo que este implicado. Quiza sea simplemente un problema de mascaras.
Título: Re: duda con colision grid y pathfinding
Publicado por: Ciberman en Enero 12, 2011, 04:24:59 PM
estas usando una mp_grid no?
puedes probar de alinear bien tus objetos bloque o hacer un grilla m?s chiquita o m?s grande, habr?a que ver como es tu mapa y que c?digos utilizaste...

prueba usar eso para la mp_grid y si no funka muestranos los c?digos y un fragmento de tu mapa...
Título: Re: duda con colision grid y pathfinding
Publicado por: unbleached en Enero 12, 2011, 05:27:35 PM
ok...vereis....estoy usando mp_grid...mis soldados son en realidad son una circunferencia de 30px...con lo cual he creado una grilla de 30px un bloque cuadrado de 30px y los soldados....quizas todo mi problema estaba en fallos de px en la grid.haciendo pruebas me doy cuenta de que si hago la grid de 15 el soldado se monta encima del bloque y si hago ena grid 30 todo va bien pero mi soldado no pasa entre dos bloques qu estan a una separacion de 30...tengo que dejar aberturas y pasillos el doble de hancho para que la ia avance por ahi.Otra cosa que he intentado es dibujar la grid y dibujar el path para ver por donde quiere ir...pero no se porque no consigo que aparezca dibujado.

en el create del enemigo hay esto
[gml]image_angle=direction
grid=mp_grid_create(0,0,900,600,30,30)
path=path_duplicate(pth_enemy)[/gml]
y en el step esto[gml]image_angle=direction
path_end()
mp_grid_add_instances(grid,bloque,true)
mp_grid_path(grid,path,x,y,lider_1a1.x,lider_1a1.y,true)
path_start(path,1,1,true)[/gml]
un saludo y gracias
Título: Re: duda con colision grid y pathfinding
Publicado por: unbleached en Enero 13, 2011, 01:46:25 PM
sigo en el mismo punto...he dibujado el path pero sigue colisionando con el "bloque" alguna idea ....adjunto ejemplo
Título: Re: duda con colision grid y pathfinding
Publicado por: Ciberman en Enero 13, 2011, 04:55:21 PM
create:
[gml]
image_angle=direction
grid=mp_grid_create(0,0,room_width/30,room_height/30,30,30);
path=path_duplicate(pth_enemy)

mp_grid_add_instances(grid,bloque,true)
mp_grid_path(grid,path,x,y,lider_1a1.x,lider_1a1.y,true)
path_set_kind(path,1);

path_start(path,1,0,true)
[/gml]
step:
[gml]
image_angle=direction;
[/gml]

te daras cuenta que los mp_grid se crean por unica vez, consumen mucha memoria por eso usalos con cuidado...
Título: Re: duda con colision grid y pathfinding
Publicado por: unbleached en Enero 13, 2011, 05:06:45 PM
funciona perfecto...mil gracias pero me surge una pregunta ?porque en el create y no en el step?me explico todo esto son pruebas que estoy haciendo para montar la IA pero mi intencion era algo asi:

cuando sea el turno de este soldado y cuando su vida sea mayor que un numero y cuando su municion sea mayor que otro se dirigira mediante el path hasta el soldado sino ira a buscar municin o medicinas...algo asi y mi duda es que si hago esto con cada enemigo (12 en total) solo calculara el path el enemigo que tenga turno no? con lo cual no habra tantos paths al mismo tiempo no? un saludo y mil gracias
Título: Re: duda con colision grid y pathfinding
Publicado por: Ciberman en Enero 13, 2011, 07:22:24 PM
osea, lo que consume memoria es el mp_grid y el proceso de sacar una ruta.. no podes estar ejecutandolo en step...

podes pausar el path si nesecitas para pausar al soldado y reanudarlo cuando quieras, podes tambien hacer que si el soldado_meta se mueve use para seguir la ruta que ya tiene y que la ruta se renueve cada 2 segundos con una alarma...

te explico bien que hace cada funcion asi entendes poque no usarlo en step...
mp_grid_create crea una grid, es como la ds_grid pero va a servir para hacer un path
mp_grid_add_instances a?ade las instancias como celdas prohibidas.
mp_grid_path hace un camino sobre el path indicado, esto es lo que suele gastar m?s memoria, por eso, ESTA funcion No hay que usarla todo el tiempo, solo cuando se sepa que el camino hacia el destino cambi?, osea que la meta se movi?..

si?