Mobile Game — Tetris × 2048 Hybrid

Block Drop Merge

Classic Tetris fused with 2048-style merge: tetromino pieces fall with SRS, where each cell has a numeric value that merges with equal adjacent cells on landing, creating chain reactions. Dual scoring, prestige system, 8 modes, and Target Mode with 30 levels.

Under review — App Storev1.0.2 — iOS + Android
2
4
8
16
32
64
128
256
512
1024
2048

25.6K+

Lines of code

8

Game modes

11

Merge tiers (2→2048)

30

Target Mode levels

5

Power-ups

v1.0.2

Version

Features

Key Features

Core — Tetris × 2048

Merge Engine with Chain Reactions

Custom engine: bottom-up scanning, adjacent same-value merging, individual gravity, unlimited chains with sequential animations.

Freeze Merge Preview

On landing, cells to merge blink 500ms before executing. Window to activate power-ups strategically.

Prestige System

Creating a 2048: clears entire board, point bonus and scalable permanent multiplier with each prestige.

Dual Scoring

Merge points (value × 10) + line clears (× level). Chain multipliers up to ×4.0, combos and prestige bonus.

Game Modes

Classic Merge

Incremental speed by level. Game over when reaching the top. Combines Tetris strategy with 2048 merge.

Target Mode (30 levels)

Specific objectives: "Reach 512", "3 ×3 chains", "5 lines with piece limit". 1-3 star system.

Timed (60s/90s/120s)

3 time variants. Maximum score combining drops and merges before the timer.

Daily Challenge + Duels

Deterministic seed for fairness. Daily with global ranking. Duels with coin stakes (10% commission).

Power-ups

Multiplier Bomb

Doubles the value of a selected block.

Color Merge

Merges all blocks of the same value on the board.

Row Shuffle + Downgrade

Rearranges a row or lowers a tier. Tactical tools to unlock situations.

Wildcard

Wildcard piece that merges with any adjacent number.

Social & Monetization

Cross-App Friends

Friends list shared with Block Drop Play via global table. 8-char friend codes.

AdMob + Premium

Banner/interstitial/rewarded with ATT compliance. Premium $0.99/mo: no ads, ×2 coins, Zen, discounts.

Technologies

Tech Stack

Frontend / Mobile

React Native 0.81

Cross-platform mobile framework

Expo SDK 54

Build, deploy, OTA updates

TypeScript 5.9 (strict)

25,600+ typed lines

Zustand 5

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

Reanimated 4

Merge, chain, prestige animations at 60fps

Backend

Supabase (shared)

Auth, DB, RPC functions, Realtime

PostgreSQL

Schema blockmerge, 10+ tables, bm_* views, RLS

Deterministic PRNG

Seeds for Daily + Duels with same pieces and values

Services

Google AdMob + ATT

Banner, interstitial, rewarded. iOS ATT compliance

react-native-iap

Monthly + annual subscriptions

Firebase Crashlytics

Production crash reporting

EAS Build + Update

CI/CD with OTA for urgent fixes

Testing

Jest + jest-expo

Unit tests: merge engine, score calculator, board engine

Main Libraries

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
Engineering

Technical Challenges

App Store Rejection (4.3a — Spam)

Problem: v1.0.1 rejected: AdMob IDs copied from Block Drop Play, USE_TEST_ADS=true in production, storage keys and IAP SKUs from another app, generic icon.

Solution: Complete audit with grep. Fixed all IDs, icon redesign (numbered blocks in L shape), new screenshots, formal response to Apple.

→ Audit protocol documented for future derivative launches. v1.0.2 submitted.

Chain Reaction Engine

Problem: Merge engine with arbitrarily long chains: merge → gravity → re-merge. Each cell must participate in only one merge per round.

Solution: Iterative bottom-up, left-to-right algorithm. Set of merged cells per round. Individual post-merge gravity. Re-scan until stable. 300ms animated pause per step.

→ 5+ round chains with scaled multipliers. Satisfying gameplay moments.

OTA Update Channel Mismatch

Problem: Updates sent to --branch preview never reached production builds.

Solution: Production builds use channel production. All eas update go to --branch production.

→ Functional OTA updates. Urgent fixes without going through store review.

Safe Area + Fixed Height

Problem: Content overlapped with notch/dynamic island. paddingBottom didn't work in fixed-height containers.

Solution: Consistent SafeAreaView, edges configured per screen type, paddingBottom instead of fixed height.

→ UI without overlaps on all iOS and Android devices.

Readable Board Numbers

Problem: Standard 10×20 (Tetris) board made numbers unreadable on mobile.

Solution: Board reduced to 8×16. responsive.ts with wp()/hp() for proportional scaling. Monospace font.

→ 1-4 digit numbers (2→2048) readable on any device.

Status

Project Status

Completed

  • Merge engine: chain reactions, gravity, freeze merge
  • Score calculator: chains, combos, prestige
  • 9 Zustand stores, 13 screens, specialized components
  • Backend: schema blockmerge, bm_* views, RLS
  • AdMob with ATT compliance + IAP subscriptions
  • 30 Target Mode levels with varied objectives
  • Daily challenge + async duels (PRNG)
  • i18n ES/EN, Crashlytics, onboarding
  • Unit tests: merge engine, score, board
  • iOS + Android builds submitted to stores

Pending

  • Apple review result v1.0.2
  • Target Mode rewards calibration
  • Merge sounds with scalable pitch
  • Expansion to 100+ Target levels
  • Multi-user duel testing in production
Results

Key Achievements

Custom merge engine from scratch: adjacencies, priority merging, individual gravity, unlimited 60fps chains

Original game mechanic: Tetris + 2048 that doesn't exist as an established genre

Deterministic PRNG for fair competitions in Daily and Duels

Multi-app on shared infrastructure: single Supabase with isolated schemas and global social layer

App Store rejection 4.3a resolved: systematic audit and documented protocol

~25,600 lines of strict TypeScript, 9 stores, 13 screens, unit tests

Full-stack indie: mechanic design, frontend, SQL backend with RLS, ads, IAP, store submission

30 Target Mode levels with varied objectives and star system

Details

Additional Information

Merge Evolution — 11 Tiers

2
4
8
16
32
64
128
256
512
1024
2048

From blue (2) to golden with pulsing glow (2048)

Languages

Spanish + English

Modes

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

Board

8×16 + 4 hidden rows

Ecosystem

Shares backend with Block Drop Play

4 Visual Themes

Retro Game Boy

Dark green with colorful blocks

Arcade Neon

Dark background, cyan/magenta

Ocean Deep

Deep blue tones

Sunset Fire

Warm oranges and reds

Original Mechanic

Block Drop Merge combines two genres in a mechanic that doesn't exist as an established category. Tetromino pieces fall and rotate with professional SRS, but each cell has a numeric value that merges with equal adjacent cells on landing, creating cascading chain reactions. The result is a game that requires thinking about both spatial placement (Tetris) and numerical optimization (2048).