Loader

Shoutbox

Problema con la resolucion

Publicado por JohnW, Abril 09, 2022, 09:39:22 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Abril 09, 2022, 09:39:22 AM Ultima modificación: Abril 09, 2022, 09:42:07 AM por JohnW
Hola amigos!

Tengo el problema de que mi juego no se ve igual en todas las pantallas... y he leido mucho sobre este tema intentando coger solucion de varios sitios, pero nada parece funcionarme.

Mi juego esta con rooms a 1920x1080 y cuando alguien con una pantalla menor o mayor a esto... se descoloca mi juego moviendome las cosas a otro lugar en vez de adaptarse a la pantalla.

Actualmente solo me pasa con los textos hechos en Draw... los backgrounds de las rooms se adaptan a todo haciendose mas pequeñas o mas grandes.

¿Como puedo solucionar esto para que sea cual sea la pantalla que lo abra... se ejecute todo en su sitio?

una pregunta esta usando sprites como Fonts, ya probe en mi juego con diferentes resoluciones y el texto se escala perfectamente a la surface y el texto no cambia de lugar, creo que ese error pasa cuando no se usa un sprite como font en ese caso tendra que escalar manualmente todo

No uso sprites para los textos... directamente los dibujo con la funcion draw_text... son muchos textos para usar sprites ya que es una aventura grafica.

¿De que manera se hace eso que dices?

Abril 09, 2022, 08:09:07 PM #3 Ultima modificación: Abril 09, 2022, 10:35:32 PM por Jeffrey Faper
Cita de: JohnW en Abril 09, 2022, 07:51:40 PM
¿De que manera se hace eso que dices?

Bueno es muy simple
1.Necesita un sprite de sus caracteres PAC-MAN FONT : https://www.spriters-resource.com/game_boy_advance/pacmancollect/sheet/10949/
puede usar la herramienta create from strip para no estar cortando y pegando caracter por caracter
Asi es como se ve el spr-Font-strip41.png de mi sprFont que mide 8x8 con todos los caracteres que voy usar:

2.Una vez tenga su spriteFont listo con todos los  caracteres que necesita creamos nuestro mapa de caracteres en el objeto controlador de su juego seria algo asi
[gml]
//EVENTO CREATE
//primero creamos el mapa de caracteres,
//tiene que ser el mismo orden que tienen sus caracteres en su spriteFont
fontChar = " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!.-©"; //FONT MAP 1
global.font= font_add_sprite_ext(sprFont,fontChar,0,0);   //GLOBAL FONT SPRITE
draw_set_font(global.font);

//EVENTO DRAW
//Y AHORA YA PODEMOS DIBUJAR LO QUE QUERAMOS. AL SER UN SPRITE PUEDE SEGUIR LA POSICION DE OBJETOS
//Y EN TEORIA DEBRIA ESCALAR JUNTO CON NUESTRA VIEW O SURFACE
draw_text_transformed_colour(F92.x,F92.y-64,"FUCK YOU #SASEL",2,2,0,c_red,c_red,c_orange,c_yellow,1);
[/gml]

Resolucion minima de mi juego en modo ventana :


creo que seria todo, ya lo probe y al inicio me dio errores,  no se por que pero solo  dibujaba el ultimo caracter  © que me habra
querido decir Game Maker Studio skynet a cobrado vida

Gracias pero esta opcion tampoco me sirve... se sigue moviendo todo de sitio al cambiar la resolucion.

Menos mal que solo lo probe con 1 texto antes de liarme a cambiar todo los textos de mi juego...

Lo que no entiendo es porque las opciones de Game Maker, de escalado y tal para windows... no funcionan bien.

Abril 09, 2022, 10:39:08 PM #5 Ultima modificación: Abril 09, 2022, 10:47:36 PM por Jeffrey Faper
podria poner, el codigo con el que re.escala su juego y que resoluciones usa es muy extraño que pase eso por lo general si usted dibuja algo en el evento dibujo tenga por seguro que se debera dibujar en las cordenadas  que usted asigne , independientemente del tamaño de la room la view y tamaño de la ventana es muy raro que las cosas se muevan de lugar otra cosa no estara dibujando por casualidad las cosas en draw_gui

