Utilizando la API del Gamepad para una mejor experiencia de juego en la web

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

Esta charla explora el uso e impacto de la API del Gamepad en el espacio de los juegos web. La API del Gamepad te permite conectar y utilizar varios controladores de juegos con los navegadores, pero dado que esta API está en etapas muy tempranas, rastrear diferentes entradas de controladores en diferentes navegadores se vuelve extremadamente desafiante. Con este propósito, he lanzado una biblioteca de código abierto que proporciona soporte para eventos de presión de botones, movimiento de ejes y efectos de vibración en los navegadores. Nos enfocaremos en cómo podemos aprovechar esta biblioteca para brindar mejores experiencias de juego a los consumidores en la web.

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

FAQ

La API de Gamepad es compatible con todos los navegadores modernos, lo cual facilita a los desarrolladores la creación de juegos y aplicaciones interactivas que pueden utilizar gamepads como método de entrada.

Puedes utilizar la función 'requestAnimationFrame' para consultar de manera continua los cambios de estado de los botones de un Gamepad. Esto te permite realizar un seguimiento preciso de si un botón fue presionado o no y actuar en consecuencia en tu juego o aplicación.

La API de Gamepad maneja dos eventos principales: 'GamepadConnected' y 'GamepadDisconnected'. Estos eventos se emiten cuando un Gamepad se conecta o desconecta del navegador, respectivamente.

JoypadJS es una biblioteca de código abierto que facilita la conexión y uso de varios controladores de juegos en navegadores que admiten la API de Gamepad. Proporciona una API basada en eventos para suscribirse a eventos de conexión, desconexión, botones presionados y movimientos del eje.

Arun sugiere implementar un bucle de juego que utilice 'requestAnimationFrame' para verificar continuamente los cambios en el estado de los botones y ejes de los Gamepads conectados. También propone utilizar eventos personalizados para rastrear estos cambios y despacharlos en el objeto window.

Para rastrear los movimientos de los ejes en un Gamepad, puedes recorrer los ejes y determinar qué joystick se movió, calculando la dirección del movimiento basada en los valores de los ejes. Luego, puedes utilizar eventos personalizados para enviar esta información.

Usar setInterval puede resultar en intervalos de retraso inconsistentes debido a la ejecución prioritaria de tareas intensivas. Una mejor alternativa es usar 'requestAnimationFrame', que se ejecuta al inicio del fotograma y se sincroniza con la frecuencia de actualización de la pantalla, ofreciendo un rendimiento óptimo.

La API de Gamepad web es una especificación del W3C que define una interfaz de bajo nivel para representar dispositivos de juego como gamepads y joysticks en navegadores web, permitiendo a los desarrolladores conectar estos dispositivos al navegador y utilizarlos en aplicaciones de juegos.

Arun Michael Dsouza
Arun Michael Dsouza
21 min
28 Sep, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La charla discute la API del Gamepad para su uso en el desarrollo de juegos en la plataforma web. Explora la API del Gamepad, que permite a los desarrolladores conectar dispositivos de juegos al navegador y utilizarlos en aplicaciones de juegos. La implementación de la API del Gamepad implica rastrear las pulsaciones de botones y los movimientos del joystick utilizando el request animation frame. La charla también presenta la biblioteca JoypadJS, que extiende la API del Gamepad para rastrear las pulsaciones de botones, los movimientos de los ejes y proporcionar retroalimentación háptica. JoypadJS funciona en navegadores modernos con soporte para la API del Gamepad y se utiliza en juegos, aplicaciones interactivas y proyectos de IoT.

1. Introducción a la API de Gamepad web

Short description:

Hola, y bienvenidos a mi charla para la Cumbre de Desarrollo de Juegos JS de este año. Hoy hablaré sobre la API de Gamepad web y cómo podemos extenderla y utilizarla de manera efectiva para crear juegos en la web. Hablemos sobre la plataforma web por un momento antes de adentrarnos en la API de Gamepad web. La web ha crecido mucho en la última década aproximadamente, y continúa creciendo a un ritmo rápido. El navegador se ha convertido en algo más que un renderizador o visor de documentos, y es gracias a este crecimiento y la continua adición de APIs ricas en funciones que los desarrolladores pueden crear aplicaciones web mucho más interactivas y eficientes.

