Aumenta el Rendimiento de Tus Juegos usando Canvas

This ad is not shown to multipass and full ticket holders
React Advanced
React Advanced 2026
October 23 - 26, 2026
London, UK & Online
Upcoming event
React Advanced 2026
React Advanced 2026
October 23 - 26, 2026. London, UK & Online
Bookmark
Rate this content
Sentry
Promoted
Code breaks, fix it faster

Crashes, slowdowns, regressions in prod. Seer by Sentry unifies traces, replays, errors, profiles to find root causes fast.

Get started

En esta charla, profundizaremos en el enorme potencial del elemento HTML5 Canvas como herramienta para el desarrollo de juegos. Comenzando con una visión general del Canvas API y sus capacidades gráficas, analizaremos los beneficios para renderizar gráficos 2D para 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 para crear experiencias de juego fluidas y de alto rendimiento. Llena de ejemplos de la vida real, esta charla es imprescindible para los profesionales que buscan llevar sus juegos web a nuevos niveles de rendimiento.

This talk has been presented at JS GameDev Summit 2023, check out the latest edition of this JavaScript Conference.

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 discute el uso del elemento canvas en juegos y aplicaciones web para mejorar el rendimiento. Compara el Canvas API y WebGL API, destacando las ventajas y desventajas de cada uno. El Canvas API permite la renderización tanto por CPU como por GPU, mientras que WebGL API solo utiliza GPU y aceleración por hardware. Usar el elemento canvas puede mejorar significativamente el rendimiento, pero conlleva una mayor complejidad y costos de desarrollo.

1. Introduction to Canvas Element

Short description:

Hola, mi nombre es Ilya Chernevsky, y trabajo como desarrollador web en Evolution Company. Hoy, quiero contarles sobre mi experiencia usando el elemento canvas en juegos y aplicaciones web para aumentar el rendimiento. Veamos las ventajas y desventajas del canvas. Las ventajas incluyen rendimiento y velocidad, ahorro de memoria y control sobre cada píxel. Las desventajas incluyen la dificultad para implementar animaciones, la complejidad en la manipulación de píxeles y las consideraciones para la pixelación del dispositivo. Cuando la gente habla de Canvas, a menudo se refieren a la Canvas API y la interfaz de contexto de renderizado 2d de Canvas. Sin embargo, si deseas utilizar todo el poder de la GPU, entonces deberías considerar usar WebGL.

Hola, mi nombre es Ilya Chernevsky, y trabajo como desarrollador web en Evolution Company y creo el front end de juegos. Hoy, quiero contarles sobre mi experiencia usando el elemento canvas en juegos y aplicaciones web, principalmente, para aumentar 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étera. Podrías decir que 4,000 no es tanto, quizás, pero ¿sabes qué podría ser mejor? Creo que mejor es tener solo un elemento DOM.

Primero, ¿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 para 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 DOM virtual para minimizar el manejo de elementos DOM.

Veamos las ventajas y desventajas del canvas. Comencemos con las ventajas. Primero que nada, y creo que lo más importante, es el rendimiento y la velocidad. Solo tenemos un elemento DOM. Segundo es el ahorro de memoria, ya que no hay necesidad de almacenar información sobre un gran número de elementos DOM. Y 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 animación y la propiedad de 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 nuevo lugar. Y en el caso de Canvas, el desarrollador se ve obligado a dibujar independientemente cada cuadro usando la función request animation frame de la web API del navegador. Y el segundo inconveniente es la complejidad. En general, los elementos DOM son más fáciles de manipular que los píxeles y usar la Canvas API es más difícil. En el caso de los elementos DOM, el navegador hace parte del trabajo por nosotros. Y finalmente, características de trabajar con pantallas, con la pixelación del dispositivo, más de una. Por ejemplo, cuando trabajamos con smartphones, tienes que estar atento a las dimensiones del Canvas. Y a veces esto puede llevar a artefactos inesperados. Y en general, te ves obligado a pensar más sobre otras características de Canvas que pueden no ser inmediatamente obvias.

Cuando la gente habla de Canvas, a menudo se refieren a la Canvas API y la interfaz de contexto de renderizado 2d de Canvas. Esta es la forma más simple y de bajo nivel para renderizar en el navegador. Sin embargo, si deseas utilizar todo el poder de la GPU, entonces deberías considerar usar WebGL. WebGL API se usa con el mismo elemento HTML canvas, pero para renderizar se usa un contexto de dibujo diferente, contexto de renderizado WebGL, y también usa una API diferente, WebGL API.

2. Comparison of Canvas API and WebGL API

Short description:

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

Así que con un elemento HTML canvas, podemos usar dos APIs diferentes, Canvas API y WebGL API. Vamos a comparar estas dos formas. Canvas API puede usar renderizado por CPU o GPU. El navegador, por sí mismo, decide esto según su lógica interna. Sin embargo, basado en sus algoritmos internos, el navegador decide usar CPU. En este caso, la aceleración de hardware gráfico no se usará porque está físicamente ubicada en la tarjeta gráfica.

