Mejora el rendimiento de tus juegos utilizando Canvas

Rate this content
Bookmark

En esta charla, profundizaremos en el enorme potencial del elemento Canvas de HTML5 como herramienta para el desarrollo de juegos. Comenzando con una visión general de la API de Canvas y sus capacidades gráficas, analizaremos los beneficios para renderizar gráficos 2D en juegos web. Los participantes obtendrán información sobre técnicas de optimización, técnicas avanzadas de dibujo y animación, y estrategias para aprovechar al máximo las capacidades de Canvas y crear experiencias de juego fluidas y de alto rendimiento. Llena de ejemplos de la vida real, esta charla es imprescindible para profesionales que buscan llevar sus juegos web a nuevos niveles de rendimiento.

FAQ

El elemento canvas es un área rectangular que permite crear gráficos dinámicamente usando JavaScript. Se utiliza principalmente para dibujar gráficos de bajo nivel directamente en el navegador, lo que puede mejorar significativamente el rendimiento en aplicaciones y juegos web.

Las ventajas de usar canvas incluyen mejor rendimiento y velocidad al tener solo un elemento DOM, ahorro de memoria al no necesitar almacenar información sobre muchos elementos DOM, y mayor control sobre los gráficos al poder manipular cada píxel en el área de dibujo.

Las desventajas de usar canvas para animaciones incluyen una mayor dificultad de implementación, ya que no se pueden usar propiedades de animación y transición de CSS. El desarrollador debe redibujar cada fotograma manualmente, lo que puede ser más complejo comparado con el manejo automático de elementos DOM por parte del navegador.

La API de Canvas puede usar renderizado de CPU o GPU según la lógica del navegador, mientras que la API de WebGL utiliza únicamente GPU y ofrece aceleración por hardware, lo que generalmente resulta en un rendimiento más rápido. WebGL es más complejo de usar y suele requerir bibliotecas externas.

Al hacer zoom en un gráfico de canvas, la calidad de la imagen puede empeorar debido a que es una imagen de mapa de bits. El texto y otros gráficos pueden verse borrosos, y para mejorar la calidad es necesario volver a renderizar los gráficos a una resolución más alta.

Al trabajar con canvas en dispositivos móviles, es crucial considerar las dimensiones del canvas y la pixelación del dispositivo, ya que esto puede llevar a artefactos visuales inesperados y requerir ajustes específicos para asegurar una correcta visualización en diferentes tipos de pantallas.

Ilia Chernetskii
Ilia Chernetskii
8 min
28 Sep, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla analiza el uso del elemento canvas en juegos y aplicaciones web para mejorar el rendimiento. Compara la API de Canvas y la API de WebGL, resaltando las ventajas y desventajas de cada una. La API de Canvas permite tanto el renderizado de CPU como el de GPU, mientras que la API de WebGL solo utiliza GPU y aceleración de hardware. El uso del elemento canvas puede mejorar significativamente el rendimiento, pero conlleva una mayor complejidad y costos de desarrollo.

1. Introducción al elemento Canvas

Short description:

Hola, mi nombre es Ilya Chernevsky y trabajo como desarrollador web en Evolution Company. Hoy quiero contarles sobre mi experiencia utilizando el elemento canvas en juegos y aplicaciones web para mejorar el rendimiento. Veamos las ventajas y desventajas de canvas. Las ventajas incluyen rendimiento y velocidad, ahorro de memoria y control sobre cada píxel. Las desventajas incluyen dificultad para implementar animaciones, complejidad en la manipulación de píxeles y consideraciones para la pixelación del dispositivo. Cuando la gente habla de Canvas, generalmente se refiere a la API de Canvas y la interfaz de contexto de renderizado 2D de Canvas. Sin embargo, si quieres aprovechar todo el poder de la GPU, debes considerar el uso de WebGL.

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.

2. Comparación de la API de Canvas y la API de WebGL

Short description:

La API de Canvas y la API de WebGL son dos formas de utilizar el elemento canvas. La API de Canvas puede utilizar renderizado de CPU o GPU, mientras que la API de WebGL utiliza solo GPU y aceleración de hardware. La complejidad de utilizar estas tecnologías difiere, siendo la API de Canvas menos difícil de usar. Sin embargo, WebGL es más desafiante y a menudo requiere bibliotecas de terceros. La imagen en Canvas es una imagen de mapa de bits, lo que puede resultar en una disminución de la calidad de la imagen al hacer zoom. En conclusión, utilizar Canvas en aplicaciones puede mejorar significativamente el rendimiento, pero es importante considerar el aumento de la complejidad y el costo de desarrollo.

