While true: learn() mi promuove in Machine Learning ma avrebbe dovuto bocciarmi | Backlog
Backlog è la rubrica in cui chiacchieriamo fuori tempo massimo di giochi che abbiamo recuperato nella nostra lotta infinita contro il cumulo di arretrati. Sono quei giochi troppo recenti per poter essere ammessi nell'ospizio ma già troppo vecchi perché possa ancora interessare a qualcuno una recensione classica.
While true: learn() è un puzzle game a tema machine learning realizzato da Luden.io e pubblicato da Nival per PC su Steam al prezzo di 9,99€ a gennaio di quest'anno, dopo circa nove mesi di Accesso Anticipato. Chi mi conosce sa che i puzzle game in cui bisogna sfruttare la logica dei linguaggi di programmazione mi piacciono molto. Per capirci, i prodotti Zachtronics, SpaceChem in testa, sono fra i miei giochi preferiti degli ultimi vent’anni, non solo grazie a un level design raffinato, vario e mai banale ma anche, e soprattutto, per la libertà lasciata al giocatore in sede risolutoria.
Se avete letto la mia anteprima di Gladiabots (trovate invece qui la recensione), l'interfaccia di While true: learn() vi apparirà subito piuttosto familiare. Anche in questo caso, infatti, ci troviamo di fronte a un gioco di programmazione visiva con "blocchi logici" da collegare, ma al posto di scontri fra team di robot, qui, il tema sarà il "machine learning". A spingere il programmatore protagonista del gioco allo studio di questa materia sarà... il suo gatto, che un giorno lo sorprenderà, prendendo possesso della tastiera del PC e risolvendo un problema su cui lo sprovveduto coder si era arenato. La trama del gioco vede quindi il programmatore intento a escogitare modi per riuscire a comunicare col proprio gatto, al fine di poter attingere alla sua apparente superiore abilità, e per farlo, decide proprio di impiegare tecniche di machine learning.
Ma cos'è questo misterioso "apprendimento automatico"? Scopriamolo insieme su Wikipedia:
"L'apprendimento automatico (noto anche come machine learning) è una branca dell'intelligenza artificiale ... che utilizza metodi statistici per migliorare progressivamente la performance di un algoritmo nell'identificare pattern nei dati." Questa definizione sarà utile per capire alcuni aspetti del perché While true: learn() mi ha lasciato un po' perplesso.
Dopo aver completato la campagna principale di While true: learn(), sono rimasto piuttosto interdetto: non che io non abbia dovuto pensare "per niente" durante i numerosi livelli del gioco, ma devo dire di non aver mai provato, nemmeno nell'ultimo livello, quel senso di soddisfazione pura classico dei giochi Zachtronics (o anche di puzzle game più riusciti, come Baba is You). In quasi tutti i livelli di While true: learn(), mi è bastato collegare i nodi logici in due o tre modi diversi per ottenere almeno la medaglia di bronzo. Certo, per ottenere la medaglia d'oro bisogna spremersi le meningi un po' di più, ma da un puzzle game basato sulla programmazione, mi sarei aspettato di dover faticare molto di più, soprattutto per completare i livelli avanzati. Oltretutto, la mancanza di sfida non è l'unico problema del level design di While true: learn(): nonostante le premesse dei vari incarichi ricevuti via e-mail dal protagonista risultino piuttosto varie e caratterizzate da un humour quasi sempre azzeccato, tale apparente poliedricità viene del tutto persa non appena ci si trova di fronte agli input da gestire e agli output da creare. Si tratta quasi sempre di smistare lettere, forme e colori, in maniera sempre più efficiente e utilizzando concetti di machine learning in teoria sempre più sofisticati.
Il problema è che al giocatore non è richiesta alcuna comprensione di tali meccanismi: ho completato il gioco afferrando probabilmente l'1% dei concetti soggiacenti ai vari livelli, eppure completandoli lo stesso. Nonostante While true: learn() faccia di tutto per spingere a farsi una cultura sull'argomento, con tanto di link a YouTube e a risorse online relative al machine learning, il fatto che i livelli si risolvano in maniera troppo simile fra loro, senza la necessità reale di "imparare" qualcosa di nuovo, rappresenta una dissonanza piuttosto grave, per un gioco di questo genere. Inoltre, alcuni concetti di machine learning mal si sposano, a mio avviso, con la giocabilità di un puzzle game: un esempio per tutti è costituito dalla necessità di "addestrare" alcuni nodi per far raggiungere loro una maggiore efficienza. All'atto pratico, nonostante questo "training" sia ovviamente parte integrante (e sostanziale!) del machine learning nel mondo reale, in While true: learn() si traduce unicamente nel far fare dei cicli a vuoto alla propria macchina, senza alcuna abilità richiesta, se non quella di avere la pazienza di aspettare un paio di minuti. Controversa anche la possibilità di applicare upgrade alle proprie apparecchiature per renderle più veloci, dal momento che la cosa rende ancora più semplice il completamento dei vari stage. Per questi motivi, e considerata la ripetitività dei problemi proposti, non ho avuto la spinta necessaria a provare la maggior parte dei pur presenti incarichi secondari.
Tuttavia, musica, interfaccia e menu sono molto gradevoli e aiutano a "sopportare" la relativa inconsistenza del gameplay. Se volete un puzzle game basato sulla programmazione con un'interfaccia simile a quella di While true: learn(), vi consiglio Gladiabots, che risulta molto più interessante e stimolante (nonché dotato di un multiplayer da "ancora una e poi smetto"), mentre se siete interessati al machine learning... beh, il mio consiglio è quello di documentarvi su YouTube, magari proprio sui link consigliati dal team di While true: learn(). Se, invece, è la programmazione pura a stimolarvi, il gioco che mi sento di consigliarvi è Shenzhen I/O di Zachtronics, simile a While true: learn() per quel che riguarda la premessa (programmatore al lavoro con livelli dispensati sotto forma di e-mail ricevute), ma decisamente più vario, completo e stimolante.
Ho completato la campagna principale di While true: learn() in circa tre orette, apprezzandone abbastanza lo stile, meno il gameplay in senso stretto. Nel corso della realizzazione di questo Backlog, ho nell'ordine 1) aspettato una patch che non ha cambiato di una virgola quelli che avevo già riscontrato come problemi principali del gioco, 2) rischiato di finire al pronto soccorso, 3) perso l’accesso a Internet (che dopo un mese non ho ancora riconquistato, sto da mobile, mannaggia ai gatti programmatori), 4) rischiato di finire al pronto soccorso di nuovo, 5) acquisito un anno di età in più, cosa che mi rende uno splendido ottantaseienne, e pure bravissimo in machine learning, almeno secondo While true: learn().