Minecraft wizard, and record holder for the Super Mario World speedrun [SethBling] is experimenting with machine learning. He built a program that will get Mario through an entire level of Super Mario World – Donut Plains 1 – using neural networks and genetic algorithms.
A neural network simply takes an input, in this case a small graphic representing the sprites in the game it’s playing, sends that input through a series of artificial neurons, and turns that into commands for the controller. It’s an exceedingly simple neural network – the network that can get Mario through an entire level is less than a dozen neurons – but with enough training, even simple networks can accomplish very complex tasks.
To train the network, or weighting the connections between inputs, neurons, and outputs, [SethBling] is using an evolutionary algorithm. This algorithm first generates a few random neural networks, watches Mario’s progress across Donut Plains 1, and assigns a fitness value to each net. The best networks of each generation are combined, and the process continues for the next generation. It took 34 generations before MarI/O could finish the level without dying.
A few members of the Internet’s peanut gallery have pointed to a paper/YouTube video by [Tom Murphy] that generalized a completely different technique to play a whole bunch of different NES games. While both [SethBling]’s and [Tom Murphy]’s algorithms use certain variables to determine its own success, [Tom Murphy]’s technique works nearly automatically; it will play about as well as the training data it is given. [SethBling]’s algorithm requires no training data – that’s the entire point of using a genetic algorithm.




The four main sides of the controller case are standard stacked grey LEGO bricks. The inside of the case is mostly hollow, only with some supporting structures for the walls and buttons. The top is made from 4 individual LEGO panels that can be quickly and easily removed to access the interior components. The large LEGO buttons slide up and down inside a frame and are supported in the ‘up’ position care of some shock absorbers from a Technic Lego set. The shocks create a spring-loaded button that, when pressed down, makes contact with a momentary switch from Radio Shack. Each momentary switch is wired to a stock NES controller buried inside the large replica. The stock controller cord is then connected to an NES-to-USB adapter so the final product works with an NES Emulator on a PC.


