NES Tetris AI gets 1.5 MILLION! (Human Possible) - Level 41
HTML-код
- Опубликовано: 10 фев 2025
- This is a highlight game from my Tetris AI, called StackRabbit. It absolutely obliterates the human world record of 1,439,000 by Joseph Saelee in 2020. It also beats the level world record of level 40 by Cheez (may be broken again soon by his new rolling technique though).
StackRabbit has restrictions on both its tapping speed (13.5 Hz) and reaction time (416 ms), to keep its gameplay within the range of what humans are able to execute.
Stay tuned for more AI-related content soon!
As many of you have seen, a human (HydrantDude) has beaten this score, with an incredible 1.6 million! Thanks to the new rolling playstyle, humans can consistently achieve 20+ Hz taps, which completely redefines "human-possible." Under the new category of "rolling-possible," StackRabbit has achieved a score of 30 million (!!), but my goal is to see it hit the true killscreen with human-possible limitations! Stay on the lookout for a video of that nature, hopefully very soon.
bro this game keeps blowing my mind everyday
Someone in the tetris community: "And this is the ultimate limit of human achievement."
Tetris Community: "Some kid in middle school did that last week, yo."
I think it'd be cool to see how efficient it could be pre-killscreen with rolling speeds. Like, I would love to know how often it could maxout, what percent of games, before the killscreen.
A human rolled the score and added 27.72K points on top of that
@@redalchemist0 80k actually
Little did he know a human would get ten times this score
Is it possible to make a 'best move' mod?, where you can calculate a player's piece placement accuracy using stack rabbit? Creating a real time accuracy mod that could be used while playing maxoutclub seems like the next, big step for stack rabbit! PLEASE AND THANK YOU :D Great video
Yes that would be real great
Theoretically, but I don't think it'd be able to cope if the board was a mess
StackFish
Not reasonable because of the design of the AI.
This AI is designed to get high scores rather than play the best it can. If the game was slowed down such that the AI had time to do actual lateral thinking to assign a score to the board and maximize the potential of the board, with the AI having an understanding of how the RNG is calculated, then the AI could be used this way.
What we see here is not what is best, but it is simply what is not bad.
wow. Great work! This really shows how much more is possible (even without Rolling)
2021: AI gets 1.5 million!
2022: Eric gets 6.4 million!
2023: Blue Scuti Crashes Game!
2024: Alex Thach gets 16 million
@@ddodd69
Also 2024: dogplayingtetris gets rebirth with 29 million points!
@@Kalaphantnow we have to wait till someone gets triple rebirth with a score of 821364871364971364
@@Kalaphantnow we have to wait till someone gets triple rebirth with a score of 821364871364971364
This is awesome to see. I have long wanted to see a good "human possible" AI. love it!
THIS is the future of NES Tetris theory. I feel like I’ve learned a lot of stacking fundamentals, in just this one video. This is so freaking cool!!!
I really enjoyed your explanations along the way. Made it really enjoyable
Who wouldn't guessed that today would be one of the biggest milestones in the history of Tetris. A lot of it is thanks to you buddy!
If you want to create a more human-like bot and make it more exciting, I recommend adding RNG to the reaction time. Normally distribute it around 0.25 with a standard deviation of 0.03. This would be very realistic to a human reaction time. Also can add RNG to the speed for each piece. 13.75 + normal (0,0.5) error term.
On a good day, a competitive human with good reaction time can get around 0.18. Sometimes we mess up tapping and slow down for a second, sometimes we barely get that extra tap in.
I absolutely LOVE the micro-adjusments!
I love how the AI loves flat line instead of just put everything on the left
5:22 insane delayed burn
8:11 another insane delayed burn
named after your childhood pet rabbit , awesome ! ❤
also awesome project 💪
And then a human hits 1.6 and flat rolls the extended score counter...
This is by far the BEST game I've ever seen in NES tetris. Not only because of the score, but the optimized piece placements and skillful adjustments. Even if rollers may surpass the score in the future, it won't change the fact that this is the best game. Truly stunning human endeavor! Keep up the good work, Greg!
i would say that DOGs soulutions are way more impressive
Just seeing this now but the world record for points is now at 2.3 million points. It’s insane how far Tetris has been pushed
Would love to do an analysis of great players piece placements vs. StackRabbit…. maybe we can learn something
Just wait until JD (Joseph) masters rolling. 15hz taps at a 2 mil score babyyyy
And now, human-achieved. Madness!
It was very well possible to stack for a comfort-zone Tetris in Level 37 at 10:56 by just stacking the J, and for 1.5 million and 45'600 points for the Tetris alone it would have been worth going for it. Huge game though, and awesome programming!
the audio for your voice is a bit low for me? Might just be my phone but yeah
Yeah it was a little scuffed, I'll try to boost it more next time!
Added subtitles for those having trouble hearing!
7:42 was weird. Can the AI not predict the outcome of a line clear? Up until then, it seemed like it would always use long bars immediately when tetris ready.
Yeah it was a bit odd. I think this particular instance is due to it really not liking that J dependency in the context of its current stack (probably because the left wall of the dependency is quite high, which is usually quite bad. But in this case isn't so bad, since it's along the left wall). In this case though I agree that taking the Tetris is probably the better move
@@GregCannon7 how much data can you retrieve? Would it be possible to see what kind of rank the AI assigned to that move?
Good work btw, this is massively fascinating
Amazing work. The placement of the first piece was… odd. Any idea why it chose to immediately create a hole? I can see how calculating a move on a blank board might be tricky.
great video. little bit quiet maybe but great idea and work
If cheez made it to level 41 with his best Tetris rate in the kill screen he could probably score a 1.6 or 1.7 million, absolutely insane
She's such an insane record breaker.
She? I thought he is a he
Noo their gender is attack helicopter
Is StackRabbit a reference to StockFish ?
Yeah, it's definitely remeniscent of Stockfish. It's also cause I love rabbits, and cause the name rolls off the tongue 😁
(It also has lots of parallels to Stockfish in terms of competition vs. other Tetris AIs. The two other major NES AIs at the moment are going all in on deep neural networks, whereas StackRabbit (like Stockfish) instead leverages deep move search and a high quality evaluation function)
@@GregCannon7 yeah that's what I noticed. Could you do a das version of it ? I would like to see how it survives without relying on tapping
The adjustments are ridiculous.. gg
And now we’ve got a WR of level 235 and 16.7 million
Fantastic Work!!! Can Stack Rabbit get a DAS 1.3? Does stack rabbit know DAS or does it just have adjustable tapping speed?
It currently only has a flexible tapping speed, but there might be future possibilities of it playing with actual DAS! It's not unfeasible by any means, just is a matter of whether I get a chance to do it amidst everything else upcoming on the project 😅
Amazing work!
Really hoping aGameScout does a video on this subject.
Question... Is it possible to use this existing algorithm to determine if a maxout is possible starting on level 29? So far, Cheez has come the closest at an amazing 570k!
StackRabbit actually has a number of maxouts from a 29 start! 15 Hz is the lowest tapping speed that it's gotten a maxout 29 start, and it's also gotten them with 20 and 30 Hz. Lower tapping speeds are mayyybe possible but would require insane RNG or significantly better killscreen stacking
@@GregCannon7 so awesome!!
Interesting video. Needs to increase audio volume
Do you have a video about how you made StackRabbit? Specifically, how did you hook it up to an actual NES?
Very nice work! From another machine learning/AI enthusiast, which algorithm are you using? The way you describe the board as states and evaluating with 3 moves into the future very much sounds like a monte carlo tree search to me, but I suppose you could do something similar with a recurrent neural network as well?
At the moment it does a 2-ply search, and then chooses the best ~10 or so pairs of the first two moves to evaluate at depth 3. At that point it takes the top placement for each of the 7 3rd pieces, and averages them to get the EV. It also does a 1-ply search with a similar 7-branched hypothetical search to determine the initial placement (before its reaction time is over and it hasn't 'seen' the next box yet).
From an AI standpoint the tree search isn't too complex, but it works quite well for this purpose. There's also tons of implementation complexity that stems from the fact that it does all of this 7 times simultaneously for each of the possible 2nd pieces (since it doesn't know the 2nd piece yet when it makes the initial placement)
MCTS would def be something to look into in the future, since it could potentially get more depth on the promising placements. I didn't use it initially because the rest of the implementation of StackRabbit has so many moving parts I wanted to stick with something comprehensible and deterministic for debugging.
Jounce skipped 1.5 and got 1.6
This is the thing I have theorised a while ago, but I have no background in programming. Thanks for putting it into action. Great means to look at stacking options. If you could do one for DAS that would be cool as well, tho.
I assume that this AI is based on many hypertappers such as Joseph Saelee and EricICX. Cheez, a rolling player, has achieved 1.46M (New WR) as I remember, and according to this, we will be able to achieve 1.5M more easily.
That is a very good AI I have to say
Can the AI do pole vaults? would be really useful like at 6:39 where it decides to place the Z on the right instead of the left
It actually can! It thinks it's another kind of spin, e.g. the default placement would be vertical L and then it finds a "spin" that unrotates it to the final placement
Still beats Alex T's new record, but humans are within spitting distance! StackRabbit better watch out lol
POV smartest man in the world makes AI
I would be interested to know what biases StackRabbit has in terms of looking for getting multiple lines and Tetrises, over trying to maintain a landscape that can cover most or all pieces, and does that change during a particular play session, is it randomised in a certain set of ranges or will they adjust depending more on what is on the board at that moment?
I Think Joseph will beat it this year
Who? Is there a new Joseph in the community?
@@Poet13xRatedRKO Don't be dumb
@@limitbassfishing2733 no you!
Joseph retired from NES Tetris.
Who's here after Jounce's 1.6?
Truee, rolling changed the game! Time to see what StackRabbit can do in the "rolling-possible" format (20Hz with human reaction time 😮
Really great stuff!
Also remember when das was the traditional way? XD
Pepperidge Farms remembers
This is extremely cool! I’m wondering- can human change directions as quickly as the bot does? It seems to do a lot of quick left right switches (especially for those micro adjustments) it might be another interesting limitation to add.
It's hard to specify exactly. Although I will say that the 416 ms gives plenty of extra time to switch the finger position. It'll never do like an insta-tuck, but some of the tucks and spins it pulls off can be on the tougher side.
I'm interested in StackRabbit's limitations with a Lv.39 double killscreen. Does that double killscreen end indefinite skillscreen play for good? Or is there still a chance?
Yoooo someone just got 1.6 milion check on tetris monthly plays
Wow!! This is fantastic. What were the inputs you gave to the AI?
It's impressive, but I feel like it's slightly disappointing to look at the memory to find the next piece rather than parsing the screen display.
Still damn impressive in light of your next video.
I do have a console version that plays by visually scanning the board! The emulator one reads from memory mostly because it's logistically easier
@@GregCannon7 That's what I'd really like to see. An A.I. playing an NES console! Interfacing through the controller port would be obvious, but reading the board would be problematic.
super cool!
Great vid!
I would be interested in finding out if there are any rolling limits. So higher Hz rate (30?) and reaction time of 250 ms
Matt Martin just told me about this, this is pretty awesome. I'd really love to see the max at 7.5hz though lol
I think that would be longer than 12hz cuz it would be to scared to even get a triple
would love to browse your code. Not that I would understand it I doubt. Very clever stuff
Could some link a video of the 47 million score with no limits? I feel like that could be so cool to see
I'm working on editing a video for its new best score of 102 million!
Is there a video proof of Joseph Saelee doing 1,439,000 anywhere? If so, could someone link it, please. I thought the 1.4 million barrier hadn't been broken yet by human play.
There was no video, but 10+ people watched him do it in screenshare in a video call. It's not the most solid evidence but it's been generally accepted by the community
@@GregCannon7 Oh cool! I had nooo idea. That's exciting. Thanks, Greg!
Anyone here after 1.6?
is the audio muted? /s
is there a vid with das only?
Why does the bot never do long bar flat to burn on kill screen? Is it actually just that un optimal?
There's nothing bad about it, but if the bar can reach the sides I think it's often better to build out the sides than clear the line. If it can't reach the side, then burning would be the next best option
I wonder what happen if the AI only knows 1 tetriminos piece next (only 1 piece in future)
It currently gets around 930k median, with similar restrictions to the one in the video, which is quite good considering how hard it is to stack without considering the next piece at all
@@GregCannon7 what's the median if it's only consider 1 next piece?
@@khairur_rachim oh like when it plays the whole game with only 1 next piece, the median score it gets is around 930,000 points.
@@GregCannon7 wow that's looks very nice. What's the best possible score on that case?
@@khairur_rachim the best it's gotten with no adjustments for the next box is a bit shy of 1.2 million. It's unusual because it's pretty consistent at getting 900k+ but it's really hard to get really high scores. Probably due to the fact that without knowing the next piece, you get forced into making holes pretty frequently, so it's hard to play completely clean
How does StackRabbit work ? Is it screenshot parsing ? Or does it had access to the game's data more directly ? I would like to do something similar with DAS but I don't know how to get the informations on screen.
It reads the pieces and the game state bit from the emulator memory (using a Lua script). As for the board, it tracks the state internally since it always knows what the board will be after every move it makes
@@GregCannon7 ok thank you. Does that means I have to do everything with lua ? Or can I somehow transfer the data to use python instead ?
@@shazers7313 I definitely wouldn't recommend doing the whole thing in Lua. I currently have a server set up that the Lua script talks to using HTTP requests. There might be other ways too, but that's what's worked for me
@@GregCannon7 any plans on releasing the source?
I hate to be that guy this long after the video came out, but... the audio volume is nearly non existent... like i had to quadruple my monitor volume to hear that you're actualyl speaking
Boom tetris for stackrabbit
How high of a score can it get while restricted to DAS?
Cheez just did a 2.3m lol
Can you simulation with das restrictions?
how do you compile this?
Well this didn't age well considering what the new max is...
you're too quiet I can't understand what you're saying
Unfortunately much too quiet
41 was just hit 2 days ago. Shockingly not by Cheez.
lvl 41 beat by Alex Tatch 2 weeks ago, without rolling
Can't hear you.
Yeah the audio wasn't recorded loud enough :(
I added subtitles if you're having trouble hearing!
Eh, Scotto Bozo got 1.5 by replaying a TAS run with his own two hands with DAS and not even playing into kill screen
emulate nes on snes
Perfect vid but one problem and I am not mad about it but your voice is a little bit cuiet