The best way to play NES games, and game dev resources

I saw a great article in Wired this weekend about Tom Murphy, a software engineer who built a generic program to play NES games. He built two tools, one to record himself playing his NES, and one to play it on its own. It does pretty well! It finishes a few levels!

The amazing thing is how simple the program is, and how it applies to multiple games (except Tetris, as you’ll see). The program doesn’t use any pathfinding or advanced algorithms. It maps input from the controller and a relative screen position for the character, and then uses a few constraints to try to increase the player’s score. Watch the video to see it trying to beat Super Mario, Karate Kid, Pac-man, and Tetris.

The article mentions that there are other competitions for Mario-playing algorithms. Check out this super smart Mario AI in a chaotic custom made level.

I’ve dabbled in game development, and if you’re interested, there are some great resources. On iOS, Ray Wenderlich is still king, with tutorials on beginning, intermediate, and advanced game programming (not to mention everything else iOS). Ray’s site has tutorials for getting into Cocos2d, which can give you plenty to work with. If you want to add physics, Chipmunk and Box2d are great options. If you want an even bigger jumpstart, King Wenderlich just put out a great set of starter kits.

If you’re iOS-shy, there are tons of JavaScript gaming frameworks. I’ve been toying with ImpactJS for a while and enjoying it. It’s not free, but it is simple and includes a level editor.  There are other options too, for sure. Maybe Enchant.js? When you’re ready for prime time, maybe something like Unity3D?

Of course, you could just keep playing MineCraft.