Mi nombre es Arun. Y hoy hablaré sobre la API de Gamepad web y cómo podemos extenderla y utilizarla de manera efectiva para crear juegos en la web.

Primero, un poco sobre mí. Soy un ingeniero senior en Bloomberg, y principalmente trabajo con tecnologías web, construyendo software web empresarial y herramientas basadas en el navegador. También soy un entusiasta del código abierto. He contribuido a varios proyectos de código abierto, y algunos de mis propios proyectos, principalmente bibliotecas de extensión y módulos para Node, React, Angular, etc. Puedes visitar mi sitio web si quieres saber más sobre mí y mi trabajo.

Bien, sin más preámbulos, vamos directo al grano. Hablemos sobre la plataforma web por un momento antes de adentrarnos en la API de Gamepad web. Supongo que primero debemos reconocer el hecho de que la web ha crecido mucho en la última década aproximadamente, y continúa creciendo a un ritmo rápido. Todos sabemos que el navegador se ha convertido en algo más que un renderizador o visor de documentos, y es gracias a este crecimiento y la continua adición de APIs ricas en funciones que los desarrolladores pueden crear aplicaciones web mucho más interactivas y eficientes. Mejoras como eventos de luz ambiental, gráficos acelerados por GPU, acceso al sistema de archivos, y APIs de nivel inferior que proporcionan control nativo y acceso a hardware no solo permiten a los desarrolladores atender a una variedad más amplia de usuarios sino que también les permite admitir varios tipos de casos de uso. Lo cual no hubiera sido posible sin estas mejoras en la plataforma web. Aunque algunas de estas APIs están en etapas muy tempranas en este momento, parecen ser realmente, realmente prometedoras y dan una idea de cómo podría ser el desarrollo web en los próximos años.

2. Introducción a la API de GamePad

Short description:

Los navegadores se han vuelto lo suficientemente potentes como para manejar cálculos gráficos complejos para jugar videojuegos. La forma principal de entrada para los juegos web ha sido el teclado o el mouse, lo cual puede ser limitante para los dispositivos de pantalla táctil. La especificación GamePad permite a los desarrolladores conectar dispositivos de juego al navegador y utilizarlos en aplicaciones de juegos. La API expone un método en la interfaz Navigator para obtener información sobre los GamePads conectados y sus botones. La API de GamePad recomienda un diseño estándar de facto llamado Diseño Estándar de GamePad.

Los navegadores se han vuelto extremadamente potentes y capaces como para manejar cálculos gráficos complejos, especialmente para jugar videojuegos. Desde juegos de desplazamiento en 2D, emulación retro, hasta juegos en 3D de alta gama. Es posible jugar casi cualquier tipo de juego en la web hoy en día.

Y para la mayoría de estos juegos que vemos y jugamos en la web, la forma principal de entrada siempre ha sido mediante el teclado o el mouse. Y para dispositivos de pantalla táctil, hemos visto diseños de controles en pantalla como estos, que a veces pueden dificultar la experiencia de juego. Y el uso de este tipo de controles puede resultar bastante complicado para los jugadores que prefieren controles más naturales, como un pad direccional o un joystick para los movimientos del personaje.

Ahora, los juegos de escritorio proporcionan esta flexibilidad de utilizar dispositivos externos como gamepads y joysticks, tal vez porque tienen soporte nativo incorporado. Pero cuando se trata de la web, durante mucho tiempo no ha habido soporte nativo para esto en absoluto. Los desarrolladores tenían que diseñar interfaces complejas basadas en el mouse o el teclado para los controles del juego, lo cual puede ser bastante complicado de operar.

Así que, hace unos años, el W3C introdujo la especificación GamePad, que define una interfaz de bajo nivel para representar dispositivos de juego. Esto significa que utilizando esta API, los desarrolladores podrán conectar GamePads y dispositivos similares al navegador y luego utilizarlos en sus aplicaciones de juegos. Esto significa que podrás utilizar dispositivos como el DualShock, Joy-Con e incluso dispositivos de próxima generación como el DualSense y los controladores de Xbox Series X.

