Mobile Game — Tetris-Style Puzzle

Block Drop Play

Juego estilo Tetris con motor profesional: SRS completo con wall kicks, T-Spin detection, Perfect Clear, scoring oficial, 5 modos de juego, duelos asincrónicos, misiones por partida y diseño arcade/neon. Parte del ecosistema multi-game compartido.

Publicada en App Storev1.0.0 — iOS + Android

7

Tetrominós (SRS)

10×20

Tablero

5

Modos de juego

8

Temas visuales

22

Tipos de sonido

v1.0.0

Versión

Funcionalidades

Características principales

Core Gameplay

Motor Tetris Profesional

Gravedad real-time, spawn en zona oculta, lock delay, ghost piece, T-Spin detection (3-corner rule), Perfect Clear, combo system.

Rotación SRS con Wall Kicks

Super Rotation System completo con tablas diferenciadas para pieza I (4×4) y JLSTZ (3×3). 4 tests de kick por rotación.

Sistema 7-Bag

Cada uno de los 7 tetrominós aparece exactamente una vez cada 7 piezas. Elimina sequías injustas.

Controles Táctiles Optimizados

Zonas de tap para movimiento y rotación, swipe para drops, hold button. DAS configurable en 3 velocidades.

Modos de Juego

Classic

Velocidad incremental por niveles. Cada 10 líneas sube de nivel. Sin límite de tiempo.

Contrarreloj (60s/90s/120s)

3 variantes de tiempo. Mayor puntaje antes de que se acabe el reloj.

Zen (Premium)

Sin game over, velocidad fija baja. Auto-limpieza de fila aleatoria si no se limpia en X turnos.

Daily Challenge + Duelos

Seed determinístico: todos juegan la misma secuencia. Duelos asincrónicos vs amigos con apuestas.

Scoring y Progresión

Scoring Oficial

Single (100×lvl), Double (300×lvl), Triple (500×lvl), Tetris (800×lvl). T-Spin bonus, Back-to-Back ×1.5, Perfect Clear (3000×lvl).

Misiones por Partida

3 misiones aleatorias de un pool de ~10 tipos. +50 coins y +30 XP por completar las 3. Reroll gratis con ad.

Power-ups

Bomba (elimina 3×3), Deshacer (revierte última pieza), Congelar (pausa gravedad 10s). Recargables con ads o coins.

Economía

Coins (score/10), XP por modo, rachas diarias con streak shields, logros desbloqueables.

Social

Sistema de Amigos

Friend code de 8 caracteres, búsqueda por nombre, solicitudes, estado online.

Rankings y Duelos

Leaderboard semanal entre amigos. Duelos con mismo seed, comparación de scores, stakes de coins.

Monetización

AdMob

Banner en Home (nunca en gameplay), interstitial cada 3 partidas, rewarded para power-ups, coins y continue.

Premium

$0.99/mes o $9.99/año: sin ads, ×2 coins, modo Zen, 50% descuento en power-ups, temas exclusivos.

Tecnologías

Stack Tecnológico

Frontend / Mobile

React Native 0.81.5

New Architecture (JSI/Fabric)

Expo SDK 54

Build, deploy, OTA updates

TypeScript 5.9 + React 19

Tipado estricto

Zustand 5

7 stores: game, auth, user, theme, premium, friend, duel

Reanimated 4.1

Animaciones hilo nativo, FadeInDown, pulse

Backend

Supabase (compartido)

Auth, DB, Edge Functions, Realtime

PostgreSQL

Schema blockdrop, 11 tablas, 18 funciones RPC

Vistas públicas (bd_*)

Capa de abstracción segura

3 Edge Functions

Completar partida, daily challenge, sync offline

Servicios

Google AdMob

Banner, interstitial, rewarded

Firebase Crashlytics

Crash reporting

Google OAuth + Apple Sign-In

Auth cross-platform

EAS Build + Update + Submit

CI/CD completo

Local

AsyncStorage + Zustand Persist

Cache, stats, preferencias

expo-secure-store

Tokens cifrados

expo-av

22 tipos de efectos de sonido

Librerías principales

react-native-gesture-handlerreact-native-reanimatedreact-native-google-mobile-adsreact-native-iap@react-native-firebase/crashlytics@supabase/supabase-jsi18nextreact-i18nextexpo-linear-gradientexpo-apple-authenticationexpo-auth-sessionexpo-secure-storeexpo-avexpo-cryptoexpo-updates
Diseño

Decisiones de Arquitectura

Schema Dedicado Multi-Game

Schema blockdrop aislado en PostgreSQL. Tablas compartidas en global. Cliente accede solo via vistas bd_* y funciones wrapper bd_*(). Aislamiento total entre juegos.

Game Loop Real-Time con Zustand

Gravity tick, lock delay, y DAS en store Zustand con intervalos controlados. 17 selectores para re-renders granulares a 60 FPS.

PRNG Determinístico

Seeds basadas en fecha para Daily Challenge y compartidas para Duelos. Garantiza misma secuencia de piezas entre jugadores.

