Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Anon en Mayo 24, 2017, 11:35:02 PM

Título: [Solucionado]Problema con la fluidez del juego
Publicado por: Anon en Mayo 24, 2017, 11:35:02 PM
No se muy bien como explicar el problema a si que he hecho un vídeo  :-[

https://www.youtube.com/watch?v=V8uvN5riVpk&feature=youtu.be&ab_channel=fdsfds (https://www.youtube.com/watch?v=V8uvN5riVpk&feature=youtu.be&ab_channel=fdsfds)

Cualquier proyecto que hago se ve así y marea bastante cuando empiezo a añadir texturas, no se porque puede estar pasando y me estoy desesperando.

Gracias por leerme :)
Título: Re:Problema con la fluidez del juego
Publicado por: 3dgeminis en Mayo 25, 2017, 05:21:27 AM
Cual es el problema, como deberia verse ?
Título: Re:Problema con la fluidez del juego
Publicado por: nonoroman en Mayo 25, 2017, 10:44:15 AM
Lo dices, por el background. No??
Título: Re:Problema con la fluidez del juego
Publicado por: Anon en Mayo 25, 2017, 01:23:06 PM
Si, lo digo por el background. Ponedlo en pantalla completa y a 720p para notarlo bien.
Título: Re:Problema con la fluidez del juego
Publicado por: Dublan en Mayo 25, 2017, 06:57:31 PM
Qué fps tienes?

Prueba a cambiar el color a 16bits. Qué tamaño de texturas tienes? Prueba 1024x1024.
Título: Re:Problema con la fluidez del juego
Publicado por: Anon en Mayo 25, 2017, 07:50:24 PM
Cita de: Dublan en Mayo 25, 2017, 06:57:31 PM
Qué fps tienes?

Prueba a cambiar el color a 16bits. Qué tamaño de texturas tienes? Prueba 1024x1024.

Los FPS se mantienen siempre en 30. He probado con varios tamaños de texturas y no hay ningún cambio  ???
Título: Re:Problema con la fluidez del juego
Publicado por: Anon en Mayo 26, 2017, 07:50:13 AM
Esto ocurre cuando le digo al background que siga la view https://www.youtube.com/watch?v=asurszeMFuM&feature=youtu.be&ab_channel=fdsfds (https://www.youtube.com/watch?v=asurszeMFuM&feature=youtu.be&ab_channel=fdsfds)

No es normal, ¿verdad?
¿Alguien me ayuda?
Título: Re:Problema con la fluidez del juego
Publicado por: TheJaj en Mayo 27, 2017, 04:07:47 AM
La verdad es que no se lo que quieres hacer al 100%, pero la idea que rescato. Es que quieres hacer un efecto de paralax.
Todavía no he programado este efecto en mi vida, pero te puedo decir que el error del primer vídeo es que el background es mas chico que la room, por ello se repite varias veces. Y en el segundo es que el background esta siguen de forma activa a la bola roja.

Supongo que para hacer un efecto de paralax medio decente tendrías que tomar un punto medio de una room, por ejemplo una de 1280, su punto medio es 640. Y ya sabiendo esto idear algún sistema que desplaza el background dependiendo en que mitad de la room este el personaje.

Espero esto te de una idea de como hacerlo.

//Esto va en el step del personaje/bola roja y el background es 20 pixeles mas grande que la room, para tener margen de movimiento en este caso. Puede que para un ejemplo real sea necesario mas.
if x > room_width/2
    {background_x = -10}
if x < room_width/2
    {background_x = 10}

Le falta una buena parte de codigo para que el movimiento sea suave, pero creo que sirve para una idea básica.
Título: Re:Problema con la fluidez del juego
Publicado por: Anon en Mayo 27, 2017, 07:00:35 AM
Cita de: TheJaj en Mayo 27, 2017, 04:07:47 AM
La verdad es que no se lo que quieres hacer al 100%, pero la idea que rescato. Es que quieres hacer un efecto de paralax.
Todavía no he programado este efecto en mi vida, pero te puedo decir que el error del primer vídeo es que el background es mas chico que la room, por ello se repite varias veces. Y en el segundo es que el background esta siguen de forma activa a la bola roja.

Supongo que para hacer un efecto de paralax medio decente tendrías que tomar un punto medio de una room, por ejemplo una de 1280, su punto medio es 640. Y ya sabiendo esto idear algún sistema que desplaza el background dependiendo en que mitad de la room este el personaje.

Espero esto te de una idea de como hacerlo.

//Esto va en el step del personaje/bola roja y el background es 20 pixeles mas grande que la room, para tener margen de movimiento en este caso. Puede que para un ejemplo real sea necesario mas.
if x > room_width/2
    {background_x = -10}
