domingo, 6 de noviembre de 2011

[Culebrilla] Empezando con el juego: algunas notas sobre el tiempo

En el capítulo anterior hemos visto que hay que controlar el tiempo para que el juego vaya de la misma forma independientemente del hardware, y además los dos métodos habituales para hacerlo. En el capítulo de hoy hablaremos sobre ciertos detalles relativos a esto.

En muchas librerías de ventanas u otros entornos existe la posibilidad de crear un timer (se podría decir que en casi todos). Según la librería y el lenguaje de programación hay varias formas de usarlo pero conceptualmente es el mismo mecanismo: se indica un intervalo de tiempo y la infraestructura de la librería se encarga de llamar periódicamente a una función, método de un objeto, etc.

Efectivamente, esto es lo mismo que el fixed time step que vimos en la entrada anterior pero debemos andar con cuidado al usarlo. Dependiendo del entorno y cómo está implementado es posible que no nos sirva. Puede que la resolución que ofrezca no sea la suficiente, que haya un intervalo mínimo y de esta forma no podamos aprovechar al máximo el hardware, etc. También depende de lo que necesitemos: Para Culebrilla nos serviría más o menos cualquier timer que pudiésemos encontrar pero vamos a hacerlo a mano para aprender cómo sea hace. Un juego más exigente tendría que usar el bucle que hemos estado viendo a lo largo de las últimas entradas.

Relacionado con esto está el consumo de la CPU: nuestro bucle está iterando constantemente, no espera a ningún evento sino que como hemos visto consultamos (polling) lo que necesitamos. Esto hace que se consuma el 100% de tiempo de una CPU, incluso si no calculamos nada o hacemos cálculos muy simples. No es en función de la carga de nuestros cálculos sino del bucle sin bloqueos que tenemos en nuestro juego. Esto se puede suavizar llamando a la función de bloqueo del hilo (sleep(), delay(), etc) con un tiempo muy pequeño o directamente con el valor 0. Esto hará que el SO no esté ejecutando nuestra aplicación casi todo el tiempo, bajando un poco el consumo de CPU.

En la siguiente entrada miraremos un poco la librería SFML como preludio a empezar a programar nuestro primer juego. ¡Hasta pronto!

No hay comentarios:

Publicar un comentario