Tengo un proyecto de tipo sandbox, se genera un mundo hecho de bloques en la Room (para resumir, es como terraria XD)
bueno, el problema es que en el mundo hay muchos bloques, por lo tanto, entre mas animales o jugadores hay, mas le cuesta a la PC procesarlo todo y va mas lento, lo que hice para solucionar ésto, es usar éste codigo en una Alarm para que se calcule sólo lo que hay en el View , bueno, un poco fuera del View para que no se note la recarga de bloques a la hora de moverse
instance_deactivate_all(true)
instance_activate_region(view_xview[0]-96,view_yview[0]-96,view_wview[0]+192,view_hview[0]+192,true)
alarm[0] = 20
el problema está en que los animales que se mueven hacia los bordes, en ocaciones se quedan atrapados dentro de los bloques, ésto pasa por que la recarga de los bloques se hace 3 veces por segundo, y en ese lapso de tiempo el objeto se mueve y al no encontrar bloques (por que estan desactivados) sigue moviendose, y cuando recarga los bloques el objeto se queda adentro del bloque
incluso si pusiera el codigo en el evento Step (y sin llamar la alarma) se llegan a quedar un pixel adentro del bloque e igualmente, ya no se pueden mover de ahi, igual creo desactivar todo y activar una region, 60 veces por segundo deve ser incluso mas pesado que cargar todo
Se me ocurrió esto, pero no estoy seguro de que su efectividad: En lugar de usar las funciones activate y deactivate, podrías poner un código en el evento Step de cada objeto que esté revisando si se encuentra dentro de la view. Si se sale de la view, se hace invisible y salta los eventos más pesados, de lo contrario ejecuta todo.
Cita de: Clamud en Mayo 13, 2017, 02:58:29 AM
Se me ocurrió esto, pero no estoy seguro de que su efectividad: En lugar de usar las funciones activate y deactivate, podrías poner un código en el evento Step de cada objeto que esté revisando si se encuentra dentro de la view. Si se sale de la view, se hace invisible y salta los eventos más pesados, de lo contrario ejecuta todo.
Ya lo había intentado así, es lo mismo, cuando se da cuenta que está fuera del view ya es demasiado tarde, y a la siguiente recarga de bloques en la view, se queda atrapado de todas formas :-X
Y si hago que regrese a la última posición que tenía antes de estar fuera del view, lo que obtengo es que si el jugador se mueve para un lado, se lleva consigo en la orilla de la pantalla a los Animales :-\