Hasta el día de hoy, la especificación GamePad sigue siendo un trabajo en progreso. Se publica como un borrador de trabajo. La especificación tiene la intención de convertirse en una recomendación del W3C. Por ahora, podemos ver que la API en sí es compatible con todos los navegadores modernos, lo cual es definitivamente una buena señal. Así que echemos un vistazo a los detalles de la API en sí. La API expone un método en la interfaz Navigator que devuelve una lista de objetos GamePad, y cada objeto GamePad representa un GamePad que está conectado al navegador. Ahora, esta interfaz GamePad devuelve información útil sobre el GamePad conectado. Información relacionada con los botones, los ejes, que son básicamente los joysticks. Los estados actuales y otra información como el ID del dispositivo, el estado, etc. Si observamos de cerca los botones del GamePad, vemos que cada botón es una instancia de la interfaz GamePadButton. Esto representa un botón individual en el GamePad y permite acceder al estado actual del botón. Utilizando esto, podemos determinar si el botón fue presionado o no y llevar a cabo la acción correspondiente en el juego. Ahora, cada fabricante de GamePads crea muchos tipos diferentes de productos y cada uno puede tener un estilo o diseño único de botones y ejes. Pero es responsabilidad del agente de usuario, por supuesto, admitir tantos de estos como sea posible, por eso la API de GamePad recomienda un diseño estándar de facto llamado Diseño Estándar de GamePad. Y este diseño se ha vuelto popular gracias a muchas consolas de juegos. Y en este diseño, los botones y ejes se disponen en un orden particular que veremos. Así es como se ve el Diseño Estándar de GamePad y en este diseño, las ubicaciones de los botones se colocan en un grupo izquierdo de cuatro botones, un grupo derecho de cuatro botones, un grupo central de tres botones.

3. Seguimiento de Pulsaciones de Botones del GamePad

Short description:

Algunos controladores pueden tener cuatro botones y un par de joysticks. La API de GamePad proporciona eventos para la conexión y desconexión del GamePad. Sin embargo, no hay una forma estandarizada de detectar las pulsaciones de botones o los movimientos del joystick. Para rastrear estos estados, podemos realizar una consulta continua de cambios o utilizar request animation frame para actualizaciones más consistentes.

Algunos controladores pueden tener cuatro. Un par de botones frontales, o botones de hombro, como se les llama, en el lado izquierdo y derecho del GamePad. Y un par de joysticks.

Ten en cuenta que, dado que la API de GamePad está en sus primeras etapas, el diseño estándar de los botones del GamePad puede variar de un navegador a otro. La imagen aquí muestra los mapeos de botones predeterminados para Google Chrome.

Entonces, ¿cómo podemos rastrear estos cambios en el estado de los botones? ¿Existen eventos expuestos por la API de GamePad que podamos utilizar? Veamos.

La API de GamePad proporciona el evento GamePad Connected, que se emite cada vez que se conecta un nuevo GamePad al navegador. Si el GamePad ya está conectado, cuando la página se carga y obtiene el enfoque, entonces el evento se emite cada vez que hay alguna actividad en el GamePad, ya sabes, una pulsación de botón o un movimiento en un joystick. De manera similar, hay un evento GamePad Disconnected, que se emite cuando se desconecta un GamePad del navegador.

Sin embargo, no hay una forma estandarizada de detectar las pulsaciones de botones del GamePad o los movimientos del joystick. Ya se ha visto que la interfaz GamePad devuelve información útil sobre los estados de acceso a los botones, pero no hay un evento real que se emita cuando el usuario realiza estas acciones. Actualmente, la API de GamePad solo admite los eventos GamePad Connected y Disconnected.

Entonces, intentemos explorar qué podemos hacer para rastrear los botones del GamePad, las pulsaciones y los movimientos de acceso. Podríamos tener un GamePad conectado al navegador y, para rastrear los estados de los botones y el acceso, podemos realizar una consulta continua de los cambios en algo como una llamada de intervalo establecido, y esto es lo más simple que podemos hacer. Si observas el código aquí, estamos registrando la información del primer botón del primer GamePad conectado al navegador. Por eso usamos el 0 a X. Esto funciona bien. Podemos capturar el estado del botón a medida que se actualiza, pero esto puede no ser la mejor forma de capturar esta información. Veamos por qué.

