NES Tetris AI hits 102M points and level 237
youtube.com
youtube.com
Here's a video of a former world champion 'hypertapper' Joseph versus the newly ascendant 'roller' Huff, from the world championship a couple weeks ago.
They both reach a million points (called a 'max out' because the unmodified game stops counting after that) at around 9 minutes in to the video:
https://docs.google.com/spreadsheets/d/1ZBxkZEsfwDsUpyire4Xb...
Looks like Huff finally beat HydrantDude's 1.6 million.
Looking at the github repo, it looks like it's actually more of a classical AI doing traditional game tree search. There is some interesting code around the RNG, though: apparently the RNG does make certain piece sequences more likely than others, and there's a lookup table for the probability of the next piece given the current piece:
https://github.com/GregoryCannon/StackRabbit/blob/master/src...
I suppose one could extend this to be a 3-dimensional lookup table with the probabilities of the next pieces given the last two pieces, or to extend it to 4 or 5 or (if you had infinite resources) 100. At some point you'd know enough to be able to predict the next piece with 100% accuracy.
Newer versions of Tetris give random permutations drawn from a 7-tetrominoe bag, so the longest possible drought between two "I" pieces is 12 tetrominoes.
If it is a true RNG, then good luck, it would be unpredictable by definition.
Me, 25 minutes later: Dang, that was cool and a fun nostalgia trip!
I'm not sure it was on purpose, but a nice solution.
Edit: keep piling on me, guys. That'll teach me to like obscure idioms
> A gentleman was boasting that his parrot would repeat anything he told him. For example, he told him several times, before some friends, to say “Uncle,” but the parrot would not repeat it. In anger he seized the bird, and half-twisting his neck, said: “Say ‘uncle,’ you beggar!” and threw him into the fowl pen, in which he had ten prize fowls. Shortly afterward, thinking he had killed the parrot, he went to the pen. To his surprise he found nine of the fowls dead on the floor with their necks wrung, and the parrot standing on the tenth twisting his neck and screaming: “Say ‘uncle,’ you beggar! say uncle.’”
On the NES, such a memory management approach would be particularly insane.
Why would you anyway? It’s such a basic, predictable game. There’s a fixed size playing field that contains only one fixed size moving object.
But the level being near 256 suggests an integer overflow
What's the best way to programmatically interface with an NES ROM in 2022? JSNES, from which you could run tensorflow.js, seems perfect for browsers. But NES-py integrates with Open AI Gym env
https://github.com/Kautenja/nes-py/wiki/Creating-Environment...
https://www.youtube.com/watch?v=sgEIoOQgjFg shows how to integrate an AI using gym-retro, stable baselines with pygame so you can fight it.
It would be interesting how algorithm featured on the video compares to these described on the linked page, but it would need different runtime as NES crashing at just over 3000 lines is few orders of magnitude too short.
- found on the internet, 2021
e: This is precisely why there's the distinction of "artificial general intelligence"
Ecco simply missed the fact that the Tetris AI used here is actually exactly that: a deterministic algorithm that uses heuristics to search the best placement options.
This is not deep learning in case you're wondering.
Honestly, I am not super impressed. Where are the Quake and StarCraft bots? Deepmind hasn't shown anything interesting on that front after their last bot got smacked repeatedly buy a couple of low tier European players
For many problems, the AI is given as much information as possible of the state of the system to make decisions. The AI knows the entire state of the game in Tetris or Go or Chess.
Starcraft/RTSs are designed specifically to remove information from the player and force you to balance info gathering, building, and countering new information, which is a massive difference from the currently impressive AlphaGo and such
I still remember the principal (somewhat curly hair and glasses) engineer looking extremely pissed after the matches. Funny how they switched priorities right after that. 100% completely unrelated, as you say.
Also, as NikolaeVarius pointed, SC is a game of imperfect information. If that's not interesting from an AI perspective, I don't know what is.
I completely disagree. This is much more interesting than the toy problems that most academics work on.
RL problems in this space are inherently difficult since you only get 1bit of “ground truth” information (win/loss) at the end of a game and have to guess which of your actions contributed to that outcome. Sure you can throw hardware at the problem, but you’ve got a huge incentive to minimize costs.
It’s only recently that the default consensus for RL problems changed from “this is an inherently creative endeavor and needs human input” to “you can probably do it if you throw enough GPUs at the problem”.
Now, applying MuZero might be powerful to solve SC2 with much more compute, but that is still not something many DRL researchers would give you large odds on, and you still probably need to come up with some ways to abstract it and condense the game tree into something tractable for planning over, especially with the partial information making modeling the future much harder. (VQ-VAE and related generative modeling approaches are promising in this regard... but still no slam dunk. If DM announced tomorrow that MuZero+VQ-VAE had defeated AS and a bunch of human pros, people would be extremely shocked, even as they scrambled to tweet about how they saw it coming all along & also are very offended by the waste of CO2 and how unreplicable it is on a grad student budget.)