Il mio Tetris perfetto

Repository GitHub del progetto



Che cos’è questo

Tetris è un gioco leggendario e uno che mi piace moltissimo. Amo davvero il gioco e mi diverto a giocarci. È un ottimo alleviatore di stress. Per un divertente progetto nel weekend, ho deciso di costruire il gioco come applicazione/browser progettata sia per Desktop che per Mobile, usando i principi del vibe coding. La parte mobile di questa versione è stata ispirata da Play-Tetris, che ha una configurazione mobile davvero ottima con i suoi controlli basati sullo swipe. Dai un’occhiata e prova la mia implementazione di Tetris qui, è quella che penso sia la versione più “perfetta” di Tetris.



gameplay della mia versione di Tetris, provala tu stesso qui

Oltre il codice

Non ho iniziato con l’intento di creare un clone di Tetris come progetto da portfolio o per imparare qualcosa di nuovo. L’ho costruito perché ne avevo realmente bisogno. Quando sono stressato, sia per una settimana difficile al lavoro sia per la vita che si accumula, Tetris è una delle poche cose sane che mi aiutano davvero a resettarmi. Quando sono stressato tendo a mangiare molto, cosa che si accumula nel tempo, quindi avere qualcosa che funzioni senza effetti collaterali è molto importante per me. Solo 10-30 minuti a far cadere blocchi e la mia mente sembra un po’ ripulita. Non è solo un rilassamento casuale per me, è un modo per avere qualcosa di semplice e focalizzato in cui riversare quello stress. Ci sono persino delle ricerche interessanti che mostrano come Tetris possa influenzare il modo in cui il cervello gestisce ricordi intrusivi e stress, per esempio negli esperimenti con film traumatici, in persone trattate dopo incidenti reali, e come supplemento alla terapia con cambiamenti cerebrali misurabili. Non sto cercando di trasformare questo gioco in un trattamento medico, ma è interessante vedere che potrebbe esserci della scienza reale a supportare ciò che già sento: che Tetris può davvero aiutare le persone a gestire lo stress.

Quindi ho cercato una buona versione di Tetris da giocare, e il problema era che nulla là fuori si adattava veramente a come volevo giocare. Le app mobile sull’App Store iOS sono piene di pubblicità e microtransazioni. Le versioni web erano laggose o davano una brutta esperienza su telefono. La classica versione NES è ottima ma richiede un emulatore e hardware aggiuntivo. Ho persino comprato una Miyoo Mini pensando che avrebbe risolto il problema, e tutto quello che ho fatto è stato portarmi dietro un secondo dispositivo solo per giocare a Tetris. A un certo punto ho capito che stavo passando più tempo a cercare la versione giusta di quanto sarebbe costato semplicemente costruirne una.

Con i browser moderni, strumenti LLM come Claude Code e workflow come il vibe coding, alla fine è sembrato il momento giusto per costruire il Tetris che volevo io. Veloce, minimale, senza pubblicità, senza account, senza store. Solo un gioco nel browser che funziona sul mio telefono e sul mio portatile e che controllo completamente. In circa un giorno avevo una versione funzionante, e dopo circa una settimana di lavoro intermittente per renderla robusta e ottenere la sensazione giusta sia su desktop che su mobile, ne sono stato soddisfatto.

Lo condivido perché se alla fine aiuta anche solo un’altra persona a de-stressarsi come aiuta me, questo mi renderebbe davvero felice. È una cosa piccola, ma a volte una cosa piccola è esattamente ciò di cui hai bisogno.

Funzionalità

  • Classica griglia Tetris 10x20
  • Controlli completi da tastiera su Desktop e controlli touch con gesti su Mobile
  • Randomizzatore a sette sacche per i pezzi
  • Possibilità di tenere un pezzo in riserva e anteprime dei prossimi pezzi
  • Proiezione del pezzo fantasma che mostra dove i pezzi atterreranno
  • Curva di velocità basata sul livello con ritardo di blocco dinamico
  • Punteggio, linee, livello e record salvati nel local storage
  • Punteggio per discesa morbida e discesa istantanea
  • Menu di gioco con riprendi, riavvia, esci, disattiva musica/effecti sonori e link al codice sorgente
  • Animazione flash di eliminazione linea con effetto sonoro
  • Supporto area sicura iOS (Dynamic Island, tacca, indicatore home)
  • Supporto offline tramite Service Worker (funziona senza internet dopo la prima visita)
  • Installabile come PWA (aggiungi alla schermata principale su iOS/Android per un’esperienza simile a un’app)

Controlli

Desktop (Tastiera)