Todos sabemos que en JavaScript, todo se ejecuta en un solo hilo y las funciones de temporizador no son una excepción. Para ejecutar código utilizando setInterval, especificamos una devolución de llamada que se ejecuta cada X milisegundos. A veces, los retrasos proporcionados a estas funciones de temporizador no se respetan debido a la ejecución prioritaria de tareas intensivas en recursos, si las hay en la cola de tareas. Y esto conduce a intervalos de retraso inconsistentes. Es posible que hayas notado una interrupción al usar setInterval para animar elementos de la página. Y esto se debe a una actualización innecesaria y forzada de los elementos de la página. Incluso antes de que la pantalla del usuario esté lista para procesar y representar esas actualizaciones. Y esto se llama bloqueo del diseño y se debe evitar a toda costa.

Entonces, ¿qué más podemos hacer aquí? Podemos usar request animation frame. Ahora, la devolución de llamada proporcionada a request animation frame se garantiza que se ejecutará al inicio del fotograma. Lo que significa que la devolución de llamada especificada se llamará antes de que ocurra la próxima operación de repintado.

4. Implementación de la API de Gamepad

Short description:

La función de devolución de llamada se solicita alrededor de 60 veces por segundo o 60 FPS, coincidiendo con la frecuencia de actualización de la pantalla. Se recomienda utilizar request animation frame para operaciones o animaciones que necesiten mantenerse sincronizadas con el renderizado. La API de Gamepad permite consultar objetos de Gamepad y acceder a los estados de los botones de manera efectiva utilizando request animation frame. Podemos detectar gamepads conectados o desconectados, acceder a cambios en el estado de los botones o ejes, y proporcionar esta funcionalidad como una API para reutilizar en aplicaciones de juegos. La implementación del bucle del juego obtiene los gamepads conectados, verifica cambios en el estado de los botones y ejes, y utiliza manejadores de eventos separados para cada uno. El valor de retorno de request animation frame es un ID de solicitud único que se puede utilizar para solicitar o cancelar solicitudes de devolución de llamada de fotogramas. El ButtonEventListener realiza un seguimiento de los eventos de los botones mediante la verificación de los estados de los botones y el envío de eventos personalizados en el objeto window.

El número de veces que se solicita la función de devolución de llamada es alrededor de 60 veces por segundo o 60 FPS. Pero generalmente coincide con la frecuencia de actualización de la pantalla. Por eso, para la mayoría de las operaciones o animaciones que deben mantenerse sincronizadas con el renderizado, se recomienda utilizar request animation frame para obtener el mejor rendimiento.

Volviendo a la API de Gamepad, podemos ver que consultar los objetos de Gamepad y acceder a los estados de los botones se puede hacer de manera efectiva utilizando request animation frame. En el contexto de un videojuego, un bucle de juego es algo que verifica continuamente la entrada del usuario, actualiza el estado del juego y luego renderiza la escena. Request animation frame es adecuado para esto porque podemos realizar todas estas operaciones en su devolución de llamada y se mantendrá sincronizado con las tareas de repintado en cada fotograma.

Creo que así es como se debe obtener la entrada del usuario en una aplicación de juegos. Entonces, para resumir, podemos detectar si un gamepad está conectado o desconectado del navegador. Eso es algo que el gamepad ya admite. Podemos acceder a los cambios en el estado de los botones o ejes utilizando request animation frame. Ahora, idealmente, lo que queremos hacer es proporcionar esta funcionalidad en forma de una API para que se pueda reutilizar en cualquier aplicación de juegos. Veamos cómo podemos extender la API de gamepad para lograr esto. Comencemos con la implementación del bucle de juego. Aquí tenemos un método de inicio. En este método, básicamente estamos obteniendo todos los gamepads que están conectados al navegador. Y luego los recorremos para verificar los cambios en el estado de los botones y ejes. Y para cada gamepad que está conectado al navegador, queremos escuchar cualquier cambio de estado que ocurra en cualquiera de los botones o ejes. Por eso tenemos manejadores de eventos separados para ambos. El método de inicio llama a request animation frame para que se ejecute de forma recursiva y podamos realizar un seguimiento de los cambios en el estado de los botones y ejes en cada fotograma.

