Noviembre 20, 2015, 06:45:31 PM Ultima modificación: Noviembre 20, 2015, 06:48:47 PM por DarkKRuleR
Mirad esta imagen:



El juego tiene entorno 3D, e inicia en pantalla completa. Pero no sé CUÁNDO esto puede ser falso.

1- Qué puede ocurrir para que la pantalla completa desaparezca? Es decir, debería tener código que constantemente chequee la pantalla (completa o no) para volver a completa si se sale? Puede ocurrir de forma natural? Como al volver al escritorio, cuando aparezca un mensaje del antivirus... no sé. Por ejemplo al hacer un show_message o string_get, la pantalla completa se pierde.

2- Al perderla (en mi caso con string_get, o get_string), la volví a poner completa y apareció el error que véis en la segunda imagen. El personaje 3D está formado por muchos sprites, uno "encima de otro". Todos los píxeles tienen alpha 0 o 1, no intermedios (daba errores), y vemos cómo funciona mal en el segundo caso, tras RE-activar la pantalla completa. Esto a qué se debe? Pasaría siempre? Algún arreglo? Las partes se dibujan en este orden: Cuerpo, Cabeza, Brazos, Piernas. Debería ir bien como en el primer caso. PD: Me he fijado que en el segundo caso dejan de verse los píxeles y se difumina todo, recuerdo este efecto... parece que se hizo de forma manual. y todo se ve mejor, pero sucede eso. Es raro, porque de inicio tengo marcado el "Interpolate pixels"

El tema pantalla completa me tiene mareado xD

http://bugs.yoyogames.com/view.php?id=05880
Eso es un bug actual. Sí, yo pondr-ia que chequee la pantalla completa y sobretodo, no usar show_message ni similares que creen pop-ups. Y bueno... si salta el antivirus que quiere actualizarse, pos mala suerte xD
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

#2 Noviembre 21, 2015, 10:36:42 AM Ultima modificación: Noviembre 21, 2015, 11:07:40 AM por penumbra
Estuve probando a dibujar objetos y sprites con distintas profundidades, empalmados parcialmente. AL restablecer la pantalla completa, nunca percibí ese error como el que se ve en la imagen que posteaste, es decir, siempre los sprites se dibujaban bien, sin "basura" alrededor. Probé tanto con "interpolate" encendida y apagada, y siempre se dibujaron bien.

Ahora, es cierto que las funciones de mensajes terminan el modo pantalla completa y regresan el juego a su tamaño normal. Las funciones asíncronas de diálogo también lo hacen, segun pude probar..
Cita de: DarkKRuleR en Noviembre 20, 2015, 06:45:31 PM
El juego tiene entorno 3D, e inicia en pantalla completa. Pero no sé CUÁNDO esto puede ser falso.
Si te refieres a saber si se está en modo a pantalla completa o no, sí, es posible saberlo, para eso se usa la función window_get_fullscreen()

Es posible hacer que el juego regrese a pantalla completa si por alguna razón éste modo se pierde, pero en el caso de los diálogos de mensajes , si se usa esta estrategia, el cuadro de diálogo se pierde para dar paso a la ventana de juego en pantalla completa. Es como un círculo vicioso (para traer el mensaje de nuevo al frente, se debe desactivar el modo a pantalla completa). En el caso de cuadros de diálogo, esto es un comportamiento poco adecuado, pero en el caso de otras intervenciones, como el antivirus, creo que sí funcionaría para regresar al juego a pantalla completa, aunque ignoro a qué se deba el error de la imagen.

No creo que funcione, pero puedes probar a usar la función
display_reset() para ver si se corrige el fallo de los sprites con basura, aunque le veo pocas probabilidades.

Pregunta por curiosidad: cuando ocurre el fallo y el personaje se ve mal, ¿la application_surface conserva las mismas dimensiones que antes de que ocurriera el fallo?

#3 Noviembre 21, 2015, 01:16:21 PM Ultima modificación: Noviembre 21, 2015, 01:19:07 PM por DarkKRuleR
La idea es dar mi juego-herramienta a amigos, que testeen y puedan introducir y obtener resultados. Logré guardarlos en un fichero, pero viendo que también necesite introducir datos, es probable que necesite hacer get_string para leerlos. Pero no importa, es sólo para el modo testeo, en el juego final no haré get_string ni show_message. Desactivaré la pantalla completa siempre que esté en modo testeo, así que para el juego final no importa

Pero el problema es el mismo. Podría pasar en algún momento aleatorio de la ejecución que, por algún factor incontrolable, lo que fuera, la pantalla completa se desactivase. Que salte el mensaje del antivirus u otro programa, o una llamada de skype, cualquier cosa en esta vida que PUEDA afectarle.

Y, una vez ocurrido... yo debería checar manualmente, en cada step, si la pantalla completa ha sido desactivarla, y entonces activarla de nuevo, para prevenir que fallos inesperados la cancelen. Y ahí viene mi duda: este error. He desactivado manualmente con screen_set_fullscreen( false ) y al volver a true ocurre el error de la imagen, igual que con get_string. Así que el problema está que, si en algún momento la pantalla completa se desactivase por lo que fuera, al volver se vería mal, y eso es lo que debo erradicar de raíz. ¿Alguna idea?

display_reset( 0, false ) no ha funcionado, y la application surface sigue teniendo 1024 width tanto antes como después de cambiar la pantalla completa.

em vez de verificar siempre que cuando se ponga windowed se auto ponga fullscreen, puedes simplemente poner fullscreen una sola vez por cada pop-up que abras

(aunke siempre es mejor y más pro no usar pop-ups, claro... aunque debería aplicarme el ejemplo jajaja)
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Ya ya, los pops ups son sólo para el modo testeo, no para el juego final. Así que...

El problema es el mismo, como escribí antes. Siempre que se ponga en modo ventana, sea como sea (incluso yo manualmente, sin pop ups) en el instante en que está en modo ventana, ya produce ese error visual. Y, al ponerla completa yo, mantiene ese error

prueba pasar tu proyecto a alguien o aqui mismo para testearlo en otro pc... quién sabe...
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Los mensajes emergentes de otras aplicaciones no afectan la ventana de los juegos hechos con GMS, por lo menos nunca me han afectado. En lugar de correr el juego/herramienta en pantalla completa podrías maximizar la ventana o hacer que la ventana sea escalable.

Eso significa que no hay ningún peligro de que la pantalla completa de mi juego sea "cancelada" por cualquier proceso externo? (Bueno, Alt+tab no lo hace, para empezar)

En la versión final no haré show_messages ni tocaré la pantalla completa, me preocupaba perderla por motivos ajenos, pero si no los hay entonces no hay nada de qué preocuparse

Aunque ahora que me fijo, en la segunda imagen se ve todo mejor, más.. "smooth", bordes difuminados, etc, pero es cuando ocurre el bug

no solo show_messages, todos los pop-ups, lei en otro post tuyo que ibas a usar get_string, eso es otro pop-up
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]