Sin embargo, no es obligatorio que usar aceleración de hardware necesariamente lleve a un aumento de rendimiento, a menudo lo hará pero no siempre. WebGL API usa solo GPU y también aceleración de hardware si la tarjeta gráfica lo tiene, lo cual casi siempre ocurre. Esto casi siempre se acelera porque la GPU está optimizada para gráficos y esto libera recursos de CPU para ejecutar el resto de la aplicación.

Así que, también hay que mencionar que la complejidad de usar ambas de estas tecnologías es diferente. Mientras que Canvas API es menos difícil de usar y puede ser usada 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 usa más a menudo 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 un raster. Por lo tanto, por ejemplo, cuando hacemos zoom en el elemento Canvas, veremos que la calidad de la imagen ha empeorado. Además, el texto escrito en Canvas estará 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 bajo nivel y alto rendimiento. Usarlo 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
PlayCanvas is an open-source game engine used by game developers worldwide. Optimization is crucial for HTML5 games, focusing on load times and frame rate. Texture and mesh optimization can significantly reduce download sizes. GLTF and GLB formats offer smaller file sizes and faster parsing times. Compressing game resources and using efficient file formats can improve load times. Framerate optimization and resolution scaling are important for better performance. Managing draw calls and using batching techniques can optimize performance. Browser DevTools, such as Chrome and Firefox, are useful for debugging and profiling. Detecting device performance and optimizing based on specific devices can improve game performance. Apple is making progress with WebGPU implementation. HTML5 games can be shipped to the App Store using Cordova.
¡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!
Top Content
The Talk discusses ways to boost the performance of WebGL Unity games, including issues with bundle size, memory usage, and runtime performance. It suggests using Brotli for compression and non-exception support for better performance. Choosing the appropriate texture compression format and experimenting with separate builds can also help. The Talk also covers optimizing textures, models, audio, and assets by reducing build size, using compression, disabling unnecessary models, and optimizing audio quality. Unity's optimization tools and profilers are recommended for analyzing performance and memory issues.
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
This Talk explores the use of Babylon.js and WebXR to create immersive VR and AR experiences on the web. It showcases various demos, including transforming a 2D game into a 3D and VR experience, VR music composition, AR demos, and exploring a virtual museum. The speaker emphasizes the potential of web development in the metaverse and mentions the use of WebXR in Microsoft products. The limitations of WebXR on Safari iOS are discussed, along with the simplicity and features of Babylon.js. Contact information is provided for further inquiries.
Haciendo Juegos Increíbles con LittleJS
JS GameDev Summit 2022JS GameDev Summit 2022
34 min
Haciendo Juegos Increíbles con LittleJS
Top Content
Little.js is a super lightweight and fast JavaScript game engine that has everything included to start making games right away. It has a tiny footprint and no dependencies, making it perfect for size-coding competitions like JS13K. Little.js is built with an object-oriented structure and comes with several classes. It provides a fast rendering system, a comprehensive audio system, and various starter projects for different game types. Little.js is designed to be simple and easy to understand, allowing you to look at and modify the code.
Cómo No Construir un Videojuego
React Summit 2023React Summit 2023
31 min
Cómo No Construir un Videojuego
Top Content
The Talk showcases the development of a video game called Athena Crisis using web technologies like JavaScript, React, and CSS. The game is built from scratch and includes features like multiple game states, AI opponents, and map editing. It demonstrates the benefits of using CSS for game development, such as instant load times and smooth transitions. The Talk also discusses optimizing performance, supporting dark mode, and publishing the game to other platforms.
Cómo hacer un juego web tú solo
JS GameDev Summit 2023JS GameDev Summit 2023
27 min
Cómo hacer un juego web tú solo
This talk guides you on how to make a web game by yourself, emphasizing the importance of focusing on tasks that interest you and outsourcing the rest. It suggests choosing a game engine that allows distribution on the web and aligns with your understanding and enjoyment. The talk also highlights the significance of finding fun in the creative process, managing scope, cutting features that don't align with the game's direction, and iterating to the finish line. It concludes by discussing the options for publishing the game on the web and leveraging unique web features.

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
Workshop
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.
Masterclass de Codificación en Vivo de Juegos Pequeños
JS GameDev Summit 2023JS GameDev Summit 2023
115 min
Masterclass de Codificación en Vivo de Juegos Pequeños
Workshop
Frank Force
Frank Force
Sumérgete en el cautivador mundo del desarrollo de microjuegos con Frank Force en este interactivo masterclass de codificación en vivo. Diseñado tanto para desarrolladores experimentados como para curiosos principiantes, esta sesión explora los desafíos únicos y las alegrías de crear juegos y demos con restricciones extremas de tamaño.
Construyendo el Metaverso Interconectado y Traversable
JS GameDev Summit 2022JS GameDev Summit 2022
103 min
Construyendo el Metaverso Interconectado y Traversable
Workshop
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.