Una cosa a tener en cuenta aquí es el valor de retorno del método request animation frame. Devuelve un valor no entero, que es el ID de solicitud que identifica de manera única la función de devolución de llamada. Y podemos usar este ID para solicitar o cancelar las solicitudes de devolución de llamada de fotogramas. Es posible que debamos asegurarnos de detener el bucle, cancelar todas las solicitudes de devolución de llamada y liberar la memoria cuando ya no sea necesario. Por ejemplo, cuando todos los gamepads se hayan desconectado y no sea necesario obtener los cambios en el estado de los botones o ejes.

Ahora veamos la implementación de ButtonEventListener. Para realizar un seguimiento de los eventos de los botones, recorremos todos los botones del gamepad, verificamos el estado del botón, si ha sido presionado o no. Y dependiendo de eso, utilizamos DispatchEvent para enviar cualquier evento en el objeto window. Y utilizamos la API de eventos personalizados para definir el evento en sí, que se llama GamePadButtonPressed, y pasamos los datos del evento a este evento personalizado, que contiene la información sobre el botón presionado. Y utilizando esto, podemos escuchar el evento GamePadButtonPressed en el objeto window y realizar un seguimiento de los cambios de estado en cualquiera de los botones del gamepad.

5. Seguimiento de Movimientos del Joystick

Short description:

Un consejo es mantener un mapeo interno de clave-valor de todos los botones y sus estados, y descartar estos valores cuando el estado cambie. Ahora, para el seguimiento de los movimientos del joystick, primero determinamos el número total de sticks en el GamePad. Recorremos todos los ejes y determinamos qué stick se movió. También calculamos la dirección del movimiento basándonos en los índices y los valores de los ejes. Utilizamos el método dispatch event para enviar un evento al objeto window con los datos del evento requeridos.

Un consejo es mantener un mapeo interno de clave-valor de todos los botones y sus estados, y descartar estos valores cuando el estado cambie. De esta manera, podremos enviar los eventos personalizados solo cuando el estado cambie a positivo.

Ahora, para el seguimiento de los movimientos del joystick, primero determinamos el número total de sticks en el GamePad. En el diseño estándar del GamePad, tenemos dos joysticks. Y cada stick tiene dos ejes que representan la dirección del movimiento. Y cada eje está representado por un índice.

Recorremos todos los ejes y determinamos qué stick se movió. Los ejes 0 y 1 representan el stick izquierdo. Y los ejes 2 y 3 representan el stick derecho. Entonces, si el índice actual es menor que el número total de sticks, es el stick izquierdo; de lo contrario, es el stick derecho. También calculamos la dirección del movimiento basándonos en los índices y los valores de los ejes. Un valor negativo representa un movimiento hacia la izquierda o arriba, y un valor positivo representa un movimiento hacia la derecha o abajo. Nuevamente, utilizamos el método dispatch event para enviar un evento al objeto window con los datos del evento requeridos. El evento en sí es, una vez más, un evento personalizado llamado GamePadAxisMoved, en el cual podemos realizar un seguimiento de los cambios de estado en cualquiera de los ejes del GamePad.

6. Extensión de la API GamePad con la biblioteca JoypadJS

Short description:

Ahora, al escuchar el botón presionado del GamePad, se agregó un objeto window que puede devolver la información del botón presionado. Y el evento GamePadAxisMoved devolvería la información del eje que se movió. Hemos podido extender la API GamePad para realizar un seguimiento de los botones presionados y los movimientos del eje. Existe una biblioteca de código abierto llamada JoypadJS que te permite conectar y usar varios controladores de juegos en navegadores que admiten la API GamePad. Es muy pequeña, no tiene dependencias y admite botones presionados, movimientos del eje, eventos y más. Expone una API basada en eventos para manejar la conexión del gamepad, desconexión, botones presionados y movimientos del eje. La biblioteca también proporciona un método de vibración para retroalimentación háptica y un método de configuración para ajustes globales. JoypadJS funciona en todos los navegadores modernos con soporte para la API GamePad y se utiliza en juegos, aplicaciones interactivas y proyectos de IoT. La API GamePad está en etapas iniciales, por lo que los detalles y las especificaciones de la API pueden cambiar en el futuro. Echa un vistazo a JoypadJS en bit.ly/joypad_JS.

