Mar.IO. We wanted to create an AI that played a fun game!

What it does

It's an AI that plays a game of double-layered Tic Tac Toe.... very, very well. Throughout the course of the Hackathon, the AI played against 5 human opponents. The AI won the game every time, and was given no advantage whatsoever (although in 2 of the 5 games, the AI was allowed to move first).

To play against this AI, we've built a front-end web app in NodeJS to allow the human player to play a release-ready game of double-layered Tic Tac Toe on the web.

How we built it

The AI itself was built with JavaScript using the Monte Carlo Tree Search algorithm. This is a heuristic search algorithm based on simulation and self-reinforcement through back-propagation.

This AI is persistent and will literally continue to learn every time it plays against an opponent. We initially trained it by having it play against itself over 100,000 times, although later on we trained it against human players during the Hackathon. What it learns is saved to a server-side file that is approaching over 1GB in size by the time of the end of the Hackathon. This file size is a good benchmark for how intelligent of an opponent this AI is.

The AI can be called upon to make a move on the board through a custom API that we host locally. All it needs to determine the best move is a string of all previous moves made in the game.

To test it, we built a Debug-Only application in C# that we used to initially test the AI throughout the early stages of our project.

Challenges we ran into

We initially used ASP .NET as a platform to make the front-end website, but we realized that we could build a more responsive and visually appealing website using React. We had to eventually switch out of the ASP .NET platform altogether.

Accomplishments that we're proud of

From the start of this Hackathon to the end of it, no one managed to beat the AI.

What we learned

Don't wait for the line to get free Panda Express food to die down, the line will never stop growing. We learned how to navigate the Wolfram API and implement it into our solution. We also learned how to use Git in technical teamwork situations.

What's next for TicTac.IO

We plan to publish this to a website-hosting service (probably Azure) so that it can be played by anyone with an internet connection. In doing so, the AI will continue to learn and become a better opponent.

Share this project: