Al poner el juego en fullscreen y conservando el radio del aspecto el juego se inicia con la configuración gráfica más óptima para evitar distorsiones y deformaciones en el diseño, al hacer esto quedan sitios vacíos de color negro.
Me gustaría saber si hay alguna forma de cambiar el color negro por una imagen para que parezca que estás como dentro del juego.
Sería cambiar lo negro por una imagen que se repita
(http://d2r5da613aq50s.cloudfront.net/wp-content/uploads/439398.image2.jpg)
(https://image.prntscr.com/image/6HK2JDePQke8tz2O9e6SRw.png)
¿Alguien tiene idea de cómo hacer?
Hay que hacer uso del evento Draw GUI.
Primero, desactiva el dibujo automático de la application surface:
[gml]
///Evento create de algún controlador
application_surface_draw_enable(false);
[/gml]
Y después, calcula el tamaño real de dicha surface para que mantenga su proporción:
[gml]
///Evento Draw GUI
draw_background_tiled(background1, 0, 0);
var surfW = surface_get_width(application_surface);
var surfH = surface_get_height(application_surface);
var ratio = surfW / surfH;
var windW = display_get_gui_width();
var windH = display_get_gui_height();
var ratio2 = windW / windH;
var realW = 0, realH = 0;
if(ratio2 < ratio)
{
realW = windW;
realH = windW / ratio;
}
else if(ratio2 > ratio)
{
realH = windH;
realW = realH * ratio;
}
else
{
realW = windW;
realH = windH;
}
draw_surface_stretched(application_surface, 0, 0,realW, realH);
[/gml]
Lo probé en el mismo ejemplo del GM que mostraste en las imágenes,y me quedó así:
(https://dl.dropbox.com/s/rt6gfq2wjr20i8e/GIF3.gif?dl=0)
Cita de: NiuWeb en Octubre 10, 2017, 03:06:29 PM
Hay que hacer uso del evento Draw GUI.
Primero, desactiva el dibujo automático de la application surface:
[gml]
///Evento create de algún controlador
application_surface_draw_enable(false);
[/gml]
Y después, calcula el tamaño real de dicha surface para que mantenga su proporción:
[gml]
///Evento Draw GUI
draw_background_tiled(background1, 0, 0);
var surfW = surface_get_width(application_surface);
var surfH = surface_get_height(application_surface);
var ratio = surfW / surfH;
var windW = display_get_gui_width();
var windH = display_get_gui_height();
var ratio2 = windW / windH;
var realW = 0, realH = 0;
if(ratio2 < ratio)
{
realW = windW;
realH = windW / ratio;
}
else if(ratio2 > ratio)
{
realH = windH;
realW = realH * ratio;
}
else
{
realW = windW;
realH = windH;
}
draw_surface_stretched(application_surface, 0, 0,realW, realH);
[/gml]
Lo probé en el mismo ejemplo del GM que mostraste en las imágenes,y me quedó así:
(https://dl.dropbox.com/s/rt6gfq2wjr20i8e/GIF3.gif?dl=0)
¡Graciass!
Pero hay un pequeño fallo...
(https://image.prntscr.com/image/RUzqx7qAT1O1imb_maNhrA.png)
Creo que esto lo causa el código
application_surface_draw_enable(false);
:/ ¿Qué podría hacer?
PD: Esto sucede en todos los objetos
(https://image.prntscr.com/image/8l8DkKxWQaCdoSandWh8Ag.png)
mmm... ¿Tal vez sea porque la application surface se redimensiona con cifras decimales? Intenta aproximar a entero su tamaño, a ver si se arregla:
[gml]
draw_surface_stretched(application_surface, 0, 0, round(realW), round(realH));
[/gml]
Cita de: NiuWeb en Octubre 11, 2017, 04:49:48 PM
mmm... ¿Tal vez sea porque la application surface se redimensiona con cifras decimales? Intenta aproximar a entero su tamaño, a ver si se arregla:
[gml]
draw_surface_stretched(application_surface, 0, 0, round(realW), round(realH));
[/gml]
Sigue igual :(
No entiendo bien el error, ¿se dibujan varias copias de los objetos?
Cita de: Clamud en Octubre 13, 2017, 05:52:45 AM
No entiendo bien el error, ¿se dibujan varias copias de los objetos?
Yo solo vi que en todos los objetos alrededor de ellos hay como un borde blanco, pero más allá de eso no lo sé...
Debe ser porque el background que puse como fondo es blanco-azulado
Pasa en los textos y en los objetos, pero en la background no
¡Arreglado!
eso eso, déjalo todo bien ordenadito porque esto interesa, es una pasada, ni se me había ocurrido jeje como molaaaaaa.
PD: Niu... tú que eres muy de crear scripts portables.... :B
Cita de: NiuWeb en Octubre 16, 2017, 10:15:05 PM
Cita de: Missy en Octubre 16, 2017, 10:10:01 PM
¡Arreglado!
¿Cómo lo solucionaste?
Evento Pre-Draw:
///Evento Draw GUI
draw_background_tiled(background1, 0, 0);
var surfW = surface_get_width(application_surface);
var surfH = surface_get_height(application_surface);
var ratio = surfW / surfH;
var windW = display_get_gui_width();
var windH = display_get_gui_height();
var ratio2 = windW / windH;
var realW = 0, realH = 0;
if(ratio2 < ratio)
{
realW = windW;
realH = windW / ratio;
}
else if(ratio2 > ratio)
{
realH = windH;
realW = realH * ratio;
}
Muchas gracias Missy por preguntar algo así, nunca se me había ocurrido y ahora, guardaré este script bajo llave (amoldándolo ocn argumentos, claro :B )