Azione Tasti
Muovi o A D
Discesa morbida o S
Discesa istantanea Space
Ruota in senso orario W X
Ruota in senso antiorario Z
Metti in riserva C o LShift
Menu Esc o M
Codice sorgente G (schermata titolo)

Mobile (Touch)

Azione Gesto
Muovi Scorri a sinistra / destra
Discesa morbida Tieni premuto e trascina verso il basso
Discesa istantanea Colpo rapido verso il basso
Ruota in senso orario Tocca
Metti in riserva Colpo rapido verso l’alto

Curva di difficoltà

La curva di velocità e il ritardo di blocco in questa versione sono stati regolati usando ricerche su come i giochi Tetris classici e moderni gestiscono la progressione della difficoltà. Nell’originale NES Tetris, la gravità raggiunge una riga per frame al livello 29, il che è diventato il famoso “kill screen” dove il gioco diventa effettivamente impossibile da giocare per la maggior parte degli esseri umani. Quello non era davvero un finale progettato, era più un effetto collaterale dell’hardware e di come il DAS (Delayed Auto Shift) fosse troppo lento per tenere il passo con la velocità di caduta. Willis Gibson lo ha dimostrato nel 2024 quando lo ha superato e ha fatto crashare il gioco al livello 157.



gameplay del classico Tetris NES 1989 (fonte originale)

Giochi moderni come TGM (Tetris: The Grand Master) hanno risolto questo in modo diverso. Invece di aumentare semplicemente la velocità di caduta finché il gioco si rompe, TGM limita la gravità a 20G (caduta istantanea) e poi stringe altre finestre temporali come il ritardo di blocco e il DAS per aumentare la difficoltà. Lo standard del Tetris Guideline usa 500ms di ritardo di blocco con fino a 15 reset di movimento, a cui questa versione si attiene. Le ricerche su TGM2 Death mode e TGM3 Shirase hanno mostrato che il limite pratico per il gioco competitivo è intorno ai 250ms di ritardo di blocco con DAS veloce, mentre qualsiasi valore sotto i 133ms è territorio di specialisti.

Basandomi su tutto questo, la curva di velocità qui limita la gravità a 33ms per riga (simile ai livelli 19-28 del NES) invece di arrivare alla caduta istantanea, e il DAS scala da 170ms fino a 100ms ai livelli più alti così da permetterti di attraversare la griglia durante il ritardo di blocco. L’obiettivo era far sentire i livelli alti brutalmente veloci ma comunque equi, più vicini a come Tetris 99 e TGM gestiscono la difficoltà di endgame piuttosto che l’approccio originale del NES di lasciare semplicemente la velocità grezza superare i tuoi input.

Sotto il cofano

  • Design reattivo ottimizzato sia per Desktop che per Mobile (orientamento verticale)
  • Sprite dei blocchi prerenderizzati e sfondo della griglia per le prestazioni
  • Usa rimbalzi murali in stile Super Rotation System (SRS) per la rotazione dei pezzi
  • Rilevamento dei gesti touch basato sulla velocità per distinguere in modo affidabile scatti da trascinamenti
  • Sistema temporale basato sul livello per la velocità di gravità e il ritardo di blocco
  • Punteggi migliori e impostazioni audio salvati con localStorage
  • Fonte della musica di sottofondo NmCCQxVBfyM
  • Fonte effetto sonoro di eliminazione linea UMViM2tHrOk
  • Il progetto è completamente open-source sotto la Licenza MIT
  • Realizzato con i seguenti strumenti di IA:

Considerazioni finali

Questo è stato uno di quei progetti in cui la motivazione non era tecnica, ma personale. Volevo solo una versione di Tetris che funzionasse nel modo in cui la volevo io, senza pubblicità, senza hardware aggiuntivo e senza dipendere dall’app di qualcun altro che potrebbe scomparire o cambiare in qualsiasi momento. Il fatto che sia riuscito a passare dall’idea a un gioco rifinito in circa una settimana di lavoro intermittente utilizzando strumenti di IA moderni e programmazione vibe dice molto su dove ci troviamo attualmente con lo sviluppo del software.

La uso quasi quotidianamente da quando l’ho costruita, e continua a fare esattamente ciò di cui ho bisogno. Mi aiuta a staccare da qualunque cosa mi stia stressando, concentrarmi su qualcosa di semplice per qualche minuto e tornare con la mente più lucida. Se la provi e fa lo stesso anche per te, è il miglior risultato che potrei chiedere. E se vuoi creare un fork, modificare la curva di velocità, cambiare i comandi o sviluppare qualcosa sopra, fallo pure. Se trovi un bug o hai un suggerimento, sentiti libero di aprire una segnalazione sul repository GitHub. Questo è tutto lo scopo del renderlo a sorgente aperta.