Es posible cambiar el orden en que crean las instancias de los objetos una vez cargada la room?

Es problema que tengo es el siguiente: tengo un objeto cámara (el típico objeto que se utiliza para que sea seguido por la view), el problema es que como lo agregué casi al final en la room es de los últimos objetos en cargar, lo que hace que cuando quiero entrar a esa room, debido a que por unos instantes no existe ese objeto cámara la view muestra una parte aleatoria del nivel hasta que la camara carga y la view se posiciona en el lugar correcto (suele ser 1 segundo, pero visualmente es molesto).

Se podría solucionar el problema haciendo que el objeto cámara sea el primero que cargue en la room, pero no sé si se puede hacerlo. También podría "a mano" borrar todas las instancias de todas las room y agregarlas en un orden conveniente, pero prácticamente sería como rehacer el juego.

Alguna idea? Es posible que solo se pueda mostrar la room una vez cargados todos los objetos?

Saludos



Sígueme en Twitter!
@Aesir_Games

Tu problema no debería ser causado por el orden de creación de las instancias. Las instancias colocadas en el room, si bien unas antes que otras, se crean todas dentro del mismo step, antes del evento draw. Por lo tanto cuando se dibuja el view en el primer step de ese room ya tienen que existir todas las instancias (por cierto los view no muestran una parte aleatoria del room, muestran la parte que tú le indicas). ¿La view sigue instantáneamente al objeto o tiene una velocidad finita de seguimiento? Si es lo último, para que la view no se tenga que desplazar hasta llegar al objeto a seguir, coloca desde un principio las coordenadas X e Y correctas del view en la pestaña views del room, donde dice view in room, para que la view no necesite moverse al principio.



Cita de: Guacusio en Agosto 06, 2014, 05:52:28 AM
Tu problema no debería ser causado por el orden de creación de las instancias. Las instancias colocadas en el room, si bien unas antes que otras, se crean todas dentro del mismo step, antes del evento draw.
Eso es lo que tenía entendido yo hasta ahora...

CitarPor lo tanto cuando se dibuja el view en el primer step de ese room ya tienen que existir todas las instancias (por cierto los view no muestran una parte aleatoria del room, muestran la parte que tú le indicas).

Eso es lo que debiera suceder, lo que menciono es lo que pasa en la práctica. Si fuese así, la view se mostraría inmediatamente centrada en la posición del objeto camara (la view sigue a este objeto), sin embargo lo que pasa es que por 1 segundo aparece en otro lugar X del room y luego aparece correctamente en el lugar de la cámara.

Citar¿La view sigue instantáneamente al objeto o tiene una velocidad finita de seguimiento? Si es lo último, para que la view no se tenga que desplazar hasta llegar al objeto a seguir, coloca desde un principio las coordenadas X e Y correctas del view en la pestaña views del room, donde dice view in room, para que la view no necesite moverse al principio.

La view sigue instantáneamente al objeto, es lo que se hace en las propiedades del room, en la pestaña views, cuando se selecciona el objeto a seguir en "Object following". Por cierto, las coordenadas en esa pestaña ya son las correctas, sin embargo no son las que se muestran durante ese segundo.

Saludos



Sígueme en Twitter!
@Aesir_Games

Teniendo en cuenta lo que ha comentado Guacusio, sobre que las instancias se crean todas en el mismo ciclo y que no es necesario cambiar su orden de creación, la solución a mi me parece bastante fácil, aunque no estoy seguro si funcionaría porque no la he probado

En el evento CREATE del objeto cámara:
[gml]view_xview[0] = x - offset_horizontal
view_yview[0] = y - offset_vertical[/gml]

Eso forzosamente posicionaría la view en la posición del obj_camara antes de que se ejecutara DRAW, por lo que el primer frame se debería dibujar en la posición correcta y no en una posición alejada del objeto cámara. No tengo manera de saber el valor de offset exacto para tu juego, pero es cuestión de que les des valores adecuados.