Intro

A full-stack Gomoku AI system featuring a C++ minimax engine with bitboard evaluation and a Python AlphaZero implementation trained from scratch on a GCP Ray cluster — 265 training iterations across four runs, 19×19 board with custom capture and double-three rules, native C++ MCTS extensions, and a Nuxt.js frontend with real-time WebSocket play.

This project was developed as part of an AI assignment at École 42, with contributions from Sungyong Cho and Woolim Park. The Minimax engine was built for the original assignment, while the AlphaZero implementation was added afterward as a post-assignment extension.

Gomoku is a classic board game where two players, Black and White, take turns placing stones on a board. The goal is to be the first to form an unbroken line of five or more stones horizontally, vertically, or diagonally.

In traditional Gomoku on a 15×15 board, it has been mathematically proven that the first player (Black) has a guaranteed winning strategy (Allis, 1994). As a result, official rules often restrict Black from making certain moves, such as the "double three," to balance the game. However, this version of the game is based on the specifications of the École 42 assignment, where both Black and White are subject to Double-Three Prohibition by default, along with an additional capture rule.

Because of this, the rules in our game may differ slightly from standard Gomoku. Detailed explanations of the rules can be found in the Basic Rules and Optional Rules sections.

Our Gomoku includes two play modes: Player vs AI (against Minimax or AlphaZero) and Player vs Player (PvP) for local competitive play between two human players.

In addition, we have implemented several advanced features to enhance gameplay. These include a History Mode for reviewing previous moves, Undo Turn / Undo Move, URL import/export and JSON export capabilities for sharing or restoring game states, and an Evaluation System that analyzes and scores the current move. These features are explained in more detail in the Features section.

For the full training narrative — including four GCP runs, a mid-training rule bug, and the engineering lessons that shaped the final system — see Training History, Deployment, and Lessons Learned.