[Obligatorio 1] Velocidad del juego

[Obligatorio 1] Velocidad del juego

de Rodrigo Luis Ferreri Martin -
Número de respuestas: 12

Buenas noches, tenía una consulta sobre el obligatorio 1.

En una parte de la letra dice que como requisito obligatorio: "El juego debe poder variar su velocidad manteniendo aproximadamente constante la cantidad de imágenes generadas por segundo. Para esto se debe multiplicar al tiempo transcurrido entre frames por un valor acorde a la velocidad del juego."

Esto nos generó la siguiente duda: ¿qué es exactamente lo que nos están pidiendo? ¿Que se puedan variar los frames per second del juego (mediante alguna tecla por ejemplo) o algo distinto?

Porque si uno presta atención a la frase, la primera parte dice que hay que mantener los frames constantes, pero la segunda parte dice que hay que multiplicar el tiempo entre frames por la velocidad del juego (en cuyo caso la cantidad de frames no sería constante sino que depende de la velocidad).

Espero que alguien pueda aclararnos esta duda, saludos,

Rodrigo

En respuesta a Rodrigo Luis Ferreri Martin

Re: [Obligatorio 1] Velocidad del juego

de Juan Pablo Sierra Ansuas -

Mantener los frames por segundo en realidad casi que no tiene sentido.

La idea creo que sería tener, como en algunos juegos, una configuración de la velocidad. La idea sería mas o menos que, independientemente de la máquina en la que juegues, si vas para adelante siempre avanzas 10 metros en 1 segundo ( ponele ). Se verá más flickeado en una que en otra, pero eso es limitación de hardware.

Yo cuando leí la letra me quedó claro, pero ahora que me hiciste leerla de nuevo veo que está medio raro redactado.

Saludos.

En respuesta a Juan Pablo Sierra Ansuas

Re: [Obligatorio 1] Velocidad del juego

de Rodrigo Luis Ferreri Martin -

Entiendo lo que vos decís, y tiene sentido que sea así. Pero yo pienso en esto: digamos que yo decido actualizar la lógica de mi juego 60 veces cada segundo. En un principio en cualquier máquina la lógica actualizaría igual de rápido (logrando lo que vos decís, de que se mueva 10 metros en un segundo).

Pero si yo tengo una máquina que es demasiado lenta, muy probablemente el tiempo que demore en generar un único frame va a ser tan grande que (asumiendo que la aplicación es single thread, lo cual creo que tiene sentido) nunca va a poder lograr actualizar la lógica 60 veces por segundo, y va a ir más lento.

Entonces pienso en esto, tiene sentido "topear" máquinas demasiado rápidas para que anden todas a la misma velocidad, pero me entra la duda de cuando la máquina es tan lenta que no puede actualizar a la velocidad del juego.

En cualquier caso gracias por responder! Saludos, 

Rodrigo

En respuesta a Juan Pablo Sierra Ansuas

Re: [Obligatorio 1] Velocidad del juego

de Eduardo Fernandez -

Hola,

Lo que dice Juan Pablo está bien, pero es otra cosa distinta. ¿Qué pasa cuando el juego va a ser ejecutado en máquinas distintas?

Si por ejemplo el pájaro a velocidad media se mueve a 1m/s, y las columnas están separadas 5 metros, entonces entre columna y columna el pájaro demora 5 segundos. Esto debe ser así independientemente de qué máquina se esté utilizando.

Si yo tengo una computadora en la que el juego anda a 10fps, entonces entre frame y frame el pájaro se debe mover 10cm, así en un segundo hace 1 metro y demora 5 segundos en ir de una columna  a otra.

Pero si luego ejecuto el juego en una computadora en la que el juego anda a 20fps, entonces entre frame y frame el pájaro debe moverse 5cm, así en un segundo también hace 1 metro y también demora 5 segundos en ir de una columna a otra.

En respuesta a Rodrigo Luis Ferreri Martin

Re: [Obligatorio 1] Velocidad del juego

de Eduardo Fernandez -

Hola Rodrigo,

Lo que dice es que, si en tu máquina se generan 20fps y querés reducir la velocidad del juego/pájaro a la mitad, no pongas un delay en el código para que los fps se reduzcan a 10.

Lo que hay que hacer es que el pájaro se mueva la mitad de distancia entre frames, entonces va a necesitar el doble de frames para recorrer la misma distancia.

En respuesta a Eduardo Fernandez

Re: [Obligatorio 1] Velocidad del juego

de Rodrigo Luis Ferreri Martin -

Creo que finalmente pude entender y ya sé como lograrlo!

Gracias por la ayuda!

Rodrigo

En respuesta a Rodrigo Luis Ferreri Martin

Re: [Obligatorio 1] Velocidad del juego

de Rodrigo Luis Ferreri Martin -

Una última duda:

¿El valor de velocidad que se puede ajustar por la interfaz entonces es la velocidad global del juego? Es decir, sería el 5 m/s que mencionaste y que se puede variar desde 1 m/s hasta 10 m/s por ejemplo?

En respuesta a Rodrigo Luis Ferreri Martin

Re: [Obligatorio 1] Velocidad del juego

de Juan Pablo Sierra Ansuas -

Sí, sería en definitiva la velocidad con la que se mueve el pájaro.

Hace así. Considerá una velocidad normal "razonable" para el juego. Ahora hacé que el pájaro se comporte igual en todas las pc en términos de su velocidad. Olvidate del flick.

Luego, poné en settings un slider o algo para cambiar la velocidad. Ahora hacé que para cada una de esas velocidades se comporte igual en todas las pc ( seguro ya lo resolviste antes).

De cualquier manera agrego, es buena idea poner un delay para topear a 60Hz. No tiene sentido hacer cálculos más allá de esa frecuencia dado que de cualquier forma no es posible mostrarlo en pantalla.

La observación de Eduardo es que si una PC es capaz de entregar más FPS que otra no lo limites, sino que lo aproveches para obtener un movimiento más suave.

Saludos.

En respuesta a Juan Pablo Sierra Ansuas

Re: [Obligatorio 1] Velocidad del juego

de Rodrigo Luis Ferreri Martin -

Genial, muchas gracias! Me dio gracia la explicación porque fue exactamente la forma en la que lo programé (aunque sin saber si era esto lo que teníamos que hacer exactamente)

Saludos!

En respuesta a Rodrigo Luis Ferreri Martin

Re: [Obligatorio 1] Velocidad del juego

de Juan Pablo Sierra Ansuas -

No te sugiero que le pongas en settings:

"Velocidad del pajaro: [1m/s] [2m/s] [5m/s]"

Sino que pongas algo de la forma:

"Velocidad del juego: ..."

Es la velocidad del juego, no la del pájaro. Todo debe moverse más rápidamente ( a no ser que sólo se mueva el pájaro en tu caso ).

En respuesta a Rodrigo Luis Ferreri Martin

Re: [Obligatorio 1] Velocidad del juego

de Eduardo Fernandez -

Rodrigo,

Lo de 5m/s es algo hipotético para comprender la explicación.

Para la interfaz alcanzaría con poner <lento> <medio> <rápido> sin necesidad de referir a m/s ni a nada demasiado realista.