Hola, mi nombre es Ilya Chernevsky, y trabajo como desarrollador web en Evolution Company y creo la parte frontal de los juegos. Hoy quiero contarles sobre mi experiencia utilizando el elemento canvas en juegos y aplicaciones web, principalmente para mejorar el rendimiento.
Veamos este elemento en uno de los juegos de Evolution, contiene aproximadamente 4,000 elementos DOM, básicamente, estos son elementos SVG con sus propios estilos, atributos, clases, tamaños, posicionamiento, etc. Puedes decir que 4,000 no es tanto, tal vez, pero ¿sabes qué podría ser mejor? Creo que es mejor tener solo un elemento DOM.
En primer lugar, ¿qué es canvas? Y su núcleo, canvas es un área rectangular donde podemos crear gráficos dinámicamente usando JavaScript. Dibujar en canvas proporciona una forma de bajo nivel de mostrar gráficos en el navegador. Las operaciones DOM en el navegador se consideran bastante lentas, por eso, por ejemplo, el equipo de React desarrolló el concepto de virtual DOM para minimizar el manejo de elementos DOM.
Veamos las ventajas y desventajas de canvas. Comencemos con las ventajas. En primer lugar, y creo que lo más importante, es el rendimiento y la velocidad. Solo tenemos un elemento DOM. El segundo es el ahorro de memoria, ya que no es necesario almacenar información sobre un gran número de elementos DOM. Y el control, el desarrollador puede controlar cada píxel en el área de dibujo. Ahora veamos las desventajas existentes de este enfoque. Una de las más obvias son las animaciones. Son más difíciles de implementar. Por supuesto, no podemos usar la propiedad de animación y transición de CSS. En el caso de los elementos DOM, por ejemplo, cuando se mueven, el navegador mismo borra el objeto antiguo y dibuja el nuevo en un lugar nuevo. Y en el caso de Canvas, el desarrollador se ve obligado a dibujar independientemente cada fotograma utilizando la función requestAnimationFrame de la API web del navegador. Y la segunda desventaja es la complejidad. En general, los elementos DOM son más fáciles de manipular que los píxeles y el uso de la API de Canvas es más difícil. En el caso de los elementos DOM, el navegador hace parte del trabajo por nosotros. Y finalmente, las características de trabajar con pantallas, con la pixelación del dispositivo, más de una. Por ejemplo, cuando trabajamos con teléfonos inteligentes, hay que tener en cuenta las dimensiones del Canvas. Y a veces esto puede llevar a artefactos inesperados. Y en general, uno se ve obligado a pensar más en otras características de Canvas que pueden no ser inmediatamente obvias.
Cuando la gente habla de Canvas, generalmente se refiere a la API de Canvas y la interfaz de contexto de renderizado 2D de Canvas. Esta es la forma más simple y de bajo nivel de renderizar en el navegador. Sin embargo, si quieres aprovechar todo el poder de la GPU, debes considerar el uso de WebGL. La API de WebGL se utiliza con el mismo elemento canvas de HTML. pero para el renderizado se utiliza un contexto de dibujo diferente, el contexto de renderizado de WebGL, y también se utiliza una API diferente, la API de WebGL.
Comments