Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: DarkKRuleR en Febrero 17, 2014, 01:17:18 AM

Título: Optimizando en 3D: resolución de pantalla
Publicado por: DarkKRuleR en Febrero 17, 2014, 01:17:18 AM
Buenash! Pues quiero dar al usuario la opción de reducir la resolución de pantalla para optimizar el 3D si su PC va lento. Cabe decir que me compré mi PC nuevo hace poco, todo tiene mucha potencia excepto la tarjeta gráfica. Probé Crysis 2 y Mirror's Edge. El primero no me iba. El segundo iba lento. La resolución de mi pantalla, y por defecto, es 1280x1024. Bajé a 800x600 (o 640x480 mejor) y pude jugar de lujo a un ritmo constante, !y casi sin notar la diferencia!

Cómo puedo dar al usuario esta opción? El juego por defecto es 960x720, y por muy grande que sea tu pantalla no se aumenta más para no perder calidad (bordes negros). Quiero dar la opción de bajar a 640x480 por si el PC del usuario es lento y mi juego en 3D no funciona...

he usado display_set_size pero luego, cuando uso display_mouse_get_x() e y para usar el ratón, no funciona (la esquina inferior derecha de la pantalla corresponde al centro de la visión en el juego), y si pulso F4 para volver a modo ventana el juego se buguea y al volver a pantalla completa la posicion no corresponde... un jaleo. Y no sólo eso, al querer volver con display_set_size(960, 720) tras haber ido a 640x480 NO FUNCIONA y se queda con la resolución baja! (sin haber salido a modo ventana, que provoca otros errores)

ayuda en este tema de las resoluciones para hacer mi juego accesible a PCs más modestos?
Título: Re:Optimizando en 3D: resolución de pantalla
Publicado por: DarkKRuleR en Febrero 28, 2014, 09:23:07 PM
Up! Alguien sabe cómo hacer esto y me ayuda? He intentado optimizar el 3D por TODOS los lados posibles (excepto el tema de la frecuencia del monitor, que no sé cómo tratarlo) pero no logro que funcione bien en mi PC viejo (en el cual sí iba el League of Legends con todo al mínimo), así que, o bien me informo sobre la frecuencia del monitor (me dijeron que influye en que el 3D vaya lento, por mucho que lo optimices), o permito al usuario bajar la resolucion, sacrificando un poco de calidad pero pudiendo jugar
Título: Re:Optimizando en 3D: resolución de pantalla
Publicado por: jorgeelalto en Marzo 01, 2014, 12:52:37 PM
no puedes cargar la resolución desde un .txt para que aquel que quiera lo pueda editar?
Título: Re:Optimizando en 3D: resolución de pantalla
Publicado por: DarkKRuleR en Marzo 01, 2014, 03:29:31 PM
Eso es lo que quiero hacer y NO SÉ hacer, que el usuario pueda cambiar la resolución cuando quiera con pulsar los botones 1 (res. máxima, calidad de iluminación máxima), 2 (res. máxima, ilum. máxima), 3 (res. mínima, ilum. máxima) y 4 (res. mínima, ilum. mínima). Qué instrucciones gml usar y cómo para ello, hice unas pruebas pero no me salió bien
Título: Re:Optimizando en 3D: resolución de pantalla
Publicado por: romon_28 en Marzo 03, 2014, 04:14:39 PM
si no me equivoco la resolución en un juego 3D en game maker depende del tamaño de la room por lo tanto si modificas el tamaño de una room también vas a modificar su resolución. Pero si estas en una room y queres que los cambios se apliquen de forma inmediata vas a tener que resetear la room, el juego o bien hacerlo desde otra room.

Los métodos son:
room_set_width( Room_Id , Tamaño_Ancho );
room_set_height( Room_Id , Tamaño_Alto );

Pero te recomiendo que uses views porque no tener que resetear el nivel para ver los cambios. Una desventaja sería que no poder aplicar los cambios desde otra room al menos que tengas variables globales u objetos persistentes.

