"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Creación de una plataforma de transmisión personalizada para My D&D Table: solución de la integración del gamepad con un SDK personalizado

Creación de una plataforma de transmisión personalizada para My D&D Table: solución de la integración del gamepad con un SDK personalizado

Publicado el 2024-11-08
Navegar:374

Building a Custom Stream Deck for My D&D Table: Solving Gamepad Integration with a Custom SDK

Como jugador apasionado de Dungeons & Dragons y entusiasta de la tecnología, decidí mejorar la configuración de mi juego creando una mesa de café personalizada que cuenta con una pantalla integrada. Esta tabla muestra mapas, fichas, reproduce efectos de sonido e incluso muestra obras de arte para los jugadores. Todo esto se ejecuta a través de una poderosa plataforma llamada Foundry VTT, que es similar a Roll20 pero con un mejor modelo de precios y un extenso sistema de módulos abiertos. Es perfecto para personalizar tu experiencia de mesa.

Mientras exploraba formas de mejorar mi configuración, noté módulos que permitían integrar plataformas de transmisión con Foundry. Estas herramientas brindan acceso rápido a macros y comandos, lo que hace que el juego sea aún más fluido. Sin embargo, después de ver el precio de un stream deck (¡200 euros!), no estaba preparado para hacer esa inversión.

Entonces recordé algo: hace unos años, construí una máquina recreativa. Aunque la máquina hace mucho que fue desmantelada, todavía tenía los botones y los tableros de control del proyecto. Con un poco de creatividad y una impresora 3D, hice mi propio "stream deck" personalizado imprimiendo una pequeña caja con ranuras para los botones.

Ahora tenía el hardware listo, pero integrarlo con Foundry VTT presentó un desafío. Quería usar la API de Gamepad en el navegador para registrar las pulsaciones de mis botones, pero me sorprendió la falta de flexibilidad en la forma en que la API maneja las entradas. El enfoque predeterminado era utilizar un bucle while (verdadero) para sondear constantemente el estado presionado de cada botón. Si bien esto funciona bien en un bucle de juego usando requestAnimationFrame, para mis propósitos, me pareció ineficiente y, francamente, estúpido. Quería simplemente responder a las pulsaciones de botones con detectores de eventos, no comprobar constantemente el estado del mando en un bucle sin fin.

Esto me llevó a crear el SDK para Gamepad que comparto hoy.

Con este SDK, simplifiqué el proceso al permitir a los desarrolladores agregar detectores de eventos para presionar y soltar botones y cambiar de eje directamente, sin necesidad de sondeo. También incluye soporte para conectar y desconectar gamepads, lo que facilita la integración con plataformas como Foundry VTT o cualquier proyecto basado en navegador.

Al usar este SDK, cualquiera puede conectar su controlador personalizado a una aplicación basada en navegador sin la molestia de verificar manualmente los estados del gamepad. Para mi mesa de D&D, ahora significa que puedo usar sin problemas mi plataforma de transmisión improvisada para controlar macros, acciones y más en el juego, todo gracias a unos pocos botones y un poco de código.

Si estás interesado, consulta el SDK y no dudes en comunicarte con nosotros si buscas resolver problemas similares.

El Github: https://github.com/RamonGebben/Gamepad-SDK
NPM: https://www.npmjs.com/package/@pindakaasman/gamepad-sdk

Declaración de liberación Este artículo se reproduce en: https://dev.to/ramongebben/building-a-custom-stream-deck-for-my-dd-table-solving-gamepad-integration-with-a-custom-sdk-5c2h? 1 como Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3