Mobile Game — Tetris × 2048 Hybrid

Block Drop Merge

Fusión de Tetris clásico con merge estilo 2048: piezas tetrominó que caen con SRS, donde cada celda tiene un valor numérico que se fusiona con adyacentes iguales en cadenas de reacciones. Scoring dual, sistema de prestige, 8 modos y Target Mode con 30 niveles.

En revisión — App Storev1.0.2 — iOS + Android
2
4
8
16
32
64
128
256
512
1024
2048

25.6K+

Líneas de código

8

Modos de juego

11

Merge tiers (2→2048)

30

Niveles Target Mode

5

Power-ups

v1.0.2

Versión

Funcionalidades

Características principales

Core — Tetris × 2048

Merge Engine con Chain Reactions

Motor custom: escaneo de abajo hacia arriba, fusión de adyacentes iguales, gravedad individual, cadenas ilimitadas con animaciones secuenciales.

Freeze Merge Preview

Al aterrizar, las celdas a fusionar parpadean 500ms antes de ejecutar. Ventana para activar power-ups estratégicamente.

Sistema de Prestige

Al crear un 2048: limpia tablero completo, bonus de puntos y multiplicador permanente escalable con cada prestige.

Scoring Dual

Merge points (valor × 10) + line clears (× nivel). Chain multipliers hasta ×4.0, combos y prestige bonus.

Modos de Juego

Classic Merge

Velocidad incremental por nivel. Game over al tocar el tope. Combina strategy de Tetris con merge de 2048.

Target Mode (30 niveles)

Objetivos específicos: "Llegar a 512", "3 cadenas ×3", "5 líneas con límite de piezas". Sistema de estrellas 1-3.

Contrarreloj (60s/90s/120s)

3 variantes de tiempo. Máximo puntaje combinando drops y merges antes del timer.

Daily Challenge + Duels

Seed determinístico para equidad. Daily con ranking global. Duelos con stakes de monedas (10% comisión).

Power-ups

Multiplier Bomb

Duplica el valor de un bloque seleccionado.

Color Merge

Fusiona todos los bloques de un mismo valor en el tablero.

Row Shuffle + Downgrade

Reordena una fila o baja un tier. Herramientas tácticas para desbloquear situaciones.

Wildcard

Pieza comodín que mergea con cualquier número adyacente.

Social y Monetización

Amigos Cross-App

Lista de amigos compartida con Block Drop Play via tabla global. Friend codes de 8 chars.

AdMob + Premium

Banner/interstitial/rewarded con ATT compliance. Premium $0.99/mes: sin ads, ×2 coins, Zen, descuentos.

Tecnologías

Stack Tecnológico

Frontend / Mobile

React Native 0.81

Framework mobile cross-platform

Expo SDK 54

Build, deploy, OTA updates

TypeScript 5.9 (estricto)

25,600+ líneas tipadas

Zustand 5

9 stores: game, auth, user, premium, friend, duel, target, theme, localStats

Reanimated 4

Animaciones de merge, cadenas, prestige a 60fps

Backend

Supabase (compartido)

Auth, DB, RPC functions, Realtime

PostgreSQL

Schema blockmerge, 10+ tablas, vistas bm_*, RLS

PRNG Determinístico

Seeds para Daily + Duelos con mismas piezas y valores

Servicios

Google AdMob + ATT

Banner, interstitial, rewarded. ATT compliance iOS

react-native-iap

Suscripciones mensual + anual

Firebase Crashlytics

Crash reporting en producción

EAS Build + Update

CI/CD con OTA para fixes urgentes

Testing

Jest + jest-expo

Unit tests: merge engine, score calculator, board engine

Librerías principales

react-native-reanimatedreact-native-gesture-handlerreact-native-google-mobile-adsreact-native-iap@supabase/supabase-jsi18nextreact-i18nextexpo-tracking-transparencyexpo-secure-storeexpo-avexpo-hapticsexpo-linear-gradientexpo-apple-authenticationexpo-auth-sessionexpo-updates
Ingeniería

Desafíos Técnicos

App Store Rejection (4.3a — Spam)

Problema: v1.0.1 rechazada: AdMob IDs copiados de Block Drop Play, USE_TEST_ADS=true en producción, storage keys y IAP SKUs de otra app, ícono genérico.