if x < room_width/2
    {background_x = 10}

Le falta una buena parte de codigo para que el movimiento sea suave, pero creo que sirve para una idea básica.


Gracias por responder pero creo que no lo has entendido, siento no haberme explicado bien  :-[

Mi problema es con el rendimiento, en el segundo video el codigo que utilizo es este:

background_x[0] = view_xview[0]
background_y[0] = view_yview[0]

Según tengo entendido este código debería hacer que el background se mueva junto a la view pero no es lo que ocurre  ???

En el primer vídeo quería resaltar que los objetos con el sprite cuadrado se ven a saltos(no se que adjetivo ponerle  XD), marea un poco sobretodo en otros proyectos donde tengo mas texturas mas grandes moviéndose a la vez

Espero haberme explicado mejor esta vez.

Tras esto decirte que la idea del efecto paralax me ha llamado poderosamente la atención y me gustaría profundizar mas en el tema :)
Título: Re:Problema con la fluidez del juego
Publicado por: TheJaj en Mayo 27, 2017, 05:14:43 PM
Emmm, la verdad es que no noto los saltos que mencionas. Pero se que en algunos experimentos que he hecho con views he visto que los objetos "saltan" pero se suele solucionar reduciendo la velocidad con la que se mueve la view o el personaje que guié a la view.
Título: Re:Problema con la fluidez del juego
Publicado por: Clamud en Mayo 27, 2017, 07:45:27 PM
Lo que se ve en el primer video es normal, es el efecto tearing, sucede porque los frames se dibujan antes de que se complete el barrido vertical de la pantalla, entonces a veces queda la mitad de un frame y la mitad del siguiente. Se puede disminuir activando la sincronización vertical, pero pueden bajar los fps.
http://docs.yoyogames.com/source/dadiospice/001_advanced%20use/global%20game%20settings/windows%20tab.html (http://docs.yoyogames.com/source/dadiospice/001_advanced%20use/global%20game%20settings/windows%20tab.html)
http://docs.yoyogames.com/source/dadiospice/002_reference/windows%20and%20views/display_reset.html (http://docs.yoyogames.com/source/dadiospice/002_reference/windows%20and%20views/display_reset.html)
En teléfonos no ocurre el efecto tearing.
Una mejor opción es incrementar los fps de las rooms.

El problema del fondo que no sigue a la view correctamente se debe al orden de los eventos. El fondo se coloca en la posición de la view, pero ya se dibujó en la posición anterior. Debes posicionar la view y el fondo antes de que inicie el evento Draw.
[gml]
//Evento End Step
view_xview[0] = obj_player.x - 200;
view_yview[0] = obj_player.y - 100;
background_x[0] = view_xview[0];
background_y[0] = view_yview[0];
[/gml]
Título: Re:Problema con la fluidez del juego
Publicado por: Anon en Mayo 27, 2017, 10:06:29 PM
Cita de: Clamud en Mayo 27, 2017, 07:45:27 PM
Lo que se ve en el primer video es normal, es el efecto tearing, sucede porque los frames se dibujan antes de que se complete el barrido vertical de la pantalla, entonces a veces queda la mitad de un frame y la mitad del siguiente. Se puede disminuir activando la sincronización vertical, pero pueden bajar los fps.
http://docs.yoyogames.com/source/dadiospice/001_advanced%20use/global%20game%20settings/windows%20tab.html (http://docs.yoyogames.com/source/dadiospice/001_advanced%20use/global%20game%20settings/windows%20tab.html)
http://docs.yoyogames.com/source/dadiospice/002_reference/windows%20and%20views/display_reset.html (http://docs.yoyogames.com/source/dadiospice/002_reference/windows%20and%20views/display_reset.html)
En teléfonos no ocurre el efecto tearing.
Una mejor opción es incrementar los fps de las rooms.

El problema del fondo que no sigue a la view correctamente se debe al orden de los eventos. El fondo se coloca en la posición de la view, pero ya se dibujó en la posición anterior. Debes posicionar la view y el fondo antes de que inicie el evento Draw.
[gml]
//Evento End Step
view_xview[0] = obj_player.x - 200;
view_yview[0] = obj_player.y - 100;
background_x[0] = view_xview[0];
background_y[0] = view_yview[0];
[/gml]


Muchísimas gracias, he solucionado ambos problemas gracias a tu comentario :D
Me estaba desesperando, llevo poco tiempo usando GameMaker y estaba muy perdido  :-[

Un saludo y un abrazo para ti compañero  :)