Last updated:
La nostra community non smette mai di stupirci con creazioni ingegnose, creative e decisamente divertenti, e questa potrebbe proprio aggiudicarsi il primo premio (o il primo blocco?). Di recente abbiamo parlato di come Stream Deck stia comparendo in sempre più posti: con i moduli Stream Deck e Virtual Stream Deck sul tuo computer. E adesso? È arrivato anche su Minecraft.
Circa un mese fa, uno specialista della community Elgato ha pubblicato su Twitter un Minecraft build di uno Stream Deck a 15 tasti. Posseduto dallo spirito della cordiale competizione, ho iniziato a cercare di capire come trasformare questo concetto in una realtà funzionale. Anche se quello che ho realizzato non è perfetto, e tende a rompersi se lo si guarda nel modo sbagliato, sono più che soddisfatto del risultato!
Questa build è alimentata da un Virtual Stream Deck a sei tasti nascosto di nascosto sul mio altro monitor, con uno script Node.js molto hackerato che gestisce le parti difficili della pressione dei pulsanti SD in base a ciò che è attivato nel gioco, oltre a convertire il display VSD in qualcosa che può essere rappresentato in Minecraft.
Per quanto riguarda Minecraft, il redstone utilizzato è estremamente semplice. Dietro lo schermo, ogni pulsante utilizza una coppia di sensori sculk calibrati (sensori audio integrati nel gioco) per monitorare gli eventi in ingresso, che in questo caso sono palle di neve che cadono sul pulsante (intensità del segnale 2) o il suono di una carica di vento che esplode (intensità del segnale 15). Ogni coppia conduce a un singolo blocco di comando che, quando attivato, inserisce da 1 a 8 spazi nella chat del gioco. I pulsanti pagina indietro/avanti ai lati hanno anche un piccolo circuito aggiuntivo che controlla le spie luminose, ma per il resto funzionano in modo identico.
La maggior parte della magia avviene nello script Node.js personalizzato che ho scritto per questo progetto. All'avvio iniziale del programma, ottengo alcune informazioni speciali che mi consentono di selezionare una finestra Virtual Stream Deck (VSD) o la finestra del gioco Minecraft, quindi ottengo anche le coordinate della finestra VSD. Una volta completata la configurazione, vengono eseguiti due loop in tandem: input e visualizzazione.
La metà di input del programma è la più semplice da comprendere. Ogni volta che Minecraft viene eseguito, mantiene un file di log delle cose più importanti che accadono in un file di testo chiamato latest.log. È importante sottolineare che questo file di log include anche tutti i messaggi ricevuti nella chat, il che significa che con un po' di codice intelligente possiamo guardare solo le voci del log che contengono i nostri messaggi composti solo da spazi. Quando arriva un messaggio di questo tipo, contiamo il numero di spazi e lo utilizziamo per determinare quale pulsante premere. Ho ordinato i pulsanti dall'alto verso il basso e da sinistra a destra (ci sono anche due pulsanti aggiuntivi per tornare indietro/avanzare di pagina). Una volta selezionato il pulsante, utilizzo una libreria di automazione desktop specializzata per spostare molto rapidamente il mouse fuori dalla finestra di Minecraft, cliccare sul pulsante corrispondente sul Virtual Stream Deck che alimenta tutto e riportarlo al controllo di Minecraft (è necessario premere F3+P per far funzionare tutto; altrimenti, il gioco si metterà in pausa quando perderà il focus). Se non si sposta il mouse quando avvengono questi movimenti, il tutto risulta piuttosto fluido! Se lo sei, tende a rompersi in modo orribile lol
Questo funziona bene per premere i pulsanti, ma la vera magia dello Stream Deck è che sotto ogni tasto c'è un display programmabile. Come si fa a mostrarlo all'interno di Minecraft? La soluzione che ho scelto forse non è la più elegante possibile, ma funziona, ed è questo che mi interessa! Quattro volte al secondo, lo script cattura uno screenshot della finestra VSD. Supponendo che i pulsanti abbiano una dimensione specifica (la dimensione predefinita di 52x52 px funziona abbastanza bene), ritaglia lo screenshot alla dimensione di un pulsante, quindi lo ridimensiona a 8x8 px. Una volta fatto questo, passa su ogni pixel dell'immagine ritagliata e li elabora con un codice intelligente per capire quale blocco corrisponde al colore più simile. (Mille grazie a kult0922 su GitHub, che ha creato un sito web che converte le immagini in pixel art di Minecraft e ha pubblicato il codice sorgente! Senza quel codice, questo progetto avrebbe richiesto molto più tempo). Basta assicurarsi di ripeterel'operazione per gli altri cinque pulsanti.
Ottenere l'elenco dei blocchi necessari è un buon inizio, ma inserirli nel gioco è ancora un problema. Se hai un modo per eseguire i comandi della chat, potresti usare il comando /setblock più volte per aggiornare ogni pixel uno alla volta, ma è molto lento e poco efficiente. Uno strumento migliore da utilizzare sarebbe Structure Block, uno strumento del gioco vanilla che, tra le altre cose, consente di inserire nel mondo di gioco "schemi" predefiniti di strutture. Ho capito come fare in modo che il mio script crei schemi nel modo previsto da Minecraft e, una volta salvati nella cartella degli schemi, posso inviare un comando di chat che dice al Blocco struttura nel gioco di cercare lo schema corretto per lo stato attuale dello schermo (ogni singolo fotogramma deve avere un nome file univoco, il che complica un po' le cose). Una volta fatto questo, basta un piccolo circuito redstone che incolla ripetutamente lo schema attivo nel mondo e si ottiene uno schermo funzionante!
Alla fine della giornata, avrete uno Stream Deck quasi completamente funzionante, ma in Minecraft! Anche se il mio script è stato progettato principalmente per funzionare solo sul mio computer, non vedo alcun motivo per cui non possa essere migliorato per funzionare anche su server multiplayer! Il prototipo originale di questo progetto funzionava su un'istanza di Stream Deck Mobile in esecuzione su Windows Subsystem for Android, il che significa che tecnicamente potresti eseguire tutto su un dispositivo completamente separato o in una macchina virtuale. Che sia una buona idea è tutta un'altra questione, ovviamente... ma non lasciare che preoccupazioni come la "praticità" ti impediscano di divertirti :)
Curiosità: il logo Stream Deck in alto è stato realizzato utilizzando 24 mappe. La struttura del logo si trova nel vuoto finale, ma è così grande che si estende quasi da un'estremità all'altra del vuoto.
Scopri altri lavori di TheAppleFreak:
REGISTRAZIONE DEL PRODOTTO