Saturday, March 26, 2016

Teach a computer to play air hockey

I'm always looking for an excuse to build something fun... So it was only a matter of time before I got the idea to create a virtual air hockey game, and then train a neural network to play it.

Check it out:

The idea is pretty simple. First setup some basic physics for controlling the puck and paddles. Instead of writing a new physics engine I decided to go with matter.js (it's easy to use and supports everything I needed here). The neural network is a basic multilayer perceptron handled using synaptic.js (another great library that works well here). It's trained to recreate the actions of a human player given the position of the objects as inputs.

I've also been using this mini-project to track my development process using releases so if you're curious how this was put together you can look at each step along the way here:

The next step will probably be to add export/import capabilities for the neural networks (that way we can train two different networks differently and then watch them go head-to-head).