# Stack > An independent reimplementation of Stack, the tower-building game published by Ketchapp > in 2016, running in a browser. Single HTML page, hand-written WebGL2, no libraries, no network calls. URL: https://stack.skillsafe.ai/ ## What it is Blocks slide in horizontally on alternating axes. Tap to drop one; the overhang past the block below is sliced off and falls; the intersection becomes the new top. A drop within 1/32 of a block-width of centre is a "perfect" and costs nothing; eight perfects in a row start growing the block back. Miss entirely and the run ends. ## The original Publisher: Ketchapp (Ketchapp SARL, Paris). First App Store release 17 February 2016. Bundle id com.ketchapp.stack. Ketchapp was acquired by Ubisoft on 27 September 2016. This page is not affiliated with, authorised by or endorsed by Ketchapp or Ubisoft, and contains no code, art or assets from the original. ## Sourcing, stated plainly Ketchapp published no specification: no design document, no post-mortem, no rules page, and no Wikipedia article. The provenance register in js/spec.js counts 4 DOCUMENTED facts - all of them store metadata, none of them mechanical - 12 MEASURED (pixel measurements of the publisher's own App Store screenshots, all marked "qualified" because today's screenshots are from the 2026 build), 5 DERIVED, 4 CALIBRATED and 8 RECONSTRUCTED. The tolerance, the combo threshold, the growth, the speed ramp and the slide range are inventions with reasons, and the app says so. ## The mathematics Stack has no physics: the block width is a random walk on a lattice with an absorbing barrier at zero, so the game is a Markov chain that can be solved rather than simulated. Three results, each checked two independent ways (an exact-rational linear solve, an exact numeric transfer- matrix propagation, and a 40,000-game Monte-Carlo of the engine): * Every non-perfect drop costs MORE than the perfect tolerance, so no run can absorb more than 32 imperfect drops on one axis, however skilled the player. * Because the offset is speed x timing error and the speed stops at VMAX, a player whose timing jitter never exceeds PERFECT/VMAX = 9.77 ms cannot lose any width at all. A hard threshold. * With the growth cap removed, the width's drift changes sign at a critical aiming error of 0.03958 of a block - 1.267 times the tolerance, a player perfect 79.0% of the time. At a human 50 ms timing jitter the expected score is 60.4 blocks; 100% of deaths occur with the block already under a quarter of its starting width, at a mean width of about 1.25 tolerances. The run ends by attrition, not by a blow-out. ## Privacy No accounts, no analytics, no advertising, no network requests. The best score is kept in this browser's local storage only. ## Files /CREDITS.txt sourcing, the full provenance tally, and what differs from the original /LICENSE.txt MIT, covering this implementation only