Hey, author here! I'm pretty overwhelmed that this made it to the top of HN without me even thinking of posting it here :)
I made this game as a fun weekend project, inspired by another game called 1024 (https://itunes.apple.com/us/app/1024!/id823499224) and a spinoff called 2048 (http://saming.fr/p/2048/). I did mine to add animations to the latter, which was a bit hard to play without them.
I discovered Threes only today, and I had no idea it looked so similar. I searched a bit and it appears as if 1024 is also inspired by Threes, so my game is probably the last of a long chain of clones :P
The code is also open-source. You can find it here: https://github.com/gabrielecirulli/2048
Feel free to ask me anything, and thanks to everyone for the attention! :)
By the way, my highscore is somewhere around 6000. Admittedly, I'm quite bad at playing my own game :P
EDIT: Make sure not to get addicted!
EDIT 2: The game now has swipe gestures and vim keys support (added by @rayhaanj)!
Holy shit I just lost like 45 minutes to this.
Evil evil game.
And to quantify the evilness -- 1024 and exactly 12000 points.
Ha. 2048 and 20000+. Now I can put it in my /etc/hosts.
I've been playing this all day today. I basically created my own demise.
Just be glad you are already immune to Tetris.
Best strategy (for me) seems to be to play it like tetris. Never ever use the up key and create a row at the bottom where everything collapses into it.
This sort of clicked towards, oooh I don't know about 1:30am this morning.
That sort of works, I've been using a similar strategy but switching what I call "bottom" whenever the moment suits.
I'll have to look into that way of playing.
The enemy gate is down.
YES!
Yes, I won twice yesterday with this strategy.
Empirically, this got me much further than the corner (stair-stepped) approach.
I launched a very similar called Even last week on Android -- http://bit.ly/even-game -- have fun!
Downloaded and installed. Can you please remove the almost mandatory google games sign in, or make it optional. I tries to connect every time I move between the game and the menu, and I don't want it to connect...
I was reading all your "I wasted x hours on this" and I rolled my eyes - "My god, these guys fall for everything". Then I tried it. Couldn't sleep. Damn it!
Creating a game that you, the creator, can't stop playing is the sign of a pretty good game. It's like "eat your own dog food", but with crack.
Too damn addictive.
Won a few times and still keep picking it up. Now the Tetris dreams are starting; must stop.
I lost my whole damn day.
lost precious time for thesis writing! evil game!
Two hours straight and managed to get once to 1024.
just spent a few hours on this. I'm in love-hate relationships with the author now
"I am sorry '2048' users, 22 hours from now, I will take '2048' down. I cannot take this anymore."
Note: shameless parody plagarism, (original: https://news.ycombinator.com/item?id=7386459), but this thread has 20x points.
You definitely need to have some kind of counter for how many times someone has reached 2048, and out of how many games played.
Or an expansion on that. Keep track of how many 128s, 256s etc you've ever formed. Show them as big counters directly under the game with an animation when you create any of them.
Log scale histogram?
Edit:
Actually all you need to store is the highest block achieved, and the number of times it's been hit. For instance, if you've only ever generated 2 8's, then you know that you've had 4 4's, and 8 2's...
Edit 2: Does the game allow four 2's to cascade into an 8? If so, maybe you could also store combo stats. It'd be way cooler to smash together four 256's than to smash together two 256's two times.
Not sure how that plays into the histogram.
> For instance, if you've only ever generated 2 8's, then you know that you've had 4 4's
You know you've had at least 4 4's, but you could have had more.
Ah. Lower bounds... they get me every time!
I can't tell if I despise you or admire you, all I know is that there was light outside my window when I first began playing this, and now it's pitch dark.
Upvoted you to show my anger! :)
So addictive. You know since tiles slide to the edge it would be great if this took advantage of accelerometers to allow tile combining by tilting. I know this is a browser game but if you ever create an app using the tilt motion to combine tiles would be awesome. :)
>I know this is a browser game but
https://developer.mozilla.org/docs/WebAPI/Detecting_device_o...
I haven't been this addicted to a game since Drop7.
Same!
I was so addicted to Drop7, and so annoyed at the crappy Android version, I made my own HTML/JS version with appcache, so I could play it in chrome offline: https://github.com/pavellishin/drop7
This is fantastic! Thanks so much for sharing, I learned so much from reading your very elegant and well-commented code.
Just in case anyone is looking at this and wants a direct link to play pavel_lishin's version, here's the raw github version: https://rawgithub.com/pavellishin/drop7/master/drop7.html
Side note: I got hooked on Drop7 during my first semester in college. I was fascinated by the game and wrote a simulator to pick the optimal move: https://github.com/keshavsaharia/Drop7Simulator
Ooh, nice! I thought about writing some sort of AI to play for me, but never got around to it. (Plus, it felt weirdly oroborous-like.)
Awesome work, thanks for posting. I too was annoyed at Android support. It could be one of their more popular games if it was just updated a little.
Please allow me to throw money at you somehow
Yes! At the very least put up a BTC or Dogecoin address we can send donations to!
Or maybe go buy Threes which this is a descendant of?
http://asherv.com/threes/
Nice clone but it's definitely a clone and so should be treated as such.
I have Threes and they way way over-designed it. Also it's rubbery interface is really quite annoying. This one however is a perfection - simpler idea, pure gameplay, subtle animations and UI mechanics. It really beats Threes hands down even if it's a "clone".
Yep, and if you have a spare couple of minutes to play a game, the first minute is spent loading it.
iDevices only. Bleh.
They've been promising an android version for some time now. If they don't hurry up, though, they'll get beaten to it by clones.
Nope - https://play.google.com/store/apps/details?id=vo.threes.excl...
Not sure if I can do that. Wouldn't it be unethical and unfair to the other developers?
You can always pay some sort of % as tribute, but you've created something that we all find a horrendous waste of time :-) so a way of remunerating you to some degree is not in the least bit unethical.
It's good to get paid for your work, even if it was fun.
Or you can download Even (free!) that I launched last week -- http://bit.ly/even-game -- have fun!
Out of curiosity, I'd love to hear what your Google Analytics graphs look like! How long to people spend playing it?
Right now there are around 2100 people on the site and an average visit duration of around 4 minutes :)
How many reached 2048?
The latest stats show no "game-win" events :P It might just be a matter of time though.
EDIT: oops, there was a bug in the win/lose tracking so I probably missed out on a few wins. I fixed it now, so it should hopefully track it if someone else wins!
I just beat it! First try.. but I've been addicted to Threes for the past week or so.
http://i.imgur.com/nf25AVZ.png
I'm gonna call fake on this one.
With enough tries anything is possible. There is probably even a person who ascended nethack on his first try (using the wiki of course, we're still talking things with p > 0) and didn't play it again because it's too easy and boring.
I've seen that. Wiki, #nethack, valkyrie, and some decent but not extraordinary luck.
There's actually a semi-optimal strategy that nearly guarantees winning if you're diligent about it. Just build a stairstep pattern with the highest numbers in the bottom corner of the stairs. Then basically combine sideways and downward and "always" resist the temptation to push up. Its kind of how some tri-diagonal matrix algorithms work. The only problem is you have to be fastidious about never using the one direction you've reserved as your excluded case (Up in my example) as that can screw your staircase by putting a [2] right underneath your wonderful [1024]. Just move blocks back and forth, waiting for the right blocks to create combo patterns, while generally storing lower cost blocks on the outside of the stairs, and then snake them through the stairs when you get a chain set up.
Ex:
x x x 2
x x 2 4
x 2 4 8
2 4 8 16
I was surprised at how well that worked. I was basically blindly cycling between left,down,right (with one accidental up) and got to 1024 on my first try.
function press(key) { var eventObj = document.createEvent("Events"); eventObj.initEvent("keydown", true, true); eventObj.which = key; document.dispatchEvent(eventObj); }
for (y=0; y<=1000; y++) { press(39); //right press(40); //down press(37); //left press(40); //down }
this gave me 1024 in couple of tries :D http://i58.tinypic.com/am9sh4.png
Here's a random key press loop: function press(key) { var eventObj = document.createEvent("Events"); eventObj.initEvent("keydown", true, true); eventObj.which = key; document.dispatchEvent(eventObj); } for (y=0; y<=1000; y++) { press(Math.floor(Math.random() * 4) + 37); }
After half an hour playing blindly I realized this, but even using this it´s hard to go beyond 500
Yes, I also discovered this after 20ish minutes of playing. If you're not diligent about it, it's very hard to recover.
However, I've locked myself a few times so it was impossible to go on without using 'up' (or whatever):
x x x x
x x x x
o o o o
o o o o
where at no point the same numbers next to each other allow collapsing. Maybe it's the problem not growing from the corner.. hm.
I found one not-completely-horrible strategy was just blindly running round the curser keys.. eg. up - right - down - left, repeatedly. Got near 4000 points with that..
Great game though - wasted waaay too much time last night playing.
It's a good start but you will get stuck at higher level. in your case focus on increasing the value on the bottom left. When possible, shift the last line to the right. Never go up.
Did that, got stuck like that, pretty unfortunate.
http://puu.sh/7rKEF.png
If that's real, congrats! I had started doubting that anybody would ever win the game :P
Can you add in how many moves!!?
This would be cool. I think winning in the fewest moves would be the most impressive. i.e. how few tiles you 'waste'. Though winning with the lowest score may approximate this.
Each turn, one 2 tile is added, and other tiles may be combined. So you can derive the move count by adding together the numbers on all the visible tiles and dividing by 2.
This is inaccurate, because you have a 10% chance of getting a 4 tile added instead of a 2. That part makes the game tricky, because otherwise you could optimize every solution like an algorithm without ever losing.
https://github.com/gabrielecirulli/2048/blob/master/js/game_...
Oh, huh, I didn't even realize it was doing that. Even so, the move count will still be roughly proportional to the sum of the board (plus or minus some random variation), won't it?
Thanks Neckbeard,
I refuse to do these calculations in my head...
The author should do this, and create a counter of moves within the app.
eh... Sorry - I was tipsy when I posted that...
It took me a few tries, but it's definitely winnable.
Do you have new numbers? I got a bunch of people addicted and I assume I'm not the only one.
Looks legit
Beat it! http://screencast.com/t/2b3zNbYy6HDi
http://www.screencast.com/t/NYuiFDueop8
:P I guess it was almost perfect attempt, and the quickest of mine so far (just a single 16 apart of 2048)
okay, and i win... and my record is 32768 score so what? it was fun) my screen: http://upload.freehacks.ru/MKPEP2 my implementation and guide you can found there: http://vk.cc/2nGPL3
And here's another win, took me a fair few hours though.
http://imgur.com/9FckZVX
I'd be interested in seeing the lowest winning score, highest winning score, and lowest losing score (!)
Managed to purposefully lose with 627 points. Lowest I've managed to lose by. :)
I did, with 23000 points.
It took me 2-3 hours on friday, and some luck :) http://imgur.com/PNRIfW6
Beat the game: http://oi62.tinypic.com/2wdopq9.jpg
At least I don't have to spend any more time on it.
My simple strategy was to keep the biggest blocks in a corner at all times.
Make sure not to get addicted!
Hah. It's binary crack.
Programmer Step #2 - write an automated solver :)
I thought about this for 5 minutes and really got nowhere. Can anyone come up with a nice analytic way to think about an algorithm?
There are a couple of brute force approaches: a) always pick the direction that will result in the most blocks to combine, b) always pick the direction that will result in the largest score.
I think you want to keep the large numbers in the corner.
How about using A* algorithm?
I know someone was working on an AI that plays Threes (the game that inspired this one). Haven't seen any code from him though.
http://forums.toucharcade.com/showthread.php?p=3142737#post3...
> this made it to the top of HN without me even thinking of posting it here
Good for beta testing it.
Unlike with Threes, there's no real reason to use numbers since they're all powers of 2. If you used letters (A, B, C, ...) you could market it to non-HN sorts, and have a version of the game in a 5x5 grid, or, more to the point, in a 6x6 grid with letters A to Z. Most people in the world know the order of letters in English.
Good idea with the letters, but perhaps not necessary. People are happy with simple numbers. Just look at Sudoku which doesn't use A to I.
I'm certain letters are necessary for a 5x5 or 6x6 board. M is better than 16,384, and Z far better than 67,108,864.
Why? Instead of A, B, C, you can go with 1, 2, 3. Ie use the binary logarithm of the numbers.
Good idea with the simple numbers, and certainly necessary to use some tokens other than what this 2048 app uses so we can have a version of it in a 5x5 or 6x6 grid.
When you wrote "Good idea with the letters, but perhaps not necessary. People are happy with simple numbers. Just look at Sudoku which doesn't use A to I", I thought you hadn't noticed my mention of the larger grid, which was really the main point of my comment and maybe I should've worded it differently. Though if you'd begun your comment differently, i.e. "Good idea with the larger grid, but perhaps the letters aren't necessary. People are happy with simple numbers. Just look at Sudoku which doesn't use A to I", I wouldn't have felt the need to reply to correct a perceived communication mistake.
Oh, for a larger grid, you might want to have letters anyway, because your point still applies.
It's interesting that log_2 2028 is just above what you can represent in a single digit. That's very close to merging two 9s.
I'd like to actually see someone pit x, log_2 x, and letter(log_2 x) against each other in an A/B test of the game. The latter two are simpler, but the former might be more exciting, because of bigger numbers.
Shit I just spent like 4 hours. I have final exams next week. You are evil!
Great "time waster" - just got 5752 score from first try! Very well executed, who cares if its a clone! :) Great job!
Hi Gabriele, I created a mirror of your project with an easier memorable name at
http://2048.mx/
:-) Hope that's fine. It might take an hour or so for the domain to be accessible for everyone due to DNS cache.
It's very coincidental that my game called Even, based on very similar gameplay was launched this past Friday -- http://bit.ly/even-game
(in case folks on Android want to play it)
I've started playing threes a week ago. Both threes and 2048 are fun to play. Except that I think in threes the challenge starts earlier in the game and every step counts and you can easily get into a deadlock. Can't wait to see the source code and analytics. Maybe you want to add on the page the highest score :)
Very fun game! Love the dynamic, couldn't get higher than 256 though. Also check out Fives for Android--somewhat similar: https://play.google.com/store/apps/details?id=com.rcg.fives
Likewise. I had one game where I had a 256 block and two 128 blocks, but I ran out of room to maneuver before I could combine the 128s to another 256 and then combine the 256s to a 512.
by pressing up-right-down-left, then repeat, I managed to get to 512 two times...
I did it by pressing up-left-down-right, repeating each direction as many times as possible. That's the worst part - knowing that your carefully calculated playthrough is actually no better than someone just pressing the keys in a set order.
Ran your strategy 162 times with autoit of which the following blocks came by: [128]: 150 times, [256]: 36 times, [512]: 13 times, [1024]: 0 times. Anyone else a good suggestion for an optimal "blind" strategy?
UUDDLRLRBA
Perhaps I had a little bit of luck. But this shows you can easily get to 256 with little dedication. After which you can start to puzzle things together.
Also about your autoit "analysis" 36 + 150 + 13 != 162
Well, when it reaches a 256 block, it also reached a 128 block, so some games count for 2 or 3 blocks.
That's true. :)
Anyway managed to get to 1024 + 512 + 256 after that without random button mashing.
I prefer Trip actually, it has the same rules as Threes, but it's much harder to get a high score compared to Fives. Because you only ever get 1, 2 or 3 as the new card, everything needs to be built up from there, it requires a lot more thought and planning. https://play.google.com/store/apps/details?id=ca.ginik.trip
You might also want to check out Even -- http://bit.ly/even-game -- have fun!
Two hours lost at uni today and checking hn first thing back home... nooooooo! I will now proceed to waste time. Good job! :)
edit: Ok, some random friend just emailed me and told me to check out your game. This friend does not hang out at the online places I do. It seems to be on fire!
Finally, at 2:26 a.m. I was successful with a score of 21000 ... that was fun, thank you!
I won!
http://imgur.com/Y8oVTeQ
Wow, that was fun, thanks! It starts to make sense after a while. Are lower or higher scores better? I'm at 21,204. http://imgur.com/4tnVPZ4
a bit lower: http://imgur.com/yPnUt8N
Even lower: 20148
http://imgur.com/28YNfDS
That's pretty damn near optimal, might have had an extra 2 when doing the final collapse, can't remember.
Even lower : 20132 http://imgur.com/dWiXGaW
Oh, _now_ you tell me not to get addicted! >:( You should've made that a splash page to the site, not an edit to a comment on the submission link.
But seriously, well done. :) Completely destroyed my productivity.
Just wanted to let you know (but wanted to wait before somebody would down vote such a comment here) that I really enjoyed your game, thanks and cheers!
Thanks a lot jerk...now ive lost 2 hours of sleep because of this game! Keep up the good work!
Totally cool, and addictive. Not exactly news, but at another level, completely HN worthy
You bastard! I had to work today!
awesome game. I love the math
is there a elegant formula to get to the minimum required points?
That's not quite the minimum points, since occasionally (10% of the time) a 4 spawns, instead of a 2.
that's incorrect.
just because a 4 gets spawned 10% of the time, doesn't mean that there couldn't be a game where 4 does not get spawned
4s reduce the total score. (E.g. I won with a score of about 20200 once.)
i stand corrected
20144 score
Thanks for the swipe gesture support, had fun playing it on the way home.
This is very fun and addicting, now I just have to get some work done.
I just wasted 60 mins playing this game. And I think I'm hooked.
I hate you. ;)
Ah! This game IS addicting! My highest so far is around 3500.
Extremely addictive and awesome patterns! Well done!
Congratulazioni Gabriele ;-)
Can't stop playing ;-)
Great job!
"EDIT: Make sure not to get addicted!"
Oh, no we have another Flappy Story in the making here!