Hola,
Me gustaria que mi juego soporte de forma decente dos tipos de resolucion, una pensada para tabletas y otra para un telefono que tenga una resolucion pequeña. Ya lo probe en ambos con lo que vengo haciendo, tengo seteado el room en 683x1024 y en la tableta se ve genial, en cambio en un telefono de 240x320 no se ven bien las cosas (como esperaba), los textos por ejemplo apenas se entienden. Le deje prendida la opcion Full Scale en Scaling para ver como se veia.
Mi pregunta es, tendria que tener dos rooms de lo mismo, una con la resolucion pensada para tableta y otra para el telefono, y si es asi, que codigo tendria que aplicar en GML para que decida que Room le conviene mas segun la resolucion del aparato donde corre el juego?
Gracias!
Yo he creado juegos para celulares, mas no para androids, sin embargo tuve un tiempo el mismo problema, las resoluciones, si las hacia para 480 640 luego no funcionaban bien en las 600 x 1024. se veian en un rincon, asi que decir por hacer lo siguiente: creaba dos versionas una en resolucion standar 240 x 120x y otro en resolucion 600 x 800. ambas standar para varios modelos. y las colocaba de la misma web con indicando para que tipos de celulares se recomendaba cada una.
Yo que tu haria lo mismo para android, crear una resolucion que te resulte standar para smart phone, y otra version con resoluciones mas dirigidas a las tables. Actualmente veo esto en miçuchos web site.
Bueno esa solución de elvis no seria adecuada si queres poner el juego en la Google play! Ademas muchos usuarios no tienen ni idea que resolucion es su celular!
Lo mas conveniente es ajustar la view a la pantalla y también cambiar el tamaño de los sprites dependiendo de la resolución!
Apenas tenga tiempo voy hacer un tutorial de como hacerlo!
Cita de: ocarina en Marzo 31, 2015, 07:04:13 PM
Bueno esa solución de elvis no seria adecuada si queres poner el juego en la Google play! Ademas muchos usuarios no tienen ni idea que resolucion es su celular!
Lo mas conveniente es ajustar la view a la pantalla y también cambiar el tamaño de los sprites dependiendo de la resolución!
Apenas tenga tiempo voy hacer un tutorial de como hacerlo!
Veo que tienes mucha experiencia en la google play, seria bueno que crearas articulos referentes a esto, servirian de gran ayuda a todo el que quiera hacer juegos android.
Elvis ya he creado muchos tutoriales con respecto a Google play y muchas cosas mas!
Podes buscar y veras que es cierto!
Hola,
Si, me imagine que tenia que hacer un room pensado para una pantalla mas pequeña, modificando incluso los sprites para ese room mas pequeño. Mi unica duda es como hacer en Game Maker que se de cuenta de que room es mas conveniente usar, se que tiene que ser con GML, pregunte por si alguien ya habia resuelto ese tema. Ya lo tengo bastante avanzado al juego, y practicamente todo en GML, pero esa parte de la resolucion para resolverlo en GML se me hace demasiado tecnica e incluso me termina siendo un poco aburrida, por eso consultaba.
Gracias!
Hola, estuve mirando el tema y todavia no logre resultados satisfactorios, alguien tendra un mini ejemplo de codigo de como lo resolvio en su juego, no digo que publiquen el codigo fuente de un juego, simplemente a modo de ejemplo la parte de como maneja la resolucion con los views en GML.
Gracias!
Cita de: millansoft en Marzo 31, 2015, 08:29:38 PM
Mi unica duda es como hacer en Game Maker que se de cuenta de que room es mas conveniente usar, se que tiene que ser con GML
Precísamente en estos casos (como en muchos otros) la utilidad del manual se hace patente. Hay una sección donde se tratan las propiedades del display, y las funciones que devuelven
la medida del display del dispositivo.
http://docs.yoyogames.com/source/dadiospice/002_reference/windows%20and%20views/index.html (http://docs.yoyogames.com/source/dadiospice/002_reference/windows%20and%20views/index.html)
Hola, si, lo estuve mirando, pero como involucra varias cuestiones como segun que tableta, telefono, etc, los aspect ratios, quizas excede un poco a la mera creacion de un juego, por eso consultaba, por ahora creo que voy a crear varios rooms para adaptarlo mejor segun la resolucion.
Gracias!
Hola,
Despues de mucho machacar, encontre esta solucion, esta pensada para modo portrait:
escalar = 1;
if (os_type = os_windows)
{pantalla = 5;
room_goto (MenuPrincipal_600x1024);
exit;}
// Busca la mejor resolucion posible
if (os_type != os_windows)
{var device_ancho = display_get_width();
var device_alto = display_get_height();
var aspecto = device_ancho / device_alto;
var prueba;
// Primer Intento
if (device_ancho = 240 && device_alto = 320)
{pantalla = 1;}
if (device_ancho = 320 && device_alto = 480)
{pantalla = 2;}
if (device_ancho = 480 && device_alto = 800)
{pantalla = 3;}
if (device_ancho = 480 && device_alto = 854)
{pantalla = 4;}
if (device_ancho = 600 && device_alto = 1024)
{pantalla = 5;}
if (device_ancho = 640 && device_alto = 960)
{pantalla = 6;}
if (device_ancho = 640 && device_alto = 1136)
{pantalla = 7;}
if (device_ancho = 768 && device_alto = 1024)
{pantalla = 8;}
if (device_ancho = 800 && device_alto = 1280)
{pantalla = 9;}
if (device_ancho = 320 && device_alto = 240)
{pantalla = 1;}
if (device_ancho = 480 && device_alto = 320)
{pantalla = 2;}
if (device_ancho = 800 && device_alto = 480)
{pantalla = 3;}
if (device_ancho = 854 && device_alto = 480)
{pantalla = 4;}
if (device_ancho = 1024 && device_alto = 600)
{pantalla = 5;}
if (device_ancho = 960 && device_alto = 640)
{pantalla = 6;}
if (device_ancho = 1136 && device_alto = 640)
{pantalla = 7;}
if (device_ancho = 1024 && device_alto = 768)
{pantalla = 8;}
if (device_ancho = 1280 && device_alto = 800)
{pantalla = 9;}
if (pantalla = 1)
{room_goto (MenuPrincipal_240x320);
exit;}
if (pantalla = 2)
{room_goto (MenuPrincipal_320x480);
exit;}
if (pantalla = 3)
{room_goto (MenuPrincipal_480x800);
exit;}
if (pantalla = 4)
{room_goto (MenuPrincipal_480x854);
exit;}
if (pantalla = 5)
{room_goto (MenuPrincipal_600x1024);
exit;}
if (pantalla = 6)
{room_goto (MenuPrincipal_640x960);
exit;}
if (pantalla = 7)
{room_goto (MenuPrincipal_640x1136);
exit;}
if (pantalla = 8)
{room_goto (MenuPrincipal_768x1024);
exit;}
if (pantalla = 9)
{room_goto (MenuPrincipal_800x1280);
exit;}
// Segundo Intento
prueba = 480 / 800;
if (aspecto == prueba)
{pantalla = 3;}
prueba = 800 / 480;
if (aspecto == prueba)
{pantalla = 3;}
prueba = 480 / 854;
if (aspecto == prueba)
{pantalla = 4;}
prueba = 854 / 480;
if (aspecto == prueba)
{pantalla = 4;}
prueba = 600 / 1024;
if (aspecto == prueba)
{pantalla = 5;}
prueba = 1024 / 600;
if (aspecto == prueba)
{pantalla = 5;}
prueba = 640 / 1136;
if (aspecto == prueba)
{pantalla = 7;}
prueba = 1136 / 640;
if (aspecto == prueba)
{pantalla = 7;}
prueba = 800 / 1280;
if (aspecto == prueba)
{pantalla = 9;}
prueba = 1280 / 800;
if (aspecto == prueba)
{pantalla = 9;}
if (pantalla = 1)
{room_goto (MenuPrincipal_240x320);
exit;}
if (pantalla = 2)
{room_goto (MenuPrincipal_320x480);
exit;}
if (pantalla = 3)
{room_goto (MenuPrincipal_480x800);
exit;}
if (pantalla = 4)
{room_goto (MenuPrincipal_480x854);
exit;}
if (pantalla = 5)
{room_goto (MenuPrincipal_600x1024);
exit;}
if (pantalla = 6)
{room_goto (MenuPrincipal_640x960);
exit;}
if (pantalla = 7)
{room_goto (MenuPrincipal_640x1136);
exit;}
if (pantalla = 8)
{room_goto (MenuPrincipal_768x1024);
exit;}
if (pantalla = 9)
{room_goto (MenuPrincipal_800x1280);
exit;}
// Tercer Intento
if (ancho = 240)
{pantalla = 1;}
if (ancho = 320)
{pantalla = 2;}
if (ancho = 480)
{pantalla = 3;}
if (ancho = 600)
{pantalla = 5;}
if (ancho = 640)
{pantalla = 6;}
if (ancho = 768)
{pantalla = 8;}
if (ancho = 800)
{pantalla = 9;}
if (pantalla = 1)
{room_goto (MenuPrincipal_240x320);
exit;}
if (pantalla = 2)
{room_goto (MenuPrincipal_320x480);
exit;}
if (pantalla = 3)
{room_goto (MenuPrincipal_480x800);
exit;}
if (pantalla = 4)
{room_goto (MenuPrincipal_480x854);
exit;}
if (pantalla = 5)
{room_goto (MenuPrincipal_600x1024);
exit;}
if (pantalla = 6)
{room_goto (MenuPrincipal_640x960);
exit;}
if (pantalla = 7)
{room_goto (MenuPrincipal_640x1136);
exit;}
if (pantalla = 8)
{room_goto (MenuPrincipal_768x1024);
exit;}
if (pantalla = 9)
{room_goto (MenuPrincipal_800x1280);
exit;}
// Cuarto Intento
if (ancho >= 240 && ancho <= 319)
{pantalla = 1;}
if (ancho >= 320 && ancho <= 479)
{pantalla = 2;}
if (ancho >= 480 && ancho <= 599)
{pantalla = 3;}
if (ancho >= 600 && ancho <= 639)
{pantalla = 5;}
if (ancho >= 640 && ancho <= 767)
{pantalla = 6;}
if (ancho >= 768 && ancho <= 799)
{pantalla = 8;}
if (ancho >= 800)
{pantalla = 9;}
if (pantalla = 1)
{room_goto (MenuPrincipal_240x320);
exit;}
if (pantalla = 2)
{room_goto (MenuPrincipal_320x480);
exit;}
if (pantalla = 3)
{room_goto (MenuPrincipal_480x800);
exit;}
if (pantalla = 4)
{room_goto (MenuPrincipal_480x854);
exit;}
if (pantalla = 5)
{room_goto (MenuPrincipal_600x1024);
exit;}
if (pantalla = 6)
{room_goto (MenuPrincipal_640x960);
exit;}
if (pantalla = 7)
{room_goto (MenuPrincipal_640x1136);
exit;}
if (pantalla = 8)
{room_goto (MenuPrincipal_768x1024);
exit;}
if (pantalla = 9)
{room_goto (MenuPrincipal_800x1280);
exit;}
// No encontro nada, asigna un default
pantalla = 6;
room_goto (MenuPrincipal_640x960);}
Luego al iniciar el room al que fue, ejecuta esto:
if (escalar = 1)
{var device_ancho = display_get_width();
var device_alto = display_get_height();
surface_resize(application_surface, device_ancho, device_alto);
escalar = 0;}
Y luego dentro del juego, ya sabe con la variable pantalla, a que room ir.
Lo molesto es hacer los diferentes rooms (se duplican y varian un poco las cosas) y voy a tener que hacer 3 versiones de los sprites y backgrounds, segun el room aplicar una u otra.
No se si es muy ortodoxo pero lo probe en 3 telefonos y tabletas diferentes y funciona, los aspects ratio existentes los encontre aca y tome esa referencia http://v-play.net/doc/vplay-different-screen-sizes/
Si alguien sabe como mejorarlo seria buenisimo, sino tal vez le sirva a alguien que este con el mismo problema con las resoluciones.
Saludos!