Noticias

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

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: Multiples resoluciones de pantallas en android  (Leído 651 veces)

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

Desconectado sneagredmo

  • Visitante
  • *
  • Puntos: 21
  • Mensajes: 8
    • Ver Perfil
en: Julio 12, 2015, 04:03:06 am
Alguien que me de bases para poder adaptar mi juego a varias resoluciones de pantallas en android, recibo consejos y si alguien tiene por hay un ejemplo que me colabore, muchas gracias de antemano

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado romon_28

Respuesta #1 en: Julio 19, 2015, 06:04:31 am
game maker te da 2 opciones para la resolución para juegos en Android.
La 1º (por defecto) si el juego no abarca el tamaño de la pantalla crea unos bordes negros para rellenar.
La 2º opción es hacer que el juego se escale hasta alcanzar a cubrir toda la pantalla lo que podría deformar mucho el juego.

Con la 2º opción podes jugar un poco más y explorar otra alternativa que es la que normalmente uso para mis juegos.

La idea es simple.. en TODAS las room tenes que usar view.
Haces tu juego "normalmente" pero teniendo en cuenta que objetos que muestren datos (vidas, puntos, etc.) y/o botones estén alineados con respecto a la view. Por ejemplo:


X = view_xview[0] + ( view_wview[0] / 2 ); //Relativo a la view
Y = view_yview[0] + 16; //Relativo a la view

draw_sprite(sprite_boton,0, X, Y);
draw_text( X, Y, "OK" );


Lo que va a hacer la view es lo mismo que la 1º opción que te da game maker pero ahora en vez de ponerte los bordes negros va a mostrar más o menos dependiendo de la resolución.
Siempre tiene que haber un tamaño fijo que va a ser a lo horizontal o lo vertical. Por ejemplo tu juego es un de categoría "jumping" entonces los bordes horizontales estarán fijos y tendrás más o menos visión del lado vertical. Opuesto a eso sería un juego "runner".
Siempre existe un limite de que tan chico lo queremos mostrar.. si pasa ese limite, lo que se hacer yo es escalar el juego.

Si no entendiste nada de lo que dije acá te paso el código que tenes que poner en un objeto para controlar la view dependiendo el tipo de juego:

Iniciar las variables
Evento Create
///Evento Create
W = noone;
H = noone;
S =  320; //Tamaño minimo aceptable


Juego escalable horizontal, fijo vertical:

Evento Step
///Evento Step - Adaptando view
if (W != window_get_width ())
|| (H != window_get_height())
&& ((window_get_width()!=0) && (window_get_height()!=0))
{
   W = window_get_width ();
   H = window_get_height();
   view_wview[0] = max( window_get_width()*view_hview[0]/window_get_height(),S);
   view_xview[0] = (view_wview[0]-S)/-2;
}


Juego escalable vertical, fijo horizontal:
///Evento Step - Adaptando view
if (W != window_get_width ())
|| (H != window_get_height())
&& ((window_get_width()!=0) && (window_get_height()!=0))
{
   W = window_get_width ();
   H = window_get_height();
   view_hview[0] = max( window_get_hidth()*view_vview[0]/window_get_veight(),S);
   view_yview[0] = (view_wview[0]-S)/-2;
}


También lo podes testear desde windows tildando la opción que dice "Allow the player to resize the game windows" dentro de las propiedades del juego.

La verdad al código que te pasé no lo probé pero creo que tendría que andar.

Lo recomendable es que uses gráficos lisos por si tenes que escalarlos.

Una vez que te acostumbra a programar teniendo en cuenta que la view pueda modificarse después solo te vas a dar cuenta de como colocar lo objetos desde un principio para no reprogramar las ubicaciones.

cualquier duda pregunta de nuevo  :)


-+- ROMON -+-