Mon Tetris Parfait
De quoi s’agit-il
Tetris est un jeu légendaire et l’un de ceux que j’apprécie énormément. J’adore vraiment ce jeu et j’aime y jouer. C’est un excellent moyen de réduire le stress. Pour un projet amusant de week-end, j’ai décidé de créer le jeu en tant que jeu/application pour navigateur conçu à la fois pour le bureau et le mobile, en utilisant les principes du codage d’ambiance. La version mobile de cette itération s’est inspirée de Play-Tetris, qui propose une configuration mobile vraiment agréable avec ses commandes basées sur les balayages. Découvrez et jouez à mon implémentation de Tetris ici, c’est ce que je considère être la version la plus “parfaite” de Tetris.
Au-delà du code
Je n’ai pas entrepris de créer un clone de Tetris comme projet de portfolio ou pour apprendre quelque chose de nouveau. Je l’ai construit parce que j’en avais réellement besoin. Quand je suis stressé, que ce soit une semaine difficile au travail ou simplement la vie qui s’accumule, Tetris est l’une des rares choses saines qui m’aide vraiment à me recentrer. Quand je suis stressé, j’ai tendance à beaucoup manger, ce qui s’accumule avec le temps, donc avoir quelque chose qui fonctionne sans inconvénients est important pour moi. Juste 10 à 30 minutes à faire tomber des blocs et mon cerveau a l’impression d’avoir été un peu nettoyé. Ce n’est pas juste un défoulement occasionnel pour moi, c’est une manière d’avoir quelque chose de simple et concentré dans quoi verser ce stress. Il existe même des recherches intéressantes montrant que Tetris peut affecter la façon dont le cerveau gère les souvenirs intrusifs et le stress, par exemple dans des expériences de film traumatique, chez des personnes traitées après de vrais accidents, et comme complément à une thérapie avec des changements cérébraux mesurables. Je n’essaie pas de transformer ce jeu en traitement médical, mais c’est intéressant de voir qu’il pourrait y avoir une vraie science qui soutient ce que je ressens déjà : Tetris peut réellement aider les gens à gérer le stress.
J’ai donc cherché une bonne version de Tetris à jouer, et le problème était que rien n’existait vraiment qui corresponde à la façon dont je voulais jouer. Les applications mobiles sur l’App Store iOS sont pleines de publicités et de microtransactions. Les versions web étaient saccadées ou donnaient une mauvaise impression sur un téléphone. La version NES classique est géniale mais nécessite un émulateur et du matériel supplémentaire. J’ai même acheté une Miyoo Mini en pensant que cela résoudrait le problème, et tout ce que j’ai fini par faire a été de porter un deuxième appareil juste pour jouer à Tetris. À un moment donné, j’ai réalisé que je passais plus de temps à chercher la bonne version qu’il n’en faudrait pour simplement en créer une.
Avec les navigateurs modernes, des outils LLM comme Claude Code, et des workflows comme le codage d’ambiance, il m’a finalement semblé le bon moment pour construire le Tetris que je voulais moi-même. Rapide, minimal, sans publicités, sans comptes, sans boutique d’apps. Juste un jeu pour navigateur qui fonctionne sur mon téléphone et mon ordinateur portable et que je contrôle entièrement. En environ une journée j’avais une version fonctionnelle, et après environ une semaine de travail par intermittence pour la rendre robuste et obtenir la bonne sensation sur bureau et mobile, j’en étais satisfait.
Je le partage parce que si cela aide ne serait-ce qu’une autre personne à déstresser de la même manière que cela m’aide, cela me rendrait vraiment heureux. C’est une petite chose, mais parfois une petite chose est exactement ce dont vous avez besoin.
Fonctionnalités
- Plateau Tetris classique 10x20
- Contrôles complets au clavier sur ordinateur et commandes gestuelles tactiles sur mobile
- Générateur de pièces standard à sac de sept
- Réservation de pièce et aperçu des pièces suivantes
- Projection de la pièce fantôme montrant où les pièces atterriront
- Courbe de vitesse basée sur le niveau avec délai de verrouillage dynamique
- Suivi du score, des lignes, du niveau et du meilleur score persistant dans le stockage local
- Comptage de points pour descente douce et descente instantanée
- Menu en jeu avec reprendre, recommencer, quitter, couper la musique/effets sonores et lien vers le code source
- Animation de flash lors de la suppression de ligne avec effet sonore
- Prise en charge des zones sûres iOS (Dynamic Island, encoche, indicateur d’accueil)
- Prise en charge hors ligne via Service Worker (fonctionne sans Internet après la première visite)
- Installable en tant que PWA (ajouter à l’écran d’accueil sur iOS/Android pour une expérience type application)
Contrôles
Ordinateur (Clavier)
| Action | Keys |
|---|---|
| Déplacer | ← → or A D |
| Descente douce | ↓ or S |
| Descente instantanée | Space |
| Rotation horaire | ↑ W X |
| Rotation antihoraire | Z |
| Mettre en réserve | C or LShift |
| Menu | Esc or M |
| Code source | G (écran titre) |
Mobile (Tactile)
| Action | Gesture |
|---|---|
| Déplacer | Swipe left / right |
| Descente douce | Hold and drag down |
| Descente instantanée | Quick flick down |
| Rotation horaire | Tap |
| Mettre en réserve | Quick flick up |
Courbe de difficulté
La courbe de vitesse et le délai de verrouillage dans cette version ont été ajustés en s’appuyant sur des recherches sur la façon dont les jeux Tetris classiques et modernes gèrent la progression de la difficulté. Dans le [Tetris NES] original (https://en.wikipedia.org/wiki/Tetris_(NES_video_game)), la gravité atteint une ligne par frame au niveau 29, ce qui est devenu le fameux « écran de fin » où le jeu devient effectivement injouable pour la plupart des humains. Ce n’était pas vraiment une fin conçue, c’était plutôt un effet secondaire du matériel et du fait que le DAS (Delayed Auto Shift) était trop lent pour suivre la vitesse de chute. Willis Gibson l’a prouvé en 2024 lorsqu’il l’a dépassé et a fait crasher le jeu au niveau 157.
Les jeux modernes comme TGM (Tetris: The Grand Master) ont résolu cela différemment. Plutôt que d’augmenter simplement la chute des pièces jusqu’à ce que le jeu se casse, TGM plafonne la gravité à 20G (descente instantanée) puis resserre d’autres fenêtres temporelles comme le délai de verrouillage et le DAS pour augmenter la difficulté. La norme du Tetris Guideline utilise un délai de verrouillage de 500 ms avec jusqu’à 15 réinitialisations de mouvement, ce que suit cette version. Les recherches sur le TGM2 Death mode et le TGM3 Shirase ont montré que le plancher pratique pour le jeu compétitif se situe autour de 250 ms de délai de verrouillage avec un DAS rapide, tandis que tout ce qui est en dessous de 133 ms relève du domaine des spécialistes.
Sur la base de tout cela, la courbe de vitesse ici plafonne la gravité à 33 ms par ligne (similaire aux niveaux 19 à 28 du NES) au lieu d’aller vers la descente instantanée, et le DAS évolue de 170 ms à 100 ms aux niveaux supérieurs afin que vous puissiez traverser le plateau pendant le délai de verrouillage. L’objectif était de faire en sorte que les niveaux élevés paraissent brutalement rapides mais toujours équitables, plus proches de la façon dont Tetris 99 et TGM gèrent la difficulté de fin de partie plutôt que l’approche du NES original consistant simplement à laisser la vitesse brute dépasser vos entrées.
Sous le capot
- Conception responsive optimisée pour le bureau et le mobile (portrait)
- Sprites de blocs et arrière-plan de grille pré-rendus pour la performance
- Utilise le Super Rotation System (SRS) pour les kicks muraux lors de la rotation des pièces
- Détection de gestes tactiles basée sur la vélocité pour une distinction fiable entre flick et glissement
- Système de temporisation basé sur le niveau pour la vitesse de gravité et le délai de verrouillage
- Meilleurs scores et paramètres audio persistés avec
localStorage - Source de la musique de fond NmCCQxVBfyM
- Source de l’effet sonore de suppression de ligne UMViM2tHrOk
- Le projet est entièrement open-source sous la licence MIT
- Construit avec les outils d’IA suivants :
- Claude Code CLI - codage/développement
- Gemini CLI - codage/développement
- Cha CLI - codage et rédaction
- xAI Grok - logos et icônes
- Perplexity - recherche de bugs
- Google Search - recherche de SVGs et autres ressources
- YouTube + yt-dlp - récupération d’extraits audio
- FFmpeg - édition de fichiers audio
Réflexions finales
C’était l’un de ces projets où la motivation n’était pas technique, mais personnelle. Je voulais simplement une version de Tetris qui fonctionne comme je le souhaitais, sans publicités, sans matériel supplémentaire, et sans dépendre de l’application de quelqu’un d’autre qui pourrait disparaître ou changer à tout moment. Le fait d’avoir pu passer de l’idée à un jeu abouti en environ une semaine de travail par intermittence en utilisant des outils d’IA modernes et la programmation « vibe » en dit long sur l’état actuel du développement logiciel.
J’utilise cette version presque quotidiennement depuis que je l’ai créée, et elle fait toujours exactement ce dont j’ai besoin. Elle m’aide à m’éloigner de ce qui me stresse, à me concentrer sur quelque chose de simple pendant quelques minutes, et à revenir l’esprit plus clair. Si vous l’essayez et qu’elle fait de même pour vous, c’est le meilleur résultat que je puisse espérer. Et si vous voulez en faire un fork, ajuster la courbe de vitesse, modifier les commandes, ou construire par-dessus, allez-y. Si vous trouvez un bug ou avez une suggestion, n’hésitez pas à ouvrir une issue sur le dépôt GitHub. C’est tout l’intérêt de le rendre open-source.