Solución: Auditoría completa con grep. Corrección de todos los IDs, rediseño de ícono (bloques numerados en forma L), screenshots nuevos, respuesta formal a Apple.

→ Protocolo de auditoría documentado para futuros lanzamientos derivados. v1.0.2 enviada.

Chain Reaction Engine

Problema: Motor de merge con cadenas arbitrariamente largas: merge → gravity → re-merge. Cada celda debe participar en un solo merge por ronda.

Solución: Algoritmo iterativo bottom-up, left-to-right. Set de celdas mergeadas por ronda. Gravedad individual post-merge. Re-escaneo hasta estabilizar. Pausa animada 300ms por paso.

→ Cadenas de 5+ rondas con multiplicadores escalados. Momentos de gameplay satisfactorios.

OTA Update Channel Mismatch

Problema: Updates enviados a --branch preview nunca llegaban a builds de producción.

Solución: Builds de producción usan channel production. Todos los eas update van a --branch production.

→ OTA updates funcionales. Fixes urgentes sin pasar por review de tiendas.

Safe Area + Fixed Height

Problema: Contenido solapado con notch/dynamic island. paddingBottom no funcionaba en containers con height fijo.

Solución: SafeAreaView consistente, edges configurados por tipo de screen, paddingBottom en vez de height fijo.

→ UI sin solapamientos en todos los dispositivos iOS y Android.

Números Legibles en Tablero

Problema: Tablero 10×20 (Tetris estándar) hacía números ilegibles en mobile.

Solución: Tablero reducido a 8×16. responsive.ts con wp()/hp() para escalado proporcional. Fuente monospace.

→ Números de 1-4 dígitos (2→2048) legibles en cualquier dispositivo.

Estado

Estado del Proyecto

Completado

  • Merge engine: chain reactions, gravity, freeze merge
  • Score calculator: chains, combos, prestige
  • 9 stores Zustand, 13 pantallas, componentes especializados
  • Backend: schema blockmerge, vistas bm_*, RLS
  • AdMob con ATT compliance + IAP suscripciones
  • 30 niveles Target Mode con objetivos variados
  • Daily challenge + duelos asincrónicos (PRNG)
  • i18n ES/EN, Crashlytics, onboarding
  • Unit tests: merge engine, score, board
  • Builds iOS + Android enviados a tiendas

Pendiente

  • Resultado de review Apple v1.0.2
  • Calibración de rewards Target Mode
  • Sonidos de merge con pitch escalable
  • Expansión a 100+ niveles Target
  • Testing de duelos en producción multi-usuario
Resultados

Logros Destacados

Motor de merge custom desde cero: adyacencias, fusión con prioridades, gravedad individual, cadenas ilimitadas a 60fps

Mecánica de juego original: Tetris + 2048 que no existe como género establecido

PRNG determinístico para competencias justas en Daily y Duelos

Multi-app en infraestructura compartida: Supabase único con schemas aislados y capa social global

Resolución de App Store rejection 4.3a: auditoría sistemática y protocolo documentado

~25,600 líneas de TypeScript estricto, 9 stores, 13 pantallas, unit tests

Full-stack indie: diseño de mecánica, frontend, backend SQL con RLS, ads, IAP, submission a tiendas

30 niveles de Target Mode con objetivos variados y sistema de estrellas

Detalles

Información adicional

Evolución de Merge — 11 Tiers

2
4
8
16
32
64
128
256
512
1024
2048

De azul (2) a dorado con glow pulsante (2048)

Idiomas

Español + Inglés

Modos

8 (Classic, Timed×3, Zen, Daily, Target, Duel)

Tablero

8×16 + 4 filas ocultas

Ecosistema

Comparte backend con Block Drop Play

4 Temas Visuales

Retro Game Boy

Verde oscuro con bloques coloridos

Arcade Neon

Fondo oscuro, cyan/magenta

Ocean Deep

Tonos azules profundos

Sunset Fire

Naranjas y rojos cálidos

Mecánica Original

Block Drop Merge combina dos géneros en una mecánica que no existe como categoría establecida. Las piezas tetrominó caen y rotan con SRS profesional, pero cada celda tiene un valor numérico que se fusiona con adyacentes iguales al aterrizar, creando cadenas de reacciones en cascada. El resultado es un juego que requiere pensar tanto en la colocación espacial (Tetris) como en la optimización numérica (2048).