How To

Minecraft rencontre Stream Deck : une construction Redstone entièrement fonctionnelle

Last updated:

  Cette page a été traduite automatiquement par DeepL. Switch to English

Notre communauté ne cesse de nous impressionner avec ses créations intelligentes, créatives et tout simplement amusantes, et celle-ci pourrait bien remporter la palme (ou le bloc ?). Récemment, nous avons évoqué la présence croissante de Stream Deck dans de nombreux endroits : avec les modules Stream Deck et Virtual Stream Deck sur votre ordinateur. Mais maintenant, il est également disponible dans Minecraft.

Inspiration

Il y a environ un mois, un spécialiste de la communauté Elgato a publié sur le compte Twitter d'Elgato une version Minecraft d'un Stream Deck à 15 touches. Pris par l'esprit de compétition amicale, j'ai commencé à réfléchir à la manière de transformer ce concept en une réalité fonctionnelle. Bien que le résultat soit loin d'être parfait et ait tendance à se casser si on le regarde de travers, je suis plus que satisfait du résultat !

Cette version est alimentée par un Virtual Stream Deck à six touches dissimulé sur mon autre moniteur, avec un script Node.js très rudimentaire qui gère les parties difficiles consistant à appuyer sur les boutons SD en fonction de ce qui est activé dans le jeu, ainsi que la conversion de l'affichage VSD en quelque chose qui peut être représenté dans Minecraft.

unnamed

Du côté Minecraft, le redstone utilisé est extrêmement simple. Derrière l'écran, chaque bouton utilise une paire de capteurs sculk calibrés (capteurs sonores intégrés au jeu) pour surveiller les événements entrants, qui dans ce cas sont soit des boules de neige atterrissant sur le bouton (intensité du signal 2), soit le bruit d'une charge de vent explosant (intensité du signal 15). Chaque paire est reliée à un seul bloc de commande qui, lorsqu'il est déclenché, insère entre 1 et 8 espaces dans le chat du jeu. Les boutons de retour/avance situés sur les côtés sont également équipés d'un petit circuit supplémentaire qui contrôle les voyants lumineux, mais leur fonctionnement est identique.

Que se passe-t-il dans mon script personnalisé ?

L'essentiel de la magie opère dans le script Node.js personnalisé que j'ai écrit pour ce projet. Au démarrage initial du programme, j'obtiens des informations spéciales qui me permettent de sélectionner soit une fenêtre Virtual Stream Deck (VSD), soit la fenêtre du jeu Minecraft, puis j'obtiens également les coordonnées de la fenêtre VSD. Une fois toute la configuration terminée, deux boucles s'exécutent en tandem : l'entrée et l'affichage.

La moitié « entrée » du programme est la plus simple à comprendre. Chaque fois que Minecraft s'exécute, il conserve un fichier journal des événements les plus importants dans un fichier texte nommé « latest.log ». Il est important de noter que ce fichier journal contient également tous les messages reçus dans le chat, ce qui signifie qu'avec un peu de code astucieux, nous pouvons consulter uniquement les entrées du journal qui contiennent nos messages composés uniquement d'espaces. Lorsqu'un tel message arrive, nous comptons le nombre d'espaces et utilisons ce nombre pour déterminer quel bouton appuyer. J'ai classé les boutons de haut en bas et de gauche à droite (il y a également deux boutons supplémentaires pour revenir en arrière ou avancer dans la page). Une fois le bouton sélectionné, j'utilise une bibliothèque d'automatisation de bureau spécialisée pour déplacer très rapidement la souris hors de la fenêtre Minecraft, cliquer sur le bouton correspondant sur le Virtual Stream Deck qui alimente tout, et la ramener vers les commandes de Minecraft (vous devez appuyer sur F3+P pour que cela fonctionne, sinon le jeu se mettra en pause lorsqu'il perdra le focus). Si vous ne bougez pas la souris pendant ces opérations, le résultat est assez fluide ! Si c'est le cas, ça a tendance à se casser très facilement lol

Cela permet d'appuyer correctement sur les boutons, mais la véritable magie du Stream Deck réside dans l'écran programmable situé sous chaque touche. Comment afficher cela dans Minecraft ? La solution que j'ai choisie n'est peut-être pas la plus élégante, mais elle fonctionne, et c'est ce qui m'importe ! Quatre fois par seconde, le script prend une capture d'écran de la fenêtre VSD. En supposant que les boutons ont une taille spécifique (la taille par défaut de 52x52 px fonctionne très bien), il recadre la capture d'écran à la taille d'un bouton, puis la redimensionne à 8x8 px. Une fois cela fait, il passe en revue chaque pixel de l'image recadrée et les soumet à un code astucieux pour déterminer quel bloc correspond le mieux à sa couleur. (Un grand merci à kult0922 sur GitHub, qui a créé un site web qui convertit les images en pixel art Minecraft et en a publié le code source ! Sans ce code, ce projet aurait probablement pris beaucoup plus de temps à réaliser). Il suffit de répéter l'opération pour les cinq autres boutons.

Obtenir la liste des blocs dont vous avez besoin est une bonne étape, mais les intégrer dans le jeu reste un problème. Si vous disposez d'un moyen d'exécuter des commandes de chat, vous pouvez utiliser la commande /setblock à plusieurs reprises pour mettre à jour chaque pixel un par un, mais cela est très lent et très inefficace. Un meilleur outil serait le Structure Block, un outil du jeu vanilla qui, entre autres, vous permet de placer des « schémas » prédéfinis de structures dans le monde du jeu. J'ai trouvé comment faire en sorte que mon script crée des schémas conformes aux attentes de Minecraft, et une fois qu'ils sont enregistrés dans le dossier des schémas, je peux lancer une commande de chat qui indique au bloc de structure dans le jeu de rechercher le schéma correspondant à l'état actuel de l'écran (chaque image individuelle doit avoir un nom de fichier unique, ce qui complique un peu les choses). Une fois cela fait, il suffit d'un petit circuit redstone qui colle en boucle le schéma actif dans le monde, et vous obtenez un écran qui fonctionne !

Conclusion

Au final, vous obtenez un Stream Deck presque entièrement fonctionnel, mais dans Minecraft ! Bien que mon script soit principalement conçu pour fonctionner sur ma machine uniquement, je ne vois aucune raison pour qu'il ne puisse pas être amélioré afin de fonctionner sur des serveurs multijoueurs ! Le prototype original de ce projet fonctionnait en fait sur une instance de Stream Deck Mobile exécutée dans le sous-système Windows pour Android, ce qui signifie techniquement que vous pourriez tout exécuter sur un appareil complètement séparé ou dans une machine virtuelle. Que ce soit une bonne idée ou non est une toute autre question, bien sûr... mais ne laissez pas des considérations telles que la « praticité » vous empêcher de vous amuser :)

Anecdote amusante : le logo Stream Deck en haut a été créé à partir de 24 cartes. La structure du logo se trouve dans le vide final, mais elle est si grande qu'elle s'étend presque d'un bout à l'autre du vide.

unnamed (1)

Découvrez d'autres travaux de TheAppleFreak :

PRODUITS DANS L'ARTICLE