Throwback Saturday: Three variants on 2048
Right around this time five years ago, I was playing a ton of Gabriele Cirulli’s HTML5 game “2048” — a game so popular that it has had its own Wikipedia page since ten days after its release (or, fourteen days after the first commit in Cirulli’s GitHub repo). “2048” spawned a ton of variants; I got particularly hooked on Baiqiang’s “Advanced 2048,” which added “x2” and “x4” tiles.
My lovely wife (who was at that time my lovely girlfriend) also got hooked on “2048” and “Advanced 2048”… but we were both a little disappointed by how the “x2” and “x4” tiles made it easier to get high scores. One day she said something like, “You should make one that has square root tiles, too.” So I cloned Gabriele Cirulli’s repo, merged in Baiqiang’s “x2” and “x4” tiles (more or less), and then added square roots. The result was aesthetically pleasing to both of us. You can play “√2048” here.
Now, it turns out that the “√” tiles aren’t actually a strategic impediment; they actually make it easier to get astronomically high scores, because (STRATEGY SPOILER) you can use them to keep all the tiles’ values small except the one you’ve picked to boost with all the “x2” and “x4”s you can manage. So we also tried adding “log” tiles (that’s log base 2, of course). It turned out to be much much much too evil to permit “log” and “8” tiles to merge into a “3” tile that would haunt you for the rest of the game, so I made “log” tiles that merely turned values of the form \(2^{2^k}\) into \(2^k\), and bumped fruitlessly against all other tiles. You can play “log 2048” here.
Finally, getting away from mathematical operators, I made a variant where occasionally you’ll encounter an immobile “heavy” tile, which doesn’t move at all until you merge it successfully. (Such tiles also make a cameo appearance in “log 2048”; can you guess where?) You can play “2048-heavy” here.
This was one of my first forays into JavaScript programming, and I found it quite enjoyable!