Y como exactamente hiciste esa prueba? porque cuando yo lo pruebo el evento Intersect Boundary también ocurre en el mismo step que es detectado. Lo que dice Penumbra es que hasta que el objeto no se mueva más allá del punto que GM considera "tocando el borde" el evento no ocurrirá, aunque en realidad ya debería haber ocurrido steps atrás.

#16 Mayo 02, 2014, 10:37:39 PM Ultima modificación: Mayo 02, 2014, 10:47:01 PM por vampy09
Bueno hice un objeto.
En el evento Create puse:
hspeed = -1;

En el evento Intersect Boundary
x = xprevious;
y = yprevious;
hspeed = 0;

En el evento Create puse un breackpoint, con la tecla F9.
Corri el "juego" en modo debugger. Inmediatamente el debugger "salta" permitiendome ver varias ventanas. Entre ellas la ventana Source y la ventana Locals.

El debugger entonces me permite correr el juego una linea de código a la vez con la tecla F11.

Entonces atravez de un analisis de la información que las ventanas Source y Locals del debugger, concluyo que las acciones programadas en el evento Intersect Boundary se realizan un step despues.

Pero sinceramente esto es ahogarse en un vaso de agua.
La verdad que para que un ser humano se de cuenta que el objeto se salío un pixel durante un step (osea 0.33 segundos ! si el room_speed es 30) es sumamente improbable.

Por tanto de mi parte:
1)No es bug.
2)Es algo tan minusculo que no afecta en nada.
The next best thing to knowing something,
is knowing where to find it.

¡Pues me alegro de que al fin lo pillarais! ;D
Por cierto, en mi ejemplo supongo que la "mascara" del sprite es el sprite completo. :P
Y aunque es una tontería para juegos avanzados, sí, lo voy a reportar.

Pero no dices a través de que análisis o de que información llegas a esa conclusión,  yo puedo decir que descubrí que las ranas que viven 300 años sacan alas, pero cuando me pregunten como llegue a esa conclusión yo no puedo decir, bueno primero agarre una rana y le hice una prueba de ADN y con algunos análisis e información demostré que es cierto.

Pero bueno, vamos a hacer la prueba como tú la haces, con la adición de algunos elementos de control, primero otro objeto que avanzara en la posición contraria, segundo una variable de control que indicará el momento justo en que el evento se activa, tercero, un contador de steps:



Como vemos en la imagen, los objetos empiezan en la misma posición, moviéndose en direcciones opuestas, 1 pixel a la vez.

Cuando el objeto superior llega al borde de la room aún no se ha activado el evento intersect boundary, porque la máscara de colisión aún no ha salido de la room, no es hasta el próximo step que el movimiento del objeto lo enviara fuera de la room, lo que activa el evento Intersect Boundary, que con el código que tú mismo has propuesto lo enviara a la posición del step anterior y eliminara su velocidad. Como resultado, parecerá que no ha cambiado de posición, pero la variable de control de este objeto se cambiara para indicar que en efecto el evento ocurrió.

Cuando el objeto inferior llega a su borde puede pasar un pixel extra, este él es bug que estamos discutiendo, que según tu no es un bug, aún pasado ese pixel extra en el próximo step el objeto intentará seguir moviéndose, es hasta ese momento que el GM lo considera fuera de la room, y de nuevo tu código se activa, lo envía a la posición anterior y elimina su velocidad.

Por supuesto no planeo que tomes una simple imagen como prueba, por eso acá dejo el proyecto.  Si crees que me equivoco en algo y tienes la prueba de que el evento Intersect Boundary se ejecuta 1 step tarde después de haber ocurrido, o aún más tarde como decias en un post anterior, siéntete libre de demostrarlo, pero haciendo eso, demostrándolo, no solo diciéndomelo.

Me parece que lo que ocurre acá es que no entiendes completamente cómo funciona el evento, al evento no le interesa si el la máscara de colisión del objeto está al lado del borde del room, solo le interesa si la máscara se sale del room, igual que en los eventos colisión no importa si la mascaras de dos objetos están "tocándose", solo importa si una está sobre la otra.

Uff... pared de texto... en fin, si, el bug es insignificante pero nosotros no somos nadie para decir si puede afectar o no a alguien más, después de todo Marth lo notó.

1)Te doy la razón cuando dices que debo demostrarlo y no simplemente escribir que lo he logrado por medio de un analisis etc.

Pero la razón de esta resumida explicación es que estoy apelando a tu experiencia y conocimiento del uso del GM, por tanto creo que no es necesario darte una explicación extremadamente detallada.
Ademas para evitar poner como tu dices: "una pared de texto".

2)La prueba que tu posteas, realiza exactamente lo que yo vi con mi prueba. Ademas es algo con lo yo estoy desde un inicio de acuerdo.

Osea yo estoy de acuerdo contigo en porque y como funciona  este evento.

La unica diferencia es que yo no considero un bug que el objeto se salga un pixel por algunas orillas del room.

Esta opinión simplemente lo doy por la
manera en como mi mente entiende el GM: Steps y Eventos.

Pero si creo que esto es algo que no debería suceder de esta manera, por tanto no le veo ningun problema que se reporte esta situación como un bug.

PD
[user]Killer[/user]: Te agradezco tu respeto y palabras consisas. Espero que no lo tomes como algo personal, por que para mí no lo es.
The next best thing to knowing something,
is knowing where to find it.

Nah tranquilo, acá no hay nada personal, igual ya le dimos muchas vueltas al tema, cada quien tiene su opinión y es obvio que eso no va a cambiar.

Con Marth reportándolo ya quedará en manos del staff de Yoyo ver si es bug o no, en todo caso disculpa si en algún momento soné grosero o terco.

Ya informe a yoyo Games del pequeño bug.
Ahora lo demás ya es cosa de dicha empresa...