Entonces, con un elemento canvas de HTML, podemos utilizar dos API diferentes, la API de Canvas y la API de WebGL. Comparemos estas dos formas. La API de Canvas puede utilizar renderizado de CPU o GPU. El navegador, por sí mismo, decide esto según su lógica interna. Sin embargo, según sus algoritmos internos, el navegador decide utilizar la CPU. En este caso, no se utilizará la aceleración por hardware de la tarjeta gráfica.

Sin embargo, no es obligatorio que el uso de la aceleración por hardware conduzca necesariamente a un aumento del rendimiento, a menudo lo hará pero no siempre. La API de WebGL utiliza solo GPU y también aceleración de hardware si la tarjeta gráfica lo tiene, lo cual casi siempre es así. Esto casi siempre es más rápido porque la GPU está optimizada para gráficos y esto libera recursos de la CPU para ejecutar el resto de la aplicación.

También es importante mencionar que la complejidad de utilizar ambas de estas tecnologías es diferente. Mientras que la API de Canvas es menos difícil de usar y se puede utilizar sin bibliotecas externas, por ejemplo, WebGL es mucho más difícil de usar y tiene un umbral de entrada mucho más alto. Se utiliza con mayor frecuencia con bibliotecas de terceros, como Babylon.js, por ejemplo, o 3.js. A diferencia de los elementos HTML y SVG, la imagen en Canvas es una imagen de mapa de bits. Por lo tanto, por ejemplo, cuando hacemos zoom en el elemento Canvas, veremos que la calidad de la imagen empeora. Además, el texto escrito en Canvas se verá borroso al hacer zoom, y para mejorar la calidad, nos veremos obligados a volver a renderizar.

En conclusión, quiero decir que Canvas es un elemento moderno de alto rendimiento de bajo nivel. Utilizarlo en tus aplicaciones puede mejorar significativamente el rendimiento. Sin embargo, es importante entender que la complejidad y el costo de desarrollo también aumentarán. Esto es especialmente cierto cuando tu aplicación tiene animaciones. Por lo tanto, es importante evaluar todos estos factores y tomar la decisión correcta. Gracias por su atención. ♪♪

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Optimización de juegos HTML5: 10 años de aprendizaje
JS GameDev Summit 2022JS GameDev Summit 2022
33 min
Optimización de juegos HTML5: 10 años de aprendizaje
Top Content
El motor de juegos de código abierto PlayCanvas está construido específicamente para el navegador, incorporando 10 años de aprendizaje sobre optimización. En esta charla, descubrirás la salsa secreta que permite a PlayCanvas generar juegos con tiempos de carga increíblemente rápidos y tasas de fotogramas sólidas como una roca.
Construyendo Experimentos Divertidos con WebXR & Babylon.js
JS GameDev Summit 2022JS GameDev Summit 2022
33 min
Construyendo Experimentos Divertidos con WebXR & Babylon.js
Top Content
Durante esta sesión, veremos un par de demostraciones de lo que puedes hacer usando WebXR, con Babylon.js. Desde experimentos de audio en VR, hasta juegos casuales en VR en una máquina de arcade hasta un uso más serio para crear nuevas formas de colaboración usando AR o VR, deberías tener una comprensión bastante buena de lo que puedes hacer hoy.
Consulta también el artículo para ver el contenido completo, incluyendo ejemplos de código: artículo. 
Creando juegos increíbles con LittleJS
JS GameDev Summit 2022JS GameDev Summit 2022
34 min
Creando juegos increíbles con LittleJS
LittleJS es un motor de juegos súper ligero que es fácil de usar y extremadamente rápido. El desarrollador hablará sobre por qué lo creó, qué hace y cómo puedes usarlo para crear tus propios juegos. La charla incluirá una demostración de cómo construir un pequeño juego desde cero con LittleJS.
Cómo no construir un videojuego
React Summit 2023React Summit 2023
32 min
Cómo no construir un videojuego
En esta charla profundizaremos en el arte de crear algo significativo y gratificante. A través de la mirada de mi propio viaje de redescubrir mi pasión por la programación y construir un videojuego desde cero con JavaScript y React, exploraremos los compromisos entre soluciones fáciles y rendimiento rápido. Obtendrás información valiosa sobre prototipado rápido, infraestructura de pruebas y una variedad de trucos de CSS que se pueden aplicar tanto al desarrollo de juegos como a tu trabajo diario.
¡Mejora el rendimiento de tus juegos WebGL Unity!
JS GameDev Summit 2023JS GameDev Summit 2023
7 min
¡Mejora el rendimiento de tus juegos WebGL Unity!
Unity, cuando se implementa en la web, enfrenta tres desafíos críticos: el tamaño de la compilación, el uso de memoria y el rendimiento general. Esta charla profundiza en técnicas avanzadas de optimización para ayudarte a abordar cada uno de estos problemas. Los asistentes obtendrán información sobre:
- Estrategias efectivas para optimizar texturas, audio y modelos.- Un análisis detallado de nuestra experimentación con ASTC en Unity, arrojando luz sobre los resultados inesperados a pesar de las afirmaciones de Unity.- Una guía completa de la herramienta de perfilado de memoria de Unity y sus implicaciones.- Una exploración de configuraciones de Unity menos conocidas que siguen siendo subutilizadas por muchos desarrolladores.
Además, presentaremos nuestra herramienta propietaria diseñada específicamente para la optimización de Unity. También mostraremos el panel de control para desarrolladores de CrazyGames, nuestra plataforma que permite a los desarrolladores monitorear y mejorar el rendimiento de sus juegos web de manera fluida.
Únete a nosotros para equiparte con las últimas estrategias y herramientas para elevar tus proyectos de juegos web de Unity.