Los métodos son:
view_wview[ VIEW ] = Tamaño_Ancho;
view_hview[ VIEW ] = Tamaño_Alto;
Título: Re:Optimizando en 3D: resolución de pantalla
Publicado por: DarkKRuleR en Marzo 04, 2014, 03:03:17 PM
No me funciona lo de la view... a demás, qué tiene que ver? En 3D tengo una proyección, cambiando la room no sé si ayuda. Es más, la view ni siquiera la uso (creo)! Quizás lo del display_set vaya bien, pero no sé usarlo y me salían bugs, como dije :(
Título: Re:Optimizando en 3D: resolución de pantalla
Publicado por: Jucarave en Marzo 04, 2014, 03:24:08 PM
Hola,

Deberías usar la view, esta es la que pone la resolución en la pantalla ya que Game Maker no trae una función 3D como tal para especificar el tamaño del renderizado (solamente para modificar el aspecto del 3D).

Simplemente activa una view y asignale el tamaño que quieres que corra en la view (640x480 o 1024x728 o cualquiera) y el tamaño de la ventana (640x480) de ese modo la ventana te saldrá de ese tamaño y la resolución interna se mantendrá así este en pantalla completa.

ya para la parte del usuario, simplemente sería modificar los valores view_wview[0] y view_hview[0] sin embargo no se que tan bueno sea hacer esto mientras el juego corre en 3D, es mejor cambiarlos antes de que entre a la partida

Saludos
Título: Re:Optimizando en 3D: resolución de pantalla
Publicado por: DarkKRuleR en Marzo 04, 2014, 03:47:54 PM
Gracias. Sí que tengo la view[0] asignada en cada room. Pero ya he hecho un...
[gml]view_wview[0] = 640; view_hview[0] = 480;[/gml]

para bajarla, siendo por defecto 960x720 en todas las rooms (el juego siempre ha ido a 960x720), y nada cambia. También he probado a desactivar la view de la room de inicio, por la segunda por defecto, que es 640x480, y nada cambia, como si las views no afectasen a nada. Como dije, uso d3d_set_projection (o algo así), por lo que veo la view no influye en nada, al fin y al cabo la "view" en 3D depende de la distancia entre el observador y el objetivo asignados en la proyeccion...
Título: Re:Optimizando en 3D: resolución de pantalla
Publicado por: TLT96 en Marzo 05, 2014, 02:09:13 AM
Cita de: DarkKRuleR en Marzo 04, 2014, 03:47:54 PM
Gracias. Sí que tengo la view[0] asignada en cada room. Pero ya he hecho un...
[gml]view_wview[0] = 640; view_hview[0] = 480;[/gml]

para bajarla, siendo por defecto 960x720 en todas las rooms (el juego siempre ha ido a 960x720), y nada cambia. También he probado a desactivar la view de la room de inicio, por la segunda por defecto, que es 640x480, y nada cambia, como si las views no afectasen a nada. Como dije, uso d3d_set_projection (o algo así), por lo que veo la view no influye en nada, al fin y al cabo la "view" en 3D depende de la distancia entre el observador y el objetivo asignados en la proyeccion...

Bueno lei y creo, CREO, no afirmo, que Game Maker 3D no obtiene la resolucion del tamaño del room o.O

DarkKRuleR, Eso es digamosle la camara, Pero si no me equivoco usa la ultima view activa, y de no estarlo utiliza la 0 como default
Yo tengo unos 3 juegos 3D (Con models) y todo va bien ;P lo que note eran los bordes de sierra, que lo acomode cambiando la view.

View in Room
W: 640
H:  480

Port on Screen
W: 9999
H:  9999

No hace falta mencionar que funciona en fullscreen xDD

Que es lo de 9999? es la resolucion, por que la puse? por que toma SI NO ME EQUIVOCO El tamaño maximo de la pantalla, queria hacerlo como tu de modificar la view In-Game, pero no funciona, es como si ignorara completamente los codigos de view xDD, la unica solucion que veo es esta (Sin duda no es nada buena):

-Creas varios room (Cada uno con la resolucion distinta)
-Luego has la seleccion de resolucion
-Dependiendo de cual sea, has que se rediriga al nuevo room....

Espero que alguien de una mejor respuesta o.O
Título: Re:Optimizando en 3D: resolución de pantalla
Publicado por: DarkKRuleR en Marzo 05, 2014, 05:49:47 PM
Gracias TLT96 :D he modificado el view_w/hport (sin hacer nada más, sólo cambiarlos y al instante tiene efecto) y tengo ésto:

(http://dmcplusdata.webcindario.com/foto1Zael.png)
(http://dmcplusdata.webcindario.com/foto2Zael.png)

en la primera resolución máxima, en la segunda baja. En sí pasa lo que quiero en un 50%, pero ahora falta, en el segundo caso, agrandar la imagen para que cubra toda la pantalla igual que en la primera. He probado cosas como:

[hml]view_wport[0] = 640; view_hport[0] = 480;
view_xport = 96; view_yport = 72;
window_set_region_scale(960/640, true);[/gml]

Con eso funciona casi. Cambiando el xport e yport a ciertos valores podría funcionar perfecto en pantalla completa (centrando la imagen en la pantalla), aunque en modo ventana pasan cosas raras, e intuyo que los números que yo coloque en xport e yport no funcionarían bien en pantallas de distinto tamaño a la mía. ¿Alguna ayuda?  ???
Título: Re:Optimizando en 3D: resolución de pantalla
Publicado por: DarkKRuleR en Marzo 05, 2014, 06:30:14 PM
Dobleposteo para anunciar que lo he conseguido de esa forma. Los números me funcionaban igual en el otro pc que usa la tele como monitor, todo perfecto pero... ¡los fps no mejoran! Sigue en 22 fuera de combate y 12 en combate. Aunque no lo he optimizado en cuanto al dibujo, al no mejorar nada me indica que no servirá de nada. Pensé que así, al dibujar menos píxeles, iría más rápido, pero parece que el coste es el de calcular la iluminación, y no el de dibujar, así que no he ganado ninguna mejora... y en un tema anterior ya probé todo lo posible por optimizarlo y no funcionó. Bueno, me faltaba el tema de que la frecuencia del monitor afecte a que el 3D vaya lento por mucho que lo optimices, que nunca entendí. Quitando eso... nada más que decir xD
Título: Re:Optimizando en 3D: resolución de pantalla
Publicado por: TLT96 en Marzo 05, 2014, 08:33:18 PM
Cita de: DarkKRuleR en Marzo 05, 2014, 05:49:47 PM
Gracias TLT96 :D

:) :) :) ;) ;) ;) ;D ;D ;D :D :D :D XD XD XD