Cita de: Jeffrey Faper en Abril 09, 2022, 10:39:08 PM
podria poner, el codigo con el que re.escala su juego y que resoluciones usa

No uso ningun codigo para escalar mi juego ya que no he encontrado ninguno que me funcione. Lo unico que uso son las opciones que vienen por defecto en Game Maker.
La opcion Star in fullscreen mode, interpolate color between pixels, keep aspect ratio y allow switching to fullscreen.
Tengo esas activadas.
Las rooms las tengo todas a 1920x1080.

Abril 09, 2022, 11:08:25 PM #7 Ultima modificación: Abril 10, 2022, 02:45:35 AM por Jeffrey Faper
Cita de: JohnW en Abril 09, 2022, 10:44:40 PM
Lo unico que uso son las opciones que vienen por defecto en Game Maker.
La opcion Star in fullscreen mode, interpolate color between pixels, keep aspect ratio y allow switching to fullscreen.
Tengo esas activadas.
Las rooms las tengo todas a 1920x1080.
Entonces su problema se da al ejecutar su juego en pantallas con menor resolucion y ademas menciona que no esta configurando una nueva resolucion para que este funcione correctamente en dichas pantallas, osea que esta corriendo el juego con una resolucion del  mismo tamaño de  los room 1920*1080,  me imagino que tampoco esta usando views ni surfaces. a intentado cambiar el tamaño de la surface y ventana aqui le dejo las funciones que necesita pruebe con diferentes resoluciones para ver que pasa
[gml]
/*
EVENTO CREATE
ponga esto en su objControlador, puruebe con diferentes resoluciones
*/

surface_resize(application_surface, 1280 , 720);  //sirve para modificar el tamaño de las surfaces es como un lienzo en blanco
window_set_size(1280,720);  //sirve para cambiar el tamaño de ventana de nuestra aplicacion
display_set_gui_size(1280, 720); //este no se para que sirve, me imagino que es para modificar el area de dibujado del evento draw_gui no se

/*
   EJEMPLO: BORRAME
  Hay mas funciones para controlar todos esos aspectos de la pantalla, esta es la manera en que controlo las resoluciones del  juego de arriba
if(os_type==os_windows){
    wscale=3;    //ESCALAR  LA APLICACION multiplica la resolucion minima x1, x2 o x3
    surfW=320; //ANCHO DE LA SURFACE
    surfH=368; //ALTURA DE LA SURFACE
    width=456; //ANCHO DE LA VENTANA
    height=384;//ALTURA DE LAVENTANA
    vsync=0;
    altvsync=1;
    display_reset(0,vsync);
    display_set_windows_alternate_sync(altvsync);
    application_surface_draw_enable(false);
    draw_enable_alphablend(false);
    if(!window_get_fullscreen()){
        window_set_size(width*wscale,height*wscale); //CAMBIAMOS EL TAMAÑO DE LA VENTANA DE LA APLICACION
        window_set_caption("SoldierBladeDX"); //BANNER DEL JUEGO
        }
    }
    /*
   en el evento draw_gui de mi objeto controlador dibujo la surface del juego
   que es un room de 640*736 en la posicion 72 y 8 de la  ventana de la aplicacion
    no uso views, solo para efectos de zoom, el resto de pantalla queda en negro y ahi es donde dibujo el hud del juego
    para que no le sea complicado le recomiendo que no use mas de 3 resoluciones
    */
    draw_surface_stretched(application_surface, 72 ,8, surfW*wscale, surfH*wscale); //dibujamos la surface de nuestro juego

[/gml]

