Hola, ¿Que tal? Estoy armando un programa en Game Maker 8.1. Y contiene muchos rooms, y en cada room  no hay mas de 2 eventos step y draw. Pero si tuviera que contar todos los Step y Draw, que son los que se ejecutan constantemente, Y creo que son como 50 steps y como 60 draw, pero en cada room hay como 1 o 2 Step, y  de 3 a 4 eventos draw.
Bueno mi duda es, que cuando arranco el programa, ¿se ejecutan todos los eventos Steps y todos los eventos Draws, o solo se ejecutan los que están en el room actual?.
Espero que me hayan entendido, si no se entiende solo díganme y tratare de ser mas especifico.
Saludos y gracias.

#1 Diciembre 16, 2013, 02:27:31 PM Ultima modificación: Diciembre 16, 2013, 02:30:25 PM por Mgbu
No, sólo se ejecutan los eventos de los objetos colocados en la room actual
Además podés poner objetos "Persistent" que una vez que son creados (al entrar en una room en donde están colocados) no se destruyen al cambiar de room

Por ejemplo pongo un obj_musica en la room 2:
En la room 1 no hay música
Paso a la room 2, se crea el objeto y comienza a sonar la música
Paso a la room 3 y la música sigue sonando como si nada hubiera pasado
Paso a la room 4 y la música sigue sonando como si nada hubiera pasado
Etc
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Gracias por sacarme una duda, pero me entro otra duda.
EJ:
Pongo un evento Step en la room 1 que se ejecuta constantemente.
Cuando paso al room 2, el evento Step del room 1 ¿Se seguirá ejecutando? ¿O se desactiva automáticamente?
Saludos!

Cita de: Braxpok en Diciembre 16, 2013, 03:21:57 PM
Pongo un evento Step en la room 1 que se ejecuta constantemente.

No hay manera de poner un evento aislado en una habitación. Lo que pones en la habitación son instancias. Las instancias poseen eventos. El evento STEP se ejecuta el tiempo que la instancia dure "con vida". 

Si cambias de habitación, y NO TUVISTE el cuidado de eliminar instancias que ya no quieres que aparezcan en la habitación actual, esas instancias seguirán existiendo para game maker, aunque no "habiten" en el room. Dicho de otra manera, cambiar de habitación no elimina del "sistema" las instancias usadas en la(s) habitación(es) previa(s), símplemente las deja fuera de cuadro. Por consiguiente, los eventos de las instancias no destruidas se siguen ejecutando o "robando" poder del procesador

Este código elimina instancias que no hayas marcado como persistentes antes de pasar a otra habitación. Se pone en el evento Room End

if(!persistent and !room_persistent) instance_destroy();


No, cuando abandonas una room las instancias en ella no siguen existiendo, a menos que la room sea persistente en cuyo caso su estado se guarda para ser accedido cuando se vuelva a la room, o la instancia sea persistente en cuyo caso, como ya te dijo Mgbu, será movida a la nueva room.

En ningún caso las instancias que queden en la room anterior seguirán ejecutando sus eventos, ni robando poder del procesador en ninguna forma.

Lo que menciono el makero killer es cierto, así que estaba yo en un error  :-[

Sólo las eventos de instancias en la habitación actual cuentan. Lo que entonces ignoro es qué pasa exactamente con esos objetos dejados en el room anterior. ¿No se quedan en momoria? ¿Se destruyen a pesar de no usar instance_destroy() en ellos?

Técnicamente se destruyen, pero no ejecutan evento de destrucción, es más como si simplemente dejaran de existir.

La próxima vez que se cargue el room estará como si fuera la primera vez que se visita, a menos por supuesto que se tomen medidas para hacer cambios en la room antes de regresar a ella.

Gracias a todos, me habeis sacado la Duda, no solo ami, seguro que ha a muchos también.
Saludos!