Mostrando entradas con la etiqueta juegos javascript. Mostrar todas las entradas
Mostrando entradas con la etiqueta juegos javascript. Mostrar todas las entradas

domingo, 25 de junio de 2017

Mejorar el rendimiento de juegos HTML5

No olvides suscribirte

   Dependiendo de nuestro juego, el rendimiento puede llegar a ser un dolor de cabeza, y en general para el desarrollo de juegos es algo que casi siempre hay que tener presente, tanto en el video como en esta entrada voy a hablar de 3 técnicas para mejorar el rendimiento.

Pre-renderizar

  Por una razón que cuesta un poco entender, es mas eficiente dibujar en un canvas virtual y luego cargar todo al canvas principal, que directamente dibujar en un solo canvas. Esto es muy sencillo de lograr.
  Primero el canvas virtual lo hacemos así :
 var preRender = document.createElement("canvas");
 var vctx = preRende.getContext("2d");

  Todo el juego va a ser dibujado usando este contexto "virtual", y luego en el canvas "real" hacemos así:
ctx.drawImage(preRender, 0, 0);
  
Donde "ctx" es el contexto del canvas "real"

Extracción de propiedades

  Cuando limpiamos el canvas usando "clearRect" y en alguna otra circunstancia, aveces hacemos cosas como: "canvas.width" si esto se hace dentro de nuestro bucle de juego, en cada iteración se va a extraer la propiedad del objeto a través del DOM lo cual requiere mas trabajo que pasar el número directamente, o crear una variable que almacene el valor una sola vez:
   var anchoJ = canvas.width;
   var altoJ = canvas.height;
Luego en nuestro bucle de juego las usamos así:
  canvas.clearRect(0,0,anchoJ,altoJ);
 En lugar de "extraer" la propiedad en cada iteración 

Limpiar solo las diferencias y no to el canvas

  Para lograr la animación es necesario el uso de "clearRect", pero no siempre es necesario que se limpie todo el canvas, podemos limpiar solamente lo que necesitemos ahorrandonos una infinidad de recursos en el camino. Esto puede variar dependiento de cada juego, puedes ver un ejemplo en mi video, pero en general sería algo así :
  canvas.clearRect(prevX, prevY, ancho, alto);

  Donde las variables "prevX" y "prevY" son las últimas posiciones "X" e "Y" utilizadas, las variables "ancho" y "alto" van a depender también del área que queramos limpiar.  Una forma de tratar esto, como lo hago en mi video es que cada objeto en su función de movimiento, se limpie a si mismo, por lo que estas dos últimas variables sería en ancho y alto del objeto en cuestión.

Descargas

  Aquí puedes descargar el código fuente hecho en el video:

domingo, 9 de abril de 2017

Animaciones para juegos HTML5


Para ver en youtube clic aquí (No olvides suscribirte)


Las Animaciones

   Un juego es prácticamente una animación controlada, así que las mismas son uno de los ejes centrales a la hora de desarrollar juegos en cualquier lenguaje, si ya viste la clase a continuación, una descripción detallada de cada una de las funciones usadas en los ejemplos y al final los enlaces de descarga para los ejemplos desarrollados

Funciones de animación

  • setTimeout() : Posee dos parámetros el primero es la función a llamar y el segundo es el tiempo en mili-segundos que la función va a esperar antes de llamar a la función del primer parámetro
  • setInterval() : Al igual que la anterior posee dos parámetros, el primero la función y el segundo el tiempo, igual que el anterior, la diferencia es que la función se va a estar llamando continuamente, separada por el espacio de tiempo definido en el segundo parámetro que al igual está en mili-segundos
  • requestAnimationFrame() : Simplemente intenta llamar a la función que representa nuestro cuadro de animación, asegurándose primero de que existan los recursos disponibles para ejecutar dicho cuadro, para poder usarla en animaciones hay que hacer llamadas recursivas, mas información en este video: https://www.youtube.com/watch?v=zlclLs_m0mI

Explicando las funciones de dibujo

  • fillRect(x,y,w,h) : Nos dibuja un rectángulo, el primer parámetro (x) representa la coordenada x del mismo,  el segundo (y) la coordenada y, el tercero (w) el ancho y por último el cuarto (w) el alto
  • clearRect(xy,w,h) : Definimos un rectángulo con los mismos parámetros de la función anterior, todo lo que esté en el área de efecto de este rectángulo se borrará
  • fillStyle : No es una función sino una propiedad, aquí definimos el color que llevará el canvas

Descargas de códigos fuente


Enlaces útiles


Enlaces sociales