Esto tampoco me sirve :(
Con esto tendria que especificar muchas resoluciones para evitar problemas en cualquier pantalla... y lo que yo busco es que se adapte a todos los sitios, algo que deberia hacer por defecto con la opcion Scale que trae Gmae maker... pero no lo hace.

Bueno supongo que no hay una solucion generica para todo... Asi uqe pondre en mi juego (Para jugar correctamente usar resolucion XXXXX) y ya esta

Abril 11, 2022, 04:49:42 AM #9 Ultima modificación: Abril 11, 2022, 06:58:37 AM por Jeffrey Faper
Cita de: JohnW en Abril 10, 2022, 05:46:34 PM
Esto tampoco me sirve :(
Con esto tendria que especificar muchas resoluciones para evitar problemas en cualquier pantalla... y lo que yo busco es que se adapte a todos los sitios, algo que deberia hacer por defecto con la opcion Scale que trae Gmae maker... pero no lo hace.

si no planea crear un menu de configuraciones de pantalla, entonces puede usar las funciones
display_get_width(),  display_get_heigth(),  display_get_dpi_x() y display_get_dpi_y() 
pero igualmente tiene que cambiar el tamaño de la surface y ventana al iniciar su juego ya que en Game Maker
usted tiene que adaptar sus juegos a diferentes monitores, Game Maker no lo hace automaticamente


aqui le dejo este tutorial explicacion sobre camaras y resoluciones zoom tal vez le ayude
es para GM2 pero las camaras no han cambiado mucho la verdad,  esta en ingles ya que no logre encontrar la version en español
https://www.yoyogames.com/es/tutorials/cameras-and-views



Cita de: Jeffrey Faper en Abril 11, 2022, 04:49:42 AM
si no planea crear un menu de configuraciones de pantalla, entonces puede usar las funciones
display_get_width(),  display_get_heigth(),  display_get_dpi_x() y display_get_dpi_y() 
pero igualmente tiene que cambiar el tamaño de la surface y ventana al iniciar su juego ya que en Game Maker
usted tiene que adaptar sus juegos a diferentes monitores, Game Maker no lo hace automaticamente


aqui le dejo este tutorial explicacion sobre camaras y resoluciones zoom tal vez le ayude
es para GM2 pero las camaras no han cambiado mucho la verdad,  esta en ingles ya que no logre encontrar la version en español
https://www.yoyogames.com/es/tutorials/cameras-and-views

No si el problema no es cambiar de resolucion... el problema es que al cambiar la resolucion... no se adapta mi juego a ese cambio ya que el juego esta creado en una resolucion alta y al cambiarla a una menor... pues las cosas se mueven de sitio y nada esta igual que antes.

Creo que lo mejor es modificar mi juego cambiando la resolucion a una generica por ejemplo 1280x1024 que casi todo el mundo tiene. Pero aun asi estamos en las mismas... cada vez que alguien ejecute el juego en una resolucion que no sea esa, las cosas del juego se moveran de sitio descolocandose y no entiendo el porque.

Si yo por ejemplo a un texto le digo "draw_text(400, 400, "Hola, " + global.Name + "como estas?");"
No entiendo porque al cambiar a otra resolucion, ese texto me aparece o mas arriba o mas abajo o incluso fuera de la pantalla... ese es el fallo.

Abril 14, 2022, 05:19:59 AM #11 Ultima modificación: Abril 14, 2022, 06:28:30 AM por Jeffrey Faper
si es muy raro lo que le pasa , en mi juego no tengo esos problemas puedo escalar a cualquier resolucion sin problemas, asi que si,  puede ser que su problema se deba a que esta trabajando directamente con resoluciones HD en lugar de una resolucion intermedia y al momento de disminuir su resolucion todo se ve mal, no lo se , aqui le dejo esto que encontre relacionado con problemas al trabajar con resoluciones hd, no se si le sirva
Downscaling issues:
https://forum.yoyogames.com/index.php?threads/downscaling-issues.70073/

surface de mi juego escalada a 1920*1080 en un monitor de 1366*768
draw_surface_stretched(application_surface,-620,0,1920,1080):

Powered by EzPortal