Hola comunidad queria pedirles ayuda, resulta que estoy trabajando en un juego de Zombies y es un juego isométrico para android, va todo muy bien hasta que se crean unos 30 enemigos, y comienza el lag... ya optimice todo lo que pude enserio, desde texturas, room todo, todo, de hecho meti la mayoría a alarmas, excepto un código que es el que tiene que estar si de si, en el evento step del ENEMIGO...
action_potentional_step() que mueve hacia el player esquivando las collisiones, al haber 30 objetos así el juego comienza a hacerce lento, sin mencionar que la room mide 14,000 7,000 y hay 1,600 objectos creados...
El juego va muy bien, Ya optimice todo lo que pude, pero este objeto si, de si, gasta bastante solo en ese fragmento
Que me recomiendan hacer porfabor, ocupo su pronta ayuda y muchas gracias
creo yo;
action_potentional_step()=mp_potential_step (xgoal, ygoal, tamaño de paso, checkall)
Nose alguno que ya tenga un problema similar, o algo... solo busco que el enemigo siga al jugador y esquive los objetos...
// referente
Mi proyecto https://www.facebook.com/rnvsz/
https://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/motion%20planning/index.html
Las funciones "potential" son lentas porque realizan muchas operaciones. Puedes usar la función mp_potential_settings para reducir el número de pruebas que se hacen en cada Step. Otra opción puede ser elegir algunos zombies como "líderes"; esos zombies se encargan de encontrar el camino y los demás siguen al lider más cercano.
Muchas gracias, por cierto muy buenas ideas aunque me entere que Android YYC Mejora la velocidad, despues de compilarlo tratare de ajustar el enemigo, gracias mil
Una buena opción es usar las funciones de paths "mp_potential_path" (o mp_grid_path que son más precisas) . Y calcular el path hacia la posicion de tu personaje. Una vez hecho eso, moverlo por el path hasta estar cerca y aplicar mp_linear estando cerca, debes tomar en cuenta que si tu personaje se mueve mucho tienes que recalcular el path.
30 enemigos (zombies) no deberían ralentizar un juego bien optimizado, piensa en los age of empires que mueven muchos más.
Son 1,600 Objetos y llega a subir a 1,700 en el transcurso cuando se crean Enemigos, valas, sangres etc...
Y el room mide 14,000 por 7,000 Entonces corre bien, pero con los 30 enemigos comiensa a dar lag...
Apenas estoy exportando a YYC por que me dijieron que es más veloz.. pero me no me deja... mira abri otro Hilo
http://www.comunidadgm.org/preguntas-y-respuestas/error-al-compilar-android-yyc/
Gracias...
Eso que me mencionas lo mire en el manual, si mejora con el compilador YYC o no, igual vere la forma se mira interesante eso de el seguimiento por medio de Grid y Paht
Cita de: Neto Maker en Junio 29, 2017, 03:56:39 AM
Son 1,600 Objetos y llega a subir a 1,700 en el transcurso cuando se crean Enemigos, valas, sangres etc...
Y el room mide 14,000 por 7,000 Entonces corre bien, pero con los 30 enemigos comiensa a dar lag...
Apenas estoy exportando a YYC por que me dijieron que es más veloz.. pero me no me deja... mira abri otro Hilo
http://www.comunidadgm.org/preguntas-y-respuestas/error-al-compilar-android-yyc/
Gracias...
Eso que me mencionas lo mire en el manual, si mejora con el compilador YYC o no, igual vere la forma se mira interesante eso de el seguimiento por medio de Grid y Paht
Debo suponer que la mayoría de esos objetos son muros. Lo ideal para juegos con mapas muy grandes es usar un arreglo bidimensional, como una cuadricula que indique donde hay un muro y donde no, claro que esto te limitará a solo tener muros de tamaños multiplos de 32, o 16 (un tamaño fijo), pero la complejidad de las colisiones de ser O(n) donde n es el numero de muros, se convierte en O(1) osea solo un chequeo por personaje que colisiona con muros, ¡totalmente independiente del numero de muros!.
En GMS:2 es fácil hacer colisiones con tiles me parece (haciendo lo del arreglo que mencionaba, pero automaticamente con tiles), así que para un juego como el tuyo sería útil. Hay modos de hacer esto en gm:studio, hace años texic y yo discutimos sobre el tema y la verdad que a este punto me doy cuenta que tenia razón en varias cosas (quizá me di cuenta desde el momento pero no lo admití) y sobre todo sus ejemplos eran bastante más legibles, aúnque están en la seccion de descargas que aparentemente ya no funciona, como sea, te dejo el link a la discusion:
http://www.comunidadgm.org/articulos/tips-para-juegos-de-plataformas-(programacion)/ (http://www.comunidadgm.org/articulos/tips-para-juegos-de-plataformas-(programacion)/)
Por mi parte traduje este articulo de mike, que de todos modos es interesante leer:
http://www.comunidadgm.org/articulos/colisiones-con-tiles-(programacion)/msg86361 (http://www.comunidadgm.org/articulos/colisiones-con-tiles-(programacion)/msg86361)
La idea es que cheques otros caminos que te lleven al mismo destino jé. A este punto y sobre todo si tu room es taaan grande, yo haría 2 "mp_grids" (en lugar de mp_potential) para que los zombies te encuntren, una muy poco precisa de 128 x 128 o por allí en donde los zombies más distantes puedan encontrar la ruta, y haría otra más precisa de 32x32 o 16x16 en donde los zombies más cercanos te encuentren ya sin falla.
Como sea esto en definitiva sería cambiar un montón de cosas y quizá no sea lo que planees por el momento. Solo quería mencionar que es posible optimizar a los 30 enemigos.
gracias mil gracias, pondre todo esto en practica y comparare el rendimiento, mil gracias....
oye ya has exportado a android YYC?