Mi Tetris Perfecto

Repositorio en GitHub del proyecto



Qué es esto

Tetris es un juego legendario y uno que disfruto mucho. Realmente me encanta el juego y disfruto jugarlo. Es un gran alivio para el estrés. Para un proyecto divertido de fin de semana, decidí construir el juego como una aplicación/web para navegador diseñada tanto para Escritorio como para Móvil, usando los principios de vibe coding. El lado móvil de esta versión se inspiró en Play-Tetris, que tiene una configuración móvil muy buena con controles basados en deslizamientos. Prueba y juega mi implementación de Tetris aquí, es lo que creo que es la versión más “perfecta” de Tetris.



jugabilidad de mi versión de Tetris, juégalo tú mismo aquí

Más allá del código

No me propuse crear un clon de Tetris como proyecto de portafolio o para aprender algo nuevo. Lo construí porque realmente lo necesitaba. Cuando estoy estresado, ya sea por una semana difícil en el trabajo o simplemente por la vida acumulándose, Tetris es una de las pocas cosas saludables que realmente me ayuda a reiniciar. Cuando estoy estresado tiendo a comer mucho, lo que se acumula con el tiempo, así que tener algo que funcione sin inconvenientes es algo muy importante para mí. Solo de 10 a 30 minutos de dejar caer bloques y mi cerebro se siente un poco más limpio. No es solo un desestrés casual para mí, es una forma de tener algo simple y enfocado en lo que verter ese estrés. Incluso hay investigaciones interesantes que muestran que Tetris puede afectar cómo el cerebro maneja recuerdos intrusivos y estrés, por ejemplo en experimentos con películas traumáticas, en personas tratadas tras accidentes reales, y como complemento a la terapia con cambios cerebrales medibles. No intento convertir este juego en un tratamiento médico, pero es interesante ver que podría haber ciencia real que respalde lo que ya siento: que Tetris genuinamente puede ayudar a las personas a lidiar con el estrés.

Así que fui a buscar una buena versión de Tetris para jugar, y el problema era que nada ahí afuera encajaba realmente con cómo quería jugar. Las aplicaciones móviles en la App Store de iOS están llenas de anuncios y microtransacciones. Las versiones web eran lentas o se sentían terribles en el teléfono. La versión clásica de NES es genial pero necesita un emulador y hardware adicional. Incluso compré una Miyoo Mini pensando que resolvería el problema, y todo lo que terminé haciendo fue llevar un segundo dispositivo solo para jugar Tetris. En algún momento me di cuenta de que estaba pasando más tiempo buscando la versión correcta de lo que me llevaría simplemente construir una.

Con los navegadores modernos, herramientas LLM como Claude Code, y flujos de trabajo como el vibe coding, finalmente se sintió el momento adecuado para construir el Tetris que quería yo mismo. Rápido, minimalista, sin anuncios, sin cuentas, sin tienda de aplicaciones. Solo un juego de navegador que funciona en mi teléfono y en mi portátil y que controlo por completo. En aproximadamente un día tuve una versión funcional, y después de alrededor de una semana de trabajo intermitente para hacerla robusta y conseguir la sensación correcta tanto en escritorio como en móvil, quedé satisfecho con ella.

Lo comparto porque si termina ayudando aunque sea a otra persona a desestresarse como me ayuda a mí, eso me haría muy feliz. Es una cosa pequeña, pero a veces una cosa pequeña es exactamente lo que necesitas.

Características

  • Tablero clásico de Tetris 10x20
  • Controles completos de teclado en Escritorio y controles por gestos táctiles en Móvil
  • Aleatorizador estándar de piezas de bolsa de siete
  • Pieza en reserva (hold) y vista previa de la siguiente pieza
  • Proyección de pieza fantasma que muestra dónde aterrizarán las piezas
  • Curva de velocidad basada en niveles con retardo de bloqueo dinámico
  • Seguimiento de puntuación, líneas, nivel y récord persistido en el almacenamiento local
  • Puntuación por descenso suave y descenso duro
  • Menú dentro del juego con reanudar, reiniciar, salir, silenciar música/Efectos de sonido y enlace al código fuente
  • Animación de destello al limpiar líneas con efecto sonoro
  • Soporte de área segura en iOS (Dynamic Island, muesca, indicador de inicio)
  • Soporte sin conexión mediante Service Worker (funciona sin internet después de la primera visita)
  • Instalable como PWA (añadir a la pantalla de inicio en iOS/Android para experiencia similar a una app)

Controles

Escritorio (Teclado)