Ahora, al escuchar el botón presionado del GamePad, se agregó un objeto window que puede devolver la información del botón presionado. Y el evento GamePadAxisMoved devolvería la información del eje que se movió. Eso es prácticamente todo. Hemos podido extender la API GamePad, en particular la interfaz GamePad, para realizar un seguimiento de los botones presionados y los movimientos del eje.

Ahora, lo bueno es que no tienes que hacer toda esta implementación por ti mismo, ¿verdad? Existe una biblioteca de código abierto que puedes usar fácilmente en tus juegos que creé, por cierto. Y esta biblioteca se llama JoypadJS. Es una biblioteca que te permite conectar y usar varios controladores de juegos en navegadores que admiten la API GamePad. Es muy pequeña, no tiene dependencias y admite botones presionados, movimientos del eje, eventos y mucho más. Puedes echar un vistazo en bit.ly/joypad_JS. Es una biblioteca que publiqué hace algún tiempo bajo la licencia MIT. Expone una API basada en eventos que se puede utilizar para suscribirse a ciertos eventos que son detectados y despachados internamente por la biblioteca.

Entonces, este es solo un ejemplo. Puedes suscribirte a eventos simplemente especificando un nombre de evento y una devolución de llamada. Y esta devolución de llamada se activa cada vez que se desencadena el evento especificado. Admite eventos para manejar la conexión del gamepad, desconexión, botones presionados y movimientos del eje. También expone un método de vibración que se puede utilizar para proporcionar retroalimentación háptica al usuario. Básicamente, puedes configurar la duración y la intensidad y personalizar la vibración del gamepad. Es algo que es compatible con todos los navegadores modernos, excepto Firefox, que yo sepa. La biblioteca también proporciona un método de configuración que se puede utilizar para configurar ajustes globales para la vibración, umbral de movimiento del eje, que es como la rigidez del movimiento, y la opción de asignación de botones personalizada, que se puede utilizar para establecer asignaciones de botones personalizadas para mejorar el seguimiento del estado de los botones en diferentes navegadores. Como mencioné anteriormente, diferentes navegadores pueden implementar su propia asignación de botones estándar para gamepads, ¿verdad? Entonces, utilizando esta opción, puedes asegurarte de que las asignaciones de botones sean precisas y que todos los botones funcionen como se espera en todos los navegadores. El soporte del navegador para la biblioteca es bastante bueno, JoypadJS funciona en todos los navegadores modernos que admiten la API GamePad, por supuesto. Los desarrolladores han estado utilizando la biblioteca en todo tipo de proyectos, juegos, aplicaciones interactivas, IoT, lo cual es fantástico. También aprendí que RPG.js utiliza esta biblioteca para el soporte de gamepad, RPG.js es como un marco de creación de RPG basado en web. Así que sí, siéntete libre de probarlo y compartir cualquier comentario que puedas tener. Me gustaría señalar nuevamente que la API GamePad está en etapas iniciales. Por lo tanto, los detalles y las especificaciones de la API pueden cambiar en el futuro. Nuevamente, puedes echar un vistazo en bit.ly/joypad_JS. Como probablemente ya habrás adivinado, he estado investigando mucho sobre el tema y he publicado algunos blogs que podrían ser realmente útiles. Puedes consultarlos aquí. Y eso es todo. Si tienes alguna pregunta, sugerencia o simplemente quieres saludar, no dudes en contactarme en amdisuser92 en Twitter. Muchas gracias por unirte y escucharme y disfruta del resto de la conferencia. ♪♪♪

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.
Remix Flat Routes – Una Evolución en el Enrutamiento
Remix Conf Europe 2022Remix Conf Europe 2022
16 min
Remix Flat Routes – Una Evolución en el Enrutamiento
Top Content
Remix Flat Routes is a new convention that aims to make it easier to see and organize the routes in your app. It allows for the co-location of support files with routes, decreases refactor and redesign friction, and helps apps migrate to Remix. Flat Folders convention supports co-location and allows importing assets as relative imports. To migrate existing apps to Flat Routes, use the Remix Flat Routes package's migration tool.
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.
¡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.
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.

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.
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
React Summit 2024React Summit 2024
92 min
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
WorkshopFree
Vivek Nayyar
Vivek Nayyar
Sumérgete en el mundo de la IA con nuestro masterclass interactivo diseñado específicamente para desarrolladores web. "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" ofrece una oportunidad única para cerrar la brecha entre la IA y el desarrollo web. A pesar de la prominencia de Python en el desarrollo de IA, el vasto potencial de JavaScript sigue siendo en gran medida inexplorado. Este masterclass tiene como objetivo cambiar eso.A lo largo de esta sesión práctica, los participantes aprenderán cómo aprovechar LangChain, una herramienta diseñada para hacer que los modelos de lenguaje grandes sean más accesibles y útiles, para construir agentes de IA dinámicos directamente dentro de entornos JavaScript. Este enfoque abre nuevas posibilidades para mejorar las aplicaciones web con funciones inteligentes, desde el soporte al cliente automatizado hasta la generación de contenido y más.Comenzaremos con los conceptos básicos de LangChain y los modelos de IA, asegurando una base sólida incluso para aquellos nuevos en IA. A partir de ahí, nos sumergiremos en ejercicios prácticos que demuestran cómo integrar estas tecnologías en proyectos reales de JavaScript. Los participantes trabajarán en ejemplos, enfrentando y superando los desafíos de hacer que la IA funcione sin problemas en la web.Este masterclass es más que una experiencia de aprendizaje; es una oportunidad de estar a la vanguardia de un campo emergente. Al final, los asistentes no solo habrán adquirido habilidades valiosas, sino que también habrán creado funciones mejoradas con IA que podrán llevar a sus proyectos o lugares de trabajo.Ya seas un desarrollador web experimentado curioso acerca de la IA o estés buscando expandir tus habilidades en áreas nuevas y emocionantes, "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" es tu puerta de entrada al futuro del desarrollo web. Únete a nosotros para desbloquear el potencial de la IA en tus proyectos web, haciéndolos más inteligentes, interactivos y atractivos para los usuarios.
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.
Managers Are From Mars, Devs Are From Venus
TechLead Conference 2024TechLead Conference 2024
111 min
Managers Are From Mars, Devs Are From Venus
Workshop
Mo Khazali
Mo Khazali
Una Guía para Desarrolladores sobre Cómo Comunicar, Convencer y Colaborar Efectivamente con los Stakeholders
Es una historia tan antigua como el tiempo: la colaboración entre desarrolladores y stakeholders de negocios ha sido durante mucho tiempo un desafío, con una falta de comunicación clara que a menudo deja a ambas partes frustradas. Los mejores desarrolladores pueden comprender profundamente las necesidades de sus contrapartes de negocios, comunicar efectivamente la estrategia técnica sin perder a la audiencia no técnica y convencer al negocio de tomar las decisiones correctas. Trabajando en una consultoría, he fallado y tenido éxito en arquitectar y “vender” visiones técnicas, aprendiendo muchas lecciones en el camino.Ya sea que trabajes en una empresa de productos, seas consultor/freelancer, o quieras aventurarte más allá de ser solo un desarrollador, la capacidad de convencer y comunicar claramente con los stakeholders puede diferenciarte en la industria tecnológica. Esto se vuelve aún más importante con el auge de GenAI y el mercado de desarrolladores cada vez más competitivo, ya que la resolución de problemas y la comunicación efectiva son clave para posicionarte.En esta masterclass, compartiré ejemplos del mundo real, tanto buenos como malos, y te guiaré a través de poner la teoría en práctica mediante dojos.
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.