Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: agujakp0 en Abril 25, 2017, 04:37:04 AM

Título: Ayuda con un problema de lag (proyecto adjunto)
Publicado por: agujakp0 en Abril 25, 2017, 04:37:04 AM
Me pase los ultimos dias ingeniando manera tras manera para optimizar mi sistema de generacion pero no logro hacer que funcione el todo fluido , ya intente haciendolo con objetos y con tiles pero ninguno funciona :(
Alguien es tan amable de ayudarme con esto , la verdad es que es muy irritable  :'(  :-X
Desde ya muchas gracias a todo aquel que intente aportar.
PD: Si alguien me lo resuelve lo incluire en mis creditos xD
Título: Re:Ayuda con un problema de lag (proyecto adjunto)
Publicado por: agujakp0 en Abril 26, 2017, 08:24:37 PM
O es muy complicado él problema , o a todos les da flojera revisar el proyecto xD
Por si las dudas hay un solo abjeto q deben revisar , es el obj_control  :)
Título: Re:Ayuda con un problema de lag (proyecto adjunto)
Publicado por: 3dgeminis en Abril 27, 2017, 02:16:58 AM
Esta complicado para que mentir(al menos para mi). Por lo que vi, lo que hace es crear objetos random siguiendo ciertas reglas, pero no me quedo muy claro que es lo que queres hacer exactamente. Llega un momento en que empieza a crear el terreno pero se me tranca.
Talves deberias buscar otra forma de hacerlo, es lo que yo hago cuando veo que se me complica el codigo. Seguiste algun tutorial ?
Título: Re:Ayuda con un problema de lag (proyecto adjunto)
Publicado por: agujakp0 en Abril 27, 2017, 02:38:00 AM
Al fin una respuesta xD

