Noticias

¡Ayuda a la Comunidad GM, haz una donación!

* Sponsor

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Problema con la resolucion  (Leído 675 veces)

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

Desconectado JohnW

en: Abril 09, 2022, 09:39:22 am
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?
« Última modificación: Abril 09, 2022, 09:42:07 am por JohnW »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Jeffrey Faper

Respuesta #1 en: Abril 09, 2022, 07:49:38 pm
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

 


Desconectado JohnW

Respuesta #2 en: Abril 09, 2022, 07:51:40 pm
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?

 


Desconectado Jeffrey Faper

Respuesta #3 en: Abril 09, 2022, 08:09:07 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
//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);

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
« Última modificación: Abril 09, 2022, 10:35:32 pm por Jeffrey Faper »

 
Los siguientes usuarios dieron las gracias a este tema: JohnW


Desconectado JohnW

Respuesta #4 en: Abril 09, 2022, 10:29:00 pm
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.

 


Desconectado Jeffrey Faper

Respuesta #5 en: Abril 09, 2022, 10:39:08 pm
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
« Última modificación: Abril 09, 2022, 10:47:36 pm por Jeffrey Faper »

 


Desconectado JohnW

Respuesta #6 en: Abril 09, 2022, 10:44:40 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.

 


Desconectado Jeffrey Faper

Respuesta #7 en: Abril 09, 2022, 11:08:25 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
/*
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

« Última modificación: Abril 10, 2022, 02:45:35 am por Jeffrey Faper »

 


Desconectado JohnW

Respuesta #8 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.

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

 


Desconectado Jeffrey Faper

Respuesta #9 en: Abril 11, 2022, 04:49:42 am
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


« Última modificación: Abril 11, 2022, 06:58:37 am por Jeffrey Faper »

 


Desconectado JohnW

Respuesta #10 en: Abril 13, 2022, 10:37:01 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.

 


Desconectado Jeffrey Faper

Respuesta #11 en: Abril 14, 2022, 05:19:59 am
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):
« Última modificación: Abril 14, 2022, 06:28:30 am por Jeffrey Faper »