Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: DarkKRuleR en Enero 08, 2016, 06:14:11 PM

Título: [ Resuelto ] Ocupar toda la pantalla con resolución 1:1 siempre
Publicado por: DarkKRuleR en Enero 08, 2016, 06:14:11 PM
Buenas! Pues estoy usando el 3D en GM Studio, y quiero que SIEMPRE ocupe TODA la pantalla con resolución 1:1: Independientemente del tamaño del monitor, ya sea desde un 1280x720 a un 1920x1024, el juego ocupe TODA la pantalla, sin bordes negros, pero sin estirar la imagen: MANTENIENDO una resolución de gráficos 1:1. Qué variables y opciones tengo que tocar para ello? Lo intenté pero estoy mareado xD

Creo que la idea sería que, en una misma posición y momento, verías mucho más con un monitor grande que con uno pequeño. Quizás más campo de visión, o más espacio para poner el HUD y ver más del escenario 3D, pero que todas las pantallas sean ocupadas al 100% sin perder resolución ni apretar o estirar la imagen.
Título: Re:Ocupar toda la pantalla con resolución 1:1 siempre
Publicado por: kostra en Enero 08, 2016, 06:51:14 PM
Elije, o marcos negros o derormar imagen... no creo que eso que dices se pueda (no se), pero la solución más factible que se me ocurre es que las dimensiones de la view cambien según el monitor (ni idea de cómo) pero claro, no se verán las mismas cosas en un monitor que en otro, el que tenga un buen monitor con mucha resolución vería más trozo de room que uno con resolución baja, me explico?
Título: Re:Ocupar toda la pantalla con resolución 1:1 siempre
Publicado por: DarkKRuleR en Enero 08, 2016, 06:53:36 PM
Eso es lo que quiero, que si tienes un monitor más grande veas más trozo de room, tengas más campo de visión etc, es la única forma de mantener una resolución 1:1 y que cubra toda la pantalla :D Hay que tocar las view_wview, las view_wport y cosas de esas según la variable de lectura display_get_width o window_get_width, pero yo ya estuve tocando hace poco y conseguí estropearlo más, así que espero una respuesta exacta para poder guiarme y quitar lo que tengo mal, a parte para distinguir cuál de las dos lecturas es la buena (o una tercera) y qué hacer con todo ello
Título: Re:Ocupar toda la pantalla con resolución 1:1 siempre
Publicado por: Clamud en Enero 09, 2016, 04:26:01 PM
Con la nueva forma de dibujar de GMS, lo más importante es cambiar el tamaño de la application_surface. Si el juego es en 3D, las dimensiones de la vista y el port no son tan importantes, a menos que tengas muchas escenas en 2D.

El ajuste automático podría ser así:

Usa dos variables para guardar el tamaño inicial de la ventana (funciones window_get_width, _height), en el evento Step revisa el tamaño actual de la ventana, entonces, se deben cambiar también las dimensiones de la vista, el port y la applicaction_surface
[gml]surface_resize( application_surface, w, h );[/gml]
también debes actualizar las variables que almacenan el tamaño de la ventana.

En el evento Draw usa la función d3d_set_projection_ext, para que el argumento aspect sea igual al aspecto de la ventana y la imagen no se deforme.
Título: Re:Ocupar toda la pantalla con resolución 1:1 siempre
Publicado por: DarkKRuleR en Enero 10, 2016, 10:37:39 PM
Gracias!
view_wview = display_get_width();
view_hview = display_get_height();
view_wport = display_get_width();
view_hport = display_get_height();
surface_resize( application_surface, display_get_width(), display_get_height() );


He hecho eso, y poner el aspect en projection_ext. Creo que eso es todo, por ahora va perfecto :D

A al hora de dibujar HUD, tendré que tener en cuenta que el tamaño de la pantalla será variable, y tendré que dibujar no en posiciones absolutas, sino relativas respecto a los bordes, para que siempre funcione. Creo que lo podemos dar por resuelto
Título: Re:[ Resuelto ] Ocupar toda la pantalla con resolución 1:1 siempre
Publicado por: Clamud en Enero 11, 2016, 01:58:45 AM
Supongo que el ajuste de tamaño de la application_surface lo estás realizando en el evento Create, pero recuerda que no se debe hacer en cada Step, ya que podría congelar el juego.
Título: Re:[ Resuelto ] Ocupar toda la pantalla con resolución 1:1 siempre
Publicado por: DarkKRuleR en Enero 11, 2016, 01:05:43 PM
... soy muy despistado, gracias! Sí, lo tenía en step xD también pasaré a create lo de dar valores a view_wview y port. El display_width y height no cambia, no? Es decir, es SIEMPRE el mismo (tamaño de la pantalla) por lo que puedo hacerlo en create? Esque confundo el display_width con el screen_width, estoy usando el primero por ahora... enfocado a PC, no en html ni android
Título: Re:[ Resuelto ] Ocupar toda la pantalla con resolución 1:1 siempre
Publicado por: Clamud en Enero 11, 2016, 06:06:24 PM
La función display_get_widt funcionará sólo para pantalla completa, con la función window_get_width se puede configurar una ventana re-escalable.
Título: Re:[ Resuelto ] Ocupar toda la pantalla con resolución 1:1 siempre
Publicado por: DarkKRuleR en Enero 11, 2016, 11:43:54 PM
Mi juego siempre está en pantalla completa (tengo en step un código para ponerla completa si pasara a modo ventana por alguna razón ajena al programa) así que supongo que todo perfecto. Ya entiendo :)