Acción Teclas
Mover o A D
Descenso suave o S
Descenso duro Space
Rotar en el sentido de las agujas del reloj W X
Rotar en sentido antihorario Z
Reservar C o LShift
Menú Esc o M
Código Fuente G (pantalla de título)

Móvil (Táctil)

Acción Gesto
Mover Deslizar a la izquierda / derecha
Descenso suave Mantener y arrastrar hacia abajo
Descenso duro Golpe rápido hacia abajo
Rotar en sentido horario Tocar
Reservar Golpe rápido hacia arriba

Curva de dificultad

La curva de velocidad y el retardo de bloqueo en esta versión se ajustaron usando investigaciones sobre cómo los juegos de Tetris clásicos y modernos manejan la progresión de dificultad. En el Tetris de NES original, la gravedad alcanza una fila por fotograma en el nivel 29, lo que se convirtió en la famosa “pantalla de muerte” donde el juego se vuelve efectivamente injugable para la mayoría de las personas. Eso no fue realmente un final diseñado, fue más bien un efecto secundario del hardware y de cómo el DAS (Delayed Auto Shift) era demasiado lento para seguir el ritmo de la velocidad de caída. Willis Gibson lo demostró en 2024 cuando lo superó y hizo colapsar el juego en el nivel 157.



jugabilidad del clásico Tetris de NES de 1989 (fuente original)

Los juegos modernos como TGM (Tetris: The Grand Master) resolvieron esto de manera distinta. En lugar de simplemente hacer que las piezas caigan más rápido hasta que el juego se rompa, TGM limita la gravedad a 20G (caída instantánea) y luego estrecha otras ventanas de tiempo como el retardo de bloqueo y el DAS para aumentar la dificultad. El estándar Tetris Guideline usa 500 ms de retardo de bloqueo con hasta 15 reinicios de movimiento, que es lo que sigue esta versión. La investigación sobre el modo Death de TGM2 y TGM3 Shirase mostró que el piso práctico para el juego competitivo está alrededor de 250 ms de retardo de bloqueo con DAS rápido, mientras que cualquier cosa por debajo de 133 ms es territorio de especialistas.

Basándome en todo esto, la curva de velocidad aquí limita la gravedad a 33 ms por fila (similar a los niveles 19 a 28 de NES) en lugar de llegar a caída instantánea, y el DAS escala de 170 ms hasta 100 ms en niveles más altos para que puedas atravesar el tablero durante el retardo de bloqueo. El objetivo fue hacer que los niveles altos se sientan brutalmente rápidos pero aún justos, más cercanos a cómo Tetris 99 y TGM manejan la dificultad de final de partida en lugar del enfoque original de NES de simplemente dejar que la velocidad cruda supere tus entradas.

Bajo el capó

  • Diseño responsivo optimizado tanto para Escritorio como para Móvil (vertical)
  • Sprites de bloques pre-renderizados y fondo de cuadrícula para rendimiento
  • Usa el Super Rotation System (SRS) con wall kicks para la rotación de piezas
  • Detección de gestos táctiles basada en velocidad para distinguir de forma fiable entre golpe rápido y arrastre
  • Sistema de temporización basado en niveles para la velocidad de gravedad y el retardo de bloqueo
  • Récords y configuraciones de audio persistidos con localStorage
  • Fuente de la música de fondo NmCCQxVBfyM
  • Fuente del efecto de sonido de línea limpiada UMViM2tHrOk
  • El proyecto es completamente de código abierto bajo la Licencia MIT
  • Construido con las siguientes herramientas de IA:

Reflexiones finales

Este fue uno de esos proyectos en los que la motivación no fue técnica, sino personal. Solo quería una versión de Tetris que funcionara de la manera en que yo quería, sin anuncios, sin hardware adicional y sin depender de la aplicación de otra persona que pudiera desaparecer o cambiar en cualquier momento. El hecho de que pude pasar de la idea a un juego pulido en aproximadamente una semana de trabajo intermitente utilizando herramientas de IA modernas y programación vibe dice mucho sobre dónde estamos ahora mismo con el desarrollo de software.

He estado usando esta versión casi a diario desde que la construí, y aún hace exactamente lo que necesito que haga. Me ayuda a alejarme de lo que sea que me esté estresando, concentrarme en algo simple durante unos minutos y volver con la cabeza más clara. Si la pruebas y hace lo mismo por ti, ese es el mejor resultado que podría pedir. Y si quieres bifurcarla, ajustar la curva de velocidad, cambiar los controles o construir sobre ella, adelante. Si encuentras un error o tienes una sugerencia, siéntete libre de abrir un problema en el repositorio de GitHub. Ese es todo el sentido de hacerlo de código abierto.