Cita de: DarkKRuleR en Marzo 05, 2014, 06:30:14 PM
Dobleposteo para anunciar que lo he conseguido de esa forma. Los números me funcionaban igual en el otro pc que usa la tele como monitor, todo perfecto pero... ¡los fps no mejoran! Sigue en 22 fuera de combate y 12 en combate. Aunque no lo he optimizado en cuanto al dibujo, al no mejorar nada me indica que no servirá de nada. Pensé que así, al dibujar menos píxeles, iría más rápido, pero parece que el coste es el de calcular la iluminación, y no el de dibujar, así que no he ganado ninguna mejora... y en un tema anterior ya probé todo lo posible por optimizarlo y no funcionó. Bueno, me faltaba el tema de que la frecuencia del monitor afecte a que el 3D vaya lento por mucho que lo optimices, que nunca entendí. Quitando eso... nada más que decir xD
Es que yo sabia que esto no hiba a mejorar xDD, lo que mejora el rendimiento en juegos 3D (Incluyendo Game Maker) son:
-Tamaño de Textura
-Numero de cosas mostradas en tu alrededor (View)
Y quizas algunas cositas mas, pero estas son las que mas afectan....

Solo tengo algo que decirte.... Y en serio no queria..... Pasate al Game Maker 8.1.......
Ya sea que muchos no les guste tiene mejor rendimiento en cuanto a juegos 3D, mis proyectos los sigo haciendo en 8 pero si es 3D y veo que el rendimiento esta bajo no me queda otra que pasarlo al 8.1

Aunque primero prueba poner la room_speed a 90 (Si no funciona, opta por utilizar el 8.1)

Siempre coloquen room_speed a 90 en sus juegos!!!, da toques mas realistas :D
Título: Re:Optimizando en 3D: resolución de pantalla
Publicado por: DarkKRuleR en Marzo 05, 2014, 09:18:30 PM
hmm, pero mi juego está hecho en room_speed = 30, si la aumento todo iría muy rápido xD muchas veces he intentado subirla pero me iba mal ._.

también sirve si lo paso a GM Studio Standard, el que era gratis? Ahí el 3D está más optimizado? Intenté pasarlo, aunque había 3 funciones que ya no existían y me chocaba bastante xD
Título: Re:Optimizando en 3D: resolución de pantalla
Publicado por: TLT96 en Marzo 05, 2014, 09:28:29 PM
Cita de: DarkKRuleR en Marzo 05, 2014, 09:18:30 PM
hmm, pero mi juego está hecho en room_speed = 30, si la aumento todo iría muy rápido xD muchas veces he intentado subirla pero me iba mal ._.

también sirve si lo paso a GM Studio Standard, el que era gratis? Ahí el 3D está más optimizado? Intenté pasarlo, aunque había 3 funciones que ya no existían y me chocaba bastante xD

Si yo se que crashearan muchas cosas... Una solucion rapida, seria que te metas en los codigos que funcionen por steps (Cambios de variables)

EJ:
image_speed=0.30
if hp>=50 xDD-=1
if place_free(x,y) x+=3

Y agregues un /3 al final, que hara? dividira las cosas entre 3, que seria:
Room speed=90
Room speed/3 = 30

image_speed=0.30/3
if hp>=50 xDD-=1/3
if place_free(x,y) x+=3/3

Hara que todo se mueva como si estuviera en 30 room speed

No he tocado mucho el Game Maker studio, ya que en mis juegos utilizo: Set unitialized values as 0, algo asi xDD, que le da el valor de 0 a todas las variables al iniciar el juego... El studio perdio esa funcion...

Dire lo mismo... Game Maker 8.1 xDD