This is amazing. Tom Murphy created a computer program that actually learns how to play classic NES games on its own, with a little instruction from Tom.

You can see the computer’s progress (which begins near 6:10, after Tom's explanation of the program) in learning how to play Super Mario Bros. (and other games) in the video above. It’s a little hyperactive in the first version of the program, but Tom manages to iron out the intricacies to get it to play the game pretty damn well.

The project and accompanying research paper were created for the SIGBOVIK 2013 annual research conference. If you’ve got time, you should check out Tom’s research paper, which is fascinating though honestly a bit over my head.

If you don’t have time for the full thing, here’s the basic explanation from Tom:

The basic idea is to deduce an objective function from a short recording of a player's inputs to the game. The objective function is then used to guide search over possible inputs, using an emulator. This allows the player's notion of progress to be generalized in order to produce novel gameplay.

If you watch the video long enough, you can even see the computer pull off some tricky moves in a couple of the games shown off. I repeat: this is amazing.

learnfun & playfun: A general technique for automating NES games [Tom Murphy]

Thanks for the find, big brother!