Workshops on related topic

Crea un Juego Con PlayCanvas en 2 Horas
JSNation 2023JSNation 2023
116 min
Crea un Juego Con PlayCanvas en 2 Horas
Top Content
Featured WorkshopFree
Steven Yau
Steven Yau
En esta masterclass, construiremos un juego utilizando el motor WebGL de PlayCanvas desde el principio hasta el final. Desde el desarrollo hasta la publicación, cubriremos las características más cruciales como la escritura de scripts, la creación de UI y mucho más.
Tabla de contenido:- Introducción- Introducción a PlayCanvas- Lo que vamos a construir- Agregando un modelo de personaje y animación- Haciendo que el personaje se mueva con scripts- 'Falsa' carrera- Agregando obstáculos- Detectando colisiones- Agregando un contador de puntuación- Fin del juego y reinicio- ¡Resumen!- Preguntas
Nivel de la masterclassSe recomienda familiaridad con los motores de juegos y los aspectos del desarrollo de juegos, pero no es obligatorio.
PlayCanvas de principio a fin: la versión rápida
JS GameDev Summit 2022JS GameDev Summit 2022
121 min
PlayCanvas de principio a fin: la versión rápida
Top Content
WorkshopFree
João Ruschel
João Ruschel
En esta masterclass, construiremos un juego completo utilizando el motor PlayCanvas mientras aprendemos las mejores prácticas para la gestión de proyectos. Desde el desarrollo hasta la publicación, cubriremos las características más cruciales como la gestión de activos, scripting, audio, depuración, y mucho más.
Introducción a WebXR con Babylon.js
JS GameDev Summit 2022JS GameDev Summit 2022
86 min
Introducción a WebXR con Babylon.js
Workshop
Gustavo Cordido
Gustavo Cordido
En este masterclass, te presentaremos los conceptos básicos de la construcción de experiencias de Realidad Mixta con WebXR y Babylon.js.
Aprenderás lo siguiente:- Cómo agregar objetos de malla 3D y botones a una escena- Cómo utilizar texturas procedurales- Cómo agregar acciones a objetos- Cómo aprovechar la experiencia predeterminada de Realidad Cruzada (XR)- Cómo agregar física a una escena
Para el primer proyecto en este masterclass, crearás una experiencia interactiva de Realidad Mixta que mostrará estadísticas de jugadores de baloncesto a fanáticos y entrenadores. Para el segundo proyecto en este masterclass, crearás una aplicación WebXR activada por voz utilizando Babylon.js y Azure Speech-to-Text. Luego, desplegarás la aplicación web utilizando el alojamiento de sitios web estáticos proporcionado por Azure Blob Storage.
Construyendo el Metaverso Interconectado y Traversable
JS GameDev Summit 2022JS GameDev Summit 2022
103 min
Construyendo el Metaverso Interconectado y Traversable
WorkshopFree
Avaer Kazmer
Avaer Kazmer
Basado en gran medida en Free Association en el Metaverso - Avaer @Exokit - M3, Avaer demostrará algunas de las formas en que los estándares abiertos permiten la travesía abierta y gratuita de usuarios y activos en todo el metaverso interconectado.