[SDL] control del framerate

Tratamos sobre el manejo de APIs frecuentemente utilizadas en el desarrollo de videojuegos, como SDL, pygame o SFML.

[SDL] control del framerate

Notapor baigos » Lun Oct 04, 2010 1:46 pm

Mire usted sr don patron, enquisiera saber cual método conviene usar para controlar bien bien el framerate.

El que ando usando es el que usa la mayoría, de tener dos funciones que controlan el timer para el inicio (que se ejecuta al inicio del game loop) y otra que devuelve la resta del tiempo actual menos el inicial del loop (currenttime).
Y despues se ejecuta al final del gameloop un while o un do while que espera que un contador que almacena el currentime tenga cierta cantidad de milisegundos.
La condición que uso es que llegue a 17 ms (el redondeo de hacer regla de 3 simple, si 60 cuadros los hago en 1000 ms, 1 cuadro lo dibujaré en 1000/60 = (aprox) 16,66).

Lo que no se si esto es lo mejor. Otra solución era usar la librería SDL_framerate que trae el SDL_gfx, pero no se que tal funciona.
El sitio de videojuegos del nordeste argentino:
www.arcadenea.com.ar
baigos
 
Mensajes: 27
Registrado: Dom Oct 03, 2010 5:51 am

Re: [SDL] control del framerate

Notapor hugoruscitti » Lun Oct 04, 2010 3:26 pm

Hay varias formas, pero en principio sería útil que utilices
aquella que mejor se adapte a tu juego.

Aquí hay un artículo que analiza varias formas de implementar
el manejo de tiempo, lástima que está solamente en
inglés:

http://gafferongames.com/game-physics/f ... -timestep/

Saludos.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: [SDL] control del framerate

Notapor baigos » Lun Oct 04, 2010 6:07 pm

gracias che, y sdl_framerate alguien usó?

y despues vi que SGE -un framework que funciona sobre SDL- tiene una función de delay más precisa:
Uint32 sge_Delay(Uint32 ticks)

http://www.digitalfanatics.org/cal/sge/docs/misc.html

es cuestión de seguir probando cosas, capaz mezclo todo y veo si puedo viajar en el tiempo a 88 millas por hora, pero necesito una conexion de 1 gigobit, cosa que no tengo porque basicamente soy pobre. DOOCC, Marrtiiii,DOOOCC!!
El sitio de videojuegos del nordeste argentino:
www.arcadenea.com.ar
baigos
 
Mensajes: 27
Registrado: Dom Oct 03, 2010 5:51 am

Re: [SDL] control del framerate

Notapor carlostex » Mar Oct 05, 2010 2:44 am

baigos escribió:es cuestión de seguir probando cosas, capaz mezclo todo y veo si puedo viajar en el tiempo a 88 millas por hora, pero necesito una conexion de 1 gigobit, cosa que no tengo porque basicamente soy pobre. DOOCC, Marrtiiii,DOOOCC!!


jaja gracioso.

Bueno no se si te hallas fijado que tu juego consume demaciados recursos, eso no es normal pues es un juego en 2D.
y lo que te consume muchos recursos es ese while que se esta ejecutando hasta que pase el tiempo minimo.
para la computadora no es bueno, pues un while que no hace algo es una perdida de procesador, lo que puedes hacer es poner un SDL_Delay, con el tiempo que falta para que se cumpla el tiempo que tu quieres, eso hace que el procesador deje de atender tu programa lo cual es bueno, de esa forma veras una reduccion brutal en el consumo del procesador para tu juego.
Haora que metodo usar ese es el detalle, y el que tu dices es lo que yo uso, si le pongo 60 ago una operacion para ver cuanto debe durar un frame para que 60 pasen en un segundo, y me ha funcionado muy bien.
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico


Volver a Sobre las bibliotecas multimedia

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron