Tom Murphy has created a computer program that learns how to play classic NES games on its own. The software, named 'Playfun,' uses pre-recorded snippets of gameplay and its own emulator to determine the best course of action when faced with obstacles, teaching itself along the way.
Saving individual gameplay 'memories' into the system (stomping on Goombas, going down pipes, features individual to the game), Tom further implements a simple definition of "winning" into 'Playfun' as the challenge to score as many points as possible and progress through the levels.
"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."
The early versions, as you can see from the video (gameplay begins at 6:10, if you want to skip over Tom's explanation of the program) don't necessarily work; but as the kinks are straightened out, he manages to get 'Playfun' playing really well, even exploiting some in-game bugs!
Did you know Mario is always invincible in Super Mario Bros. when he is moving down? Neither did we, but a piece of automated software did!
The project and accompanying research paper, fondly titled "The first level of Super Mario Bros. is easy with lexicographic ordering a and time travel ...after that it gets a little tricky," were created for the SIGBOVIK 2013 annual research conference.
This is an amazing piece of research.
Source: learnfun & playfun: A general technique for automating NES games [Tom Murphy]