# TGL Stack Rush > A free, no-install, browser-based single-tap stacker. A block sweeps > left↔right across the stage; tap to drop it on the tower below. Overhang > is sliced off; perfect drops keep your full width and chain into combos > (×1/×2/×3/×5 at 1-2/3-4/5-7/8+ consecutive perfects). Integer-only > geometry, server-validated replay scoring, global leaderboard. Tagline: Build High. Stay Tight. Go Far. Site: https://tglgames.com/ Play: https://tglgames.com/stack-rush/ About: https://tglgames.com/stack-rush/about/ Leaderboard: https://tglgames.com/api/leaders?game=stack-rush ## What it is Stack Rush is a single-page browser take on the classic tap-to-drop stacker (Ketchapp Stack, Stacky, Stack Tower, Block Tower, etc.). One input, one rule, infinite skill ceiling. Free, no signup, no install, no ads, no in-app purchases. Plays on every modern browser — desktop, tablet, phone, foldable. ## Rules - A block sweeps left↔right across a fixed-width stage. Speed scales with level (level 1 = slow, level 20 = insane). - Tap (mobile), click (desktop), or press Space / Enter to drop the block. - The block lands on the tower. Whatever overlaps the previous block's footprint stays — the rest is sliced off and tumbles away. - The next block enters with the new, smaller width. - Miss the tower entirely (overlap below `MIN_OVERLAP`) and the run ends. ## Scoring - `+10` base points per successful drop. - `+25` bonus on a *perfect* drop (within `PERFECT_TOL` of the previous block's center). A perfect drop keeps the full previous width. - Both numbers above are multiplied by the current combo multiplier: | Combo length | Multiplier | | -----------: | ---------: | | 1–2 | ×1 | | 3–4 | ×2 | | 5–7 | ×3 | | 8+ | ×5 | - `+50` height bonus every `LEVEL_EVERY` (10) successful drops. Level increments at the same boundary. - Game over: `overlap < MIN_OVERLAP` (the block misses the tower). The missed block is not scored. ## Constants (must match `/api/games/stack-rush.php`) | Constant | Value | Meaning | | -------------- | ----: | ------------------------------------ | | `STAGE_W` | 1000 | logical width of the play area | | `BASE_W` | 550 | first (base) block width | | `MIN_OVERLAP` | 50 | run ends below this overlap | | `PERFECT_TOL` | 30 | within this of prev center = perfect | | `BASE_PTS` | 10 | base per drop | | `PERFECT_BONUS`| 25 | added on perfect (before mult) | | `HEIGHT_BONUS` | 50 | every `LEVEL_EVERY` drops | | `LEVEL_EVERY` | 10 | drops per level | | `MAX_BLOCKS` | 5000 | hard cap | | `MAX_SCORE` | 5e6 | sanity ceiling | Geometry is integer-only end-to-end so server replay is bit-for-bit identical to the client run. ## Move log ```json [ { "t": 217, "x": 500, "perfect": 1 }, { "t": 503, "x": 502, "perfect": 1 }, { "t": 791, "x": 540, "perfect": 0 }, { "t": 1080, "x": 50, "perfect": 0 } ] ``` - `t` — ms since `/api/run/start`. - `x` — integer center of the dropped block at release, in `[0, STAGE_W]`. - `perfect` — 1 if `|x − prev_center| ≤ PERFECT_TOL`, else 0. ## Determinism + replay - `/api/games/stack-rush.php :: StackRushValidator::validate($moves, $seed)` walks the log and recomputes overlap, slice, perfect detection, combo, multiplier, height bonus, and level — entirely with `intdiv()` and integer compares. - Score must match exactly. Client-server mismatch → `validated='pending'` for review (not silently accepted). - Mulberry32 PRNG (shared `Rng` class) is included for parity with other games even though Stack Rush v1 doesn't consume it for level randomness. ## Anti-cheat - HMAC-signed run tokens; single-use, tied to a server-issued seed. - Server replays the full move log; client score is overridden by the recomputed value. - Score bounds: `[0, 5,000,000]`. - `duration_ms` is bounded against the server-issued `/api/run/start` wall time (±10 s slop). - Per-run row in `stack_rush_runs` (1:1 with `runs`) records: `blocks_placed`, `highest_stack`, `perfect_drops`, `longest_combo`, `level_reached`, `death_reason ∈ {miss, cap, invalid}`, `input_key/pointer/dpad`, `move_log`. ## Controls - **Tap** the stage (mobile / tablet). - **Click** the stage (desktop). - **Keyboard**: `Space` or `Enter`. Each input source (`pointer` / `key` / `dpad`) is tracked separately for stats. ## Privacy / signup - No account required. Guests get an auto-generated username on first visit; rename anytime. - No tracking pixels, no analytics SDK, no third-party scripts. - Raw IP, user-agent, and full request bodies are logged for ops/security review (project-wide stance) — never sold or shared. ## Genre / keywords stack rush, stacker, tower stacker, tap to drop, block stacker, single-tap arcade, browser stacker, free stacker, html5 stacker, online stacker, no install stacker, mobile stacker, perfect drop combo, leaderboard stacker, replay-validated stacker, deterministic stacker, mgwalk, tglgames.com ## Other games on tglgames.com - Snake · /snake/ - 2048 · /2048/ - Brick Blaster · /brickblaster/ - Space Drifter · /spacedrifter/ - Pool · /pool/ - Last Card Standing · /last-card-standing/ - Blackjack · /blackjack/ - Poker · /poker/ - Euchre · /euchre/ ## Author mgwalk — https://tglgames.com/