How To

Minecraft se une a Stream Deck: una construcción Redstone totalmente funcional

Last updated:

  Esta página ha sido traducida automáticamente por DeepL. Switch to English

Nuestra comunidad nunca deja de sorprendernos con construcciones ingeniosas, creativas y divertidas, y esta podría llevarse la palma (¿o el bloque?). Últimamente hemos estado hablando de cómo Stream Deck está apareciendo en más sitios que nunca: con los módulos Stream Deck y Virtual Stream Deck en tu ordenador. ¿Y ahora? En Minecraft.

Inspiración

Hace aproximadamente un mes, un especialista de la comunidad Elgato publicó en la cuenta de Twitter de Elgato una construcción en Minecraft de un Stream Deck de 15 teclas. Possedido por el espíritu de la cordial rivalidad, empecé a intentar averiguar cómo convertir este concepto en una realidad funcional. Aunque lo que he creado no es perfecto ni mucho menos, y tiende a romperse si lo miras mal, ¡estoy más que satisfecho con los resultados!

Esta versión funciona con un Virtual Stream Deck de seis teclas oculto en mi otro monitor, con un script Node.js muy rudimentario que se encarga de las partes difíciles de pulsar los botones SD en función de lo que se activa en el juego, así como de convertir la pantalla VSD en algo que se pueda representar en Minecraft.

unnamed

En Minecraft, el redstone utilizado es extraordinariamente sencillo. Detrás de la pantalla, cada botón utiliza un par de sensores sculk calibrados (sensores de sonido del juego) para supervisar los eventos de entrada, que en este caso son bolas de nieve que caen sobre el botón (intensidad de la señal 2) o el sonido de una carga de viento que explota (intensidad de la señal 15). Cada par conduce a un único bloque de comandos que, cuando se activa, introduce entre 1 y 8 espacios en el chat del juego. Los botones de página atrás/adelante situados a los lados también tienen un pequeño circuito adicional que controla las luces indicadoras, pero por lo demás funcionan de forma idéntica.

¿Qué está pasando en mi script personalizado?

La mayor parte de la magia ocurre en el script Node.js personalizado que escribí para este proyecto. Al iniciar el programa, obtengo información especial que me permite seleccionar una ventana Virtual Stream Deck (VSD) o la ventana del juego Minecraft, y luego también obtengo las coordenadas de la ventana VSD. Una vez que toda la configuración está lista, hay dos bucles que se ejecutan en tándem: entrada y visualización.

La mitad de entrada del programa es la más fácil de entender. Cada vez que se ejecuta Minecraft, guarda un archivo de registro con las cosas más importantes que suceden en un archivo de texto llamado «latest.log». Es importante destacar que este archivo de registro también incluye cualquier mensaje recibido en el chat, lo que significa que con un poco de código inteligente podemos ver solo las entradas del registro que contienen nuestros mensajes que solo contienen espacios. Cuando llega un mensaje de este tipo, contamos el número de espacios y lo utilizamos para determinar qué botón hay que pulsar. He ordenado los botones de arriba abajo y de izquierda a derecha (también hay dos botones adicionales para avanzar y retroceder en la página). Una vez seleccionado el botón, utilizo una biblioteca especializada en automatización de escritorio para mover rápidamente el ratón fuera de la ventana de Minecraft, hacer clic en el botón correspondiente del Virtual Stream Deck que lo controla todo y volver a Minecraft (hay que pulsar F3+P para que esto funcione; de lo contrario, se pausará cuando el juego pierda el foco). Si no se mueve el ratón cuando se realizan estos movimientos, ¡el resultado es bastante fluido! Si es así, tiende a romperse horriblemente, jajaja.

Eso funciona bien para pulsar botones, pero la verdadera magia del Stream Deck es que tienes una pantalla programable debajo de cada tecla. ¿Cómo se muestra eso en Minecraft? La solución que elegí quizá no sea la más elegante, pero funciona, ¡y eso es lo que me importa! Cuatro veces por segundo, el script toma una captura de pantalla de la ventana VSD. Suponiendo que los botones tienen un tamaño específico (el tamaño predeterminado de 52 x 52 píxeles funciona bastante bien), recorta la captura de pantalla al tamaño de un botón y luego la redimensiona a 8 x 8 píxeles. Una vez hecho esto, recorre cada píxel de la imagen recortada y los procesa mediante un ingenioso código para averiguar qué bloque se acerca más a su color. (Muchas gracias a kult0922 en GitHub, que creó un sitio web que convierte imágenes en pixel art de Minecraft y publicó el código fuente. Sin ese código, este proyecto habría tardado bastante másen completarse). Solo hay que repetir el proceso con los otros cinco botones.

Obtener la lista de bloques que necesitas es un buen paso, pero introducirlos en el juego sigue siendo un problema. Si tienes alguna forma de ejecutar comandos de chat, podrías usar el comando /setblock varias veces para actualizar cada píxel uno a uno, pero es muy lento y poco eficiente. Una herramienta mejor sería Structure Block, una herramienta del juego básico que, entre otras cosas, te permite colocar «esquemas» prefabricados de estructuras en el mundo del juego. Descubrí cómo hacer que mi script creara esquemas de la forma que Minecraft esperaba, y una vez guardados en la carpeta de esquemas, puedo emitir un comando de chat que le dice al Structure Block del juego que busque el esquema correcto para el estado actual de la pantalla (cada fotograma individual debe tener un nombre de archivo único, lo que complica un poco las cosas). Una vez hecho esto, solo hay que pegar repetidamente el esquema activo en el mundo con un pequeño circuito de redstone, ¡y ya tienes una pantalla que funciona!

Conclusión

Al final del día, tienes un Stream Deck prácticamente usable, ¡pero en Minecraft! Aunque mi script está diseñado principalmente para ejecutarse solo en mi máquina, no veo ninguna razón por la que no se pueda mejorar para ejecutarse en servidores multijugador. El prototipo original de este proyecto se ejecutó en una instancia de Stream Deck Mobile en Windows Subsystem for Android, lo que técnicamente significa que se podría ejecutar todo en un dispositivo completamente independiente o en una máquina virtual. Si eso es una buena idea es otra cuestión, por supuesto... pero no dejes que preocupaciones como la «practicidad» te impidan probarlo :)

Dato curioso: el logotipo de Stream Deck que aparece en la parte superior se creó utilizando 24 mapas. La estructura del logotipo se encuentra en el vacío final, pero es tan grande que se extiende casi desde un extremo al otro del vacío.

unnamed (1)

Echa un vistazo a más trabajos de TheAppleFreak:

REGISTRO DE PRODUCTOS