Wrapper Functions + Vistas

Tablas reales no expuestas al API. Vistas filtran datos, funciones ejecutan lógica server-side. Security-by-obscurity complementa RLS.

Paleta Arcade Hardcodeada

Colores de UI fijos (fondo #0A0A1A, cyan accent, magenta secundario). Solo colores de piezas son temáticos. Identidad visual consistente.

Anti-Cheat Server-Side

Validación de scores máximos por modo, tiempos mínimos, piezas/minuto. Shadow bans. Scoring y rewards ejecutados en servidor.

Local-First con Login Opcional

Juego completo sin cuenta. Al hacer login, datos locales se sincronizan. Maximiza retención eliminando fricción.

Ingeniería

Desafíos Técnicos

Motor Tetris con SRS Completo

Problema: Implementar SRS desde cero con wall kicks diferenciados para I vs JLSTZ, T-Spin detection, zona de spawn oculta.

Solución: tetrisEngine.ts con tablas de wall kicks oficiales, 4 tests por rotación, 3-corner rule para T-Spin.

→ Motor 100% funcional que pasa todos los edge cases de rotación.

Controles Táctiles Precisos

Problema: Mapear movimiento, rotación, drops y hold a pantalla táctil sin conflictos. DAS crítico para jugadores experimentados.

Solución: Zonas de tap separadas, swipe down, DAS configurable en 3 velocidades con gesture-handler.

→ Controles responsivos sin interferencia entre acciones.

OAuth Cross-Platform

Problema: Google OAuth diferente en Android vs iOS. Supabase rechazaba tokens iOS con "Unacceptable audience".

Solución: Authorized Client IDs configurados para web + iOS en Supabase Auth. Flujos separados por plataforma.

→ Login funcional en ambas plataformas con sesiones persistentes.

Arquitectura Multi-Game en Supabase

Problema: Compartir una instancia entre 5+ juegos sin mezclar datos, con usuarios y amigos unificados.

Solución: Schemas por juego, vistas con prefijo, funciones wrapper, RLS granular. Schema global para compartidos.

→ Aislamiento completo, zero duplicación de usuarios.

Seeds Determinísticas

Problema: Garantizar misma secuencia de piezas entre jugadores en Daily y Duelos.

Solución: PRNG seedeable que alimenta el 7-bag. Seed = hash(date + "blockdrop") para Daily.

→ Secuencias 100% reproducibles y verificables.

Migración de Naming Legacy

Problema: Código reutilizado contenía keys de storage y SKUs de IAP de otros juegos.

Solución: Auditoría de 7 archivos, renaming sistemático a prefijos blockdrop_*.

→ Eliminación de conflictos de storage entre apps.

Estado

Estado del Proyecto

Completado

  • Motor Tetris: SRS, wall kicks, T-Spin, gravedad, 7-bag
  • Game loop real-time con 17 selectores Zustand
  • 12 pantallas + 14 componentes arcade/neon
  • Backend: 11 tablas, 18 funciones RPC, 3 Edge Functions
  • Auth Google + Apple, AdMob, Crashlytics
  • Misiones por partida (10 tipos)
  • i18n ES/EN (~180 keys), 22 sonidos
  • Publicada en iOS App Store

Pendiente

  • Daily Challenge y Duelos end-to-end testing
  • Leaderboards y achievements sincronizados
  • Publicación final en Google Play
  • Tutorial/onboarding interactivo
  • Animaciones de limpieza de líneas (polish)
Resultados

Logros Destacados

Motor Tetris profesional desde cero: SRS, wall kicks, T-Spin, Perfect Clear, scoring oficial

Arquitectura multi-game escalable: 1 backend Supabase para 5+ juegos con schemas aislados

~70% reutilización de código: auth, amigos, ads, IAP, stores base, design system compartido

Cross-platform real: un codebase TypeScript genera builds nativos iOS + Android

12 pantallas + 14 componentes de juego con diseño arcade/neon consistente

Anti-cheat server-side: validación de scores, tiempos y actividad sospechosa en PostgreSQL

Seeds determinísticas para fairness en Daily Challenges y Duelos

Compliance completo: privacy policy, terms, account deletion. Enviado a ambas tiendas

Detalles

Información adicional

Idiomas

Español + Inglés

Modos

Classic, Timed, Zen, Daily, Duel

Ecosistema

5+ juegos compartidos

Reuso

~70% código base

7 Tetrominós — Super Rotation System

I

O

T

S

Z

L

J

8 Temas de Piezas

Default — GratisDark — GratisNeon (500 coins)Pastel (500 coins)Ocean (750 coins)Sunset (750 coins)Forest (1000 coins)Galaxy (1500 coins)

Ecosistema Multi-Game

Forma parte de un portfolio de juegos que comparten backend Supabase, sistema de usuarios y autenticación, sistema de amigos, design system arcade/neon, cuenta AdMob e infraestructura de IAP. Otros juegos: Block Puzzle Play, Sudoku Play, Color Sudoku Play, Killer Sudoku Play.