No me fije en nigun tutorial , pero segui un consejo que me dieron en otro post que era primero guardar las pociciones de los bloques y los bloques en listas y luego ponerlos con respecto a la pocicion del personaje en vez de desactivar los objetos.
Y a partir de eso lo ise con tiles pero se me trababa igualmente :(
Yo creo que tiene que ver con que cada vez que que se tiene que actualizar el mapa el codigo tiene que recorrer una ds_list del tamaño de la cantidad de bloques que hay en el mapa ya sea creados o no que seria masomenos 27000

Espero que te ayude esto que te dije para guiarte un poco  :)
Título: Re:Ayuda con un problema de lag (proyecto adjunto)
Publicado por: 3dgeminis en Abril 27, 2017, 02:49:36 AM
27000 ! :o creo que por ahi anda el asunto, ademas son 27000 valores 30 steps por segundo. Podrias hacerlo cada ciertos steps con contador o una alarma. O podrias crear los objetos al principio, desactivarlos he ir activandolos cuando los necesites. Es algo asi como un Minecraft lo que queres hacer ?
Título: Re:Ayuda con un problema de lag (proyecto adjunto)
Publicado por: agujakp0 en Abril 27, 2017, 02:57:35 AM
Es que eso ago xD
Cuando el personaje se mueve se destruyen los bloques que están fuera de su vista y se crean los que están adentro  :D
Pero se lageaba un poco cada vez que me muevo (creo yo) porque tiene q recorrer la lista para ver cuáles bloques deberían estar ahi
PD : cundo lo ejecutas no se traba, sino que se están generando y guardando los valores de las listas y tardan un poco hasta llegar al final de la room xD
Título: Re:Ayuda con un problema de lag (proyecto adjunto)
Publicado por: 3dgeminis en Abril 27, 2017, 07:49:11 AM
Sigo sin entender porque los vas creando y destruyendo, acaso cambian cuando salen de la vista ?
Título: Re:Ayuda con un problema de lag (proyecto adjunto)
Publicado por: agujakp0 en Abril 27, 2017, 07:29:22 PM
Es q no estoy seguro si alguna computadora podría soportar 27000 instancias al mismo tiempo   :-[
Título: Re:Ayuda con un problema de lag (proyecto adjunto)
Publicado por: 3dgeminis en Abril 27, 2017, 07:50:34 PM
No serian 27000 instancias al mismo tiempo, se desactivarian al momento de crearse.
En el CREATE EVENT de cada objeto que se crea se pone instance_deactivate_object(nombre del objeto) y ya aparece desactivado.
Despues solo necesitas activarlos, con el objeto jugador talves, cuando esten a una distancia determinada del mismo, con instance_deactivate_region.
De esa forma no tendrias que estar recorriendo una lista de 27000 valores a cada momento si no una sola vez.
Título: Re:Ayuda con un problema de lag (proyecto adjunto)
Publicado por: agujakp0 en Abril 27, 2017, 08:36:37 PM
Esa solución ya la intenté antes y no sirve cuando hay tantas instancias  :-X sigue dando muchísimo lag :(
Título: Re:Ayuda con un problema de lag (proyecto adjunto)
Publicado por: agujakp0 en Abril 28, 2017, 02:54:27 AM
Estoy conciente que es un problema complicado y me va a llevar tiempo solucionar pero de todos modos muchas gracias por tu interés en ayudarme y por intentar aconsejarme  :D
Título: Re:Ayuda con un problema de lag (proyecto adjunto)
Publicado por: wilodxd en Abril 28, 2017, 03:22:43 AM
~~ ocupa ds_grid ... asi te evitas guardar otras variables sobre el bloque  :-\ ya que en ds_list deberas guardar la posicion del bloque , el tipo, etc... en fin suerte lo vere luego, que estos dias he estado un poco ocupado  :'( y casi no tengo tiempo para hacer otras cosas en fin suerte, de momento prueba cambiando a las ds grids
Título: Re:Ayuda con un problema de lag (proyecto adjunto)
Publicado por: 3dgeminis en Abril 28, 2017, 03:38:13 AM
Hice una prueba de crear 30000 instancias, con mas o menos 1500 activas al mismo tiempo y nada de lag, tardo casi 2 segundos en generar todas las intancias pero despues corrio sin problemas.
Para mi que deberias intentar hacerlo de otra forma.
Título: Re:Ayuda con un problema de lag (proyecto adjunto)
Publicado por: agujakp0 en Abril 28, 2017, 05:48:50 AM
Gracias por el dato geminis :D
Y wilodxd me podrias dar un ejemplo de como emplear la ds_grid en mi codigo?
es que ya lo intente y no me salio nada bien , no estoy muy familiarizado con las ds_grid :'(
Título: Re:Ayuda con un problema de lag (proyecto adjunto)
Publicado por: wilodxd en Mayo 06, 2017, 06:42:50 PM
Cita de: agujakp0 en Abril 28, 2017, 05:48:50 AM
Gracias por el dato geminis :D
Y wilodxd me podrias dar un ejemplo de como emplear la ds_grid en mi codigo?
es que ya lo intente y no me salio nada bien , no estoy muy familiarizado con las ds_grid :'(
perdon por la tardanza, he estado ocupado  :-X y luego cuando tuve tiempo se callo la pagina y no encontre el tema...
en fin si sabes como funciona una grid te seria facil entender pero en caso que no lo explico un poco ~~
las grid basicamente son "arrays 2d" esto tambien puedes verlo como una seria de casillas donde tenemos columnas y filas
(http://i.imgur.com/hAMYKZd.jpg)
algo asi ~~ bien, ahora de esta forma podemos rellenarlo como queramos con numeros o letras pero preferible numero ~~
por ejemplo asi
(http://i.imgur.com/bnnefBj.jpg)
entonces de esta forma podemos identificar que 0 es el 'vacio', 2 es el 'pasto' y 1 es la 'tierra'.
bien este es un ejemplo pequeño ahora debes escalarlo

como antes en otro post ya te habia dicho primero debes hacerlo aqui en la grid luego crearlo a partir de aqui
por ejemplo ir verificando en [0,0] que segun la img 2 seria '0'  y seguir revisandolo todo una por una, o en [0,2] que es '2' o basicamente 'pasto' etc etc.
pensando que debes crear una grid por cada chunk podras guardar 'x' e 'y' del bloque y ademas el bloque que es
asi evitando guardar tantos datos en una lista y tener que buscarlo cada vez que necesitemos esto datos.

bien espero que hayas entendido, suerte :P