A general technique for automating NES games
April 11, 2013 11:58 AM   Subscribe

 
Awesome for the ending, if nothing else. =)
posted by andreaazure at 12:10 PM on April 11, 2013 [3 favorites]


The paper is worth reading too. Here's how it starts:
1 Introduction

The Nintendo Entertainment System is probably the best video game console, citation not needed.
posted by theodolite at 12:23 PM on April 11, 2013 [9 favorites]


Very cool. I've always been thinking there was an approach to this but I was too stupid to figure it out.

It seems also that it's very good at fuzzing and finding bugs in games. I wonder what would happen if you added total code coverage as a parameter to the objective function.
posted by RobotVoodooPower at 12:29 PM on April 11, 2013


Man! I was going to post this, but did not. Good job.
posted by Going To Maine at 12:33 PM on April 11, 2013


"...it may be time to automate the playing of NES games, in order to save time."

I love this.
posted by Yesterday's camel at 12:40 PM on April 11, 2013 [1 favorite]


Seeing the computer-based controler input overlayed on super mario brothers was amazing.
posted by Phredward at 12:55 PM on April 11, 2013


Another gem: "The pseudocode gives a pseudoimplementation of the algorithm that is more pseudodetailed."
posted by Yesterday's camel at 12:58 PM on April 11, 2013 [2 favorites]


I hope he posts a lot more gameplay videos in the future, these are great.
posted by vibratory manner of working at 1:05 PM on April 11, 2013


“Hudson's Adventure Island”? That's just Wonder Boy, only with the main character sprite changed. (The first few levels are identical in their layout.)

I wonder what the story there is. Was it, at the time, legal to copy everything about a game as long as one changed the name and main character, or was there some weird licensing anomaly where Hudson Soft got all the rights to the game except for the trademark?
posted by acb at 1:28 PM on April 11, 2013


If I had read the paper prior to posting, I would've made the title an "on a scale of" joke.
posted by a snickering nuthatch at 1:43 PM on April 11, 2013


So how long until it can play Dark Souls for me? Those drakes aren't going to just jump off of that cliff and kill themselves.
not all of them will anyway

I didn't watch the whole video but I get the impression that it's mostly a matter of priming the program to be able to find where the score is on most games and understand the basic mechanics, so in a few years it should be possible to make a similar program that can solve a subset of 3D games. He could probably get it to solve most simple puzzle games by changing what it looks for, since most other common puzzle games involve moderate anticipation and only how you're supposed to match the pieces changes from hexic to zuma to lumines.

Thinking about it, Dark Souls would probably be an easier game to solve than a lot of other 3D games if you can get it to figure out where the hell it's supposed to go since every single enemy gives off points that increment a visible counter.
posted by sandswipe at 2:13 PM on April 11, 2013


didn't watch the whole video but I get the impression that it's mostly a matter of priming the program to be able to find where the score is on most games and understand the basic mechanics, so in a few years it should be possible to make a similar program that can solve a subset of 3D games.

That could be, but it's kind of beside the point. I mean, the program tries to optimize values in RAM. So its very specifically not about locating where the score happens to be in memory, just about possible orderings. If you want AIs that can actually play, you might want to check out the Mario AI championship.
posted by Going To Maine at 2:17 PM on April 11, 2013


Here is a link about using reverse engineering techniques to cheat at games (Age of Empires, in this talk) although this approach is very manual.
posted by RobotVoodooPower at 2:24 PM on April 11, 2013


THAT WAS DELIGHTFUL.
posted by Frobenius Twist at 2:33 PM on April 11, 2013


acb: They were developed by the same company. Also: To further complicate matters, Westone had a unique licensing arrangement with Sega whereby Sega retained the rights to the names and characters of the games in this series, but Westone retained the rights to everything else. Westone, in turn, had a licensing arrangement with Hudson Soft, who created new characters and titles and ported these games to non-Sega platforms.
posted by zsazsa at 2:38 PM on April 11, 2013 [2 favorites]


Also the guy in this video has the exact same beard and lack-of-hair thing going that I do, and it's kind of freaking me out.
posted by zsazsa at 2:39 PM on April 11, 2013


Definitely delightful. Would watch and not grok again. Want to grok some day. Me grok ML maybe some day. Oh, this is an opportunity to drop this humorous find again. This would be Skynet's outcome.
posted by lordaych at 12:13 AM on April 12, 2013


I'm only 2 minutes into this video and it's the hilariousest thing evar.
posted by DU at 4:20 AM on April 12, 2013


"mostly a matter of priming the program to be able to find where the score is on most games and understand the basic mechanics,"

I don't think it does try to understand the basic mechanics. It does try to find the score, where score is "variable that goes up overall, depending upon user input." And then it tries to find inputs that make the variables it's watching go up.

so in a few years it should be possible to make a similar program that can solve a subset of 3D games.

I think so. It would mostly be a matter of plugging in a different emulator and throwing more processing power at it. But that's possible precisely because it ignores the mechanics of the game.


A lot of its strange behaviour does seem explainable by how it uses the time-travel, and the limit of how far in time it can travel. It is very good at dodging ghosts in Pacman, because that's within range of the futures it's looking at, but it's bad at making lines in Tetris because the time between starting a line and completing it is too large for it to see the pay-off.
posted by RobotHero at 9:13 AM on April 12, 2013 [1 favorite]


Bub navigates this game surprisingly well.
Once he's on his last life, he becomes careful and pauses
the game when things are looking grim|here pausing
for about a thousand frames, burning through the fu-
tures until one randomly comes along that looks good.
He then unpauses and executes that good future, killing
three of these monsters in short order.


I like how the program tries to manipulate the RNG just like TA speedruns do.
posted by ersatz at 11:26 AM on April 12, 2013


...burning through the futures until one randomly comes along that looks good...

See also: Quarantine by Greg Egan
posted by DU at 2:47 AM on April 13, 2013 [2 favorites]




« Older Blinking lights convey so much filler   |   I hope it is at least better than Prometheus... Newer »


This thread has been archived and is closed to new comments