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

Rate this content
Bookmark

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 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.

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.

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.

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.
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.
¡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!
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.
Cómo no construir un videojuego
React Summit 2023React Summit 2023
32 min
Cómo no construir un videojuego
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.
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
React Summit 2024React Summit 2024
92 min
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
Featured Workshop
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.
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.
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.
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.