In December 2012, a developer going by chncwang published FoolGo on DEV.to—a Go-playing AI engine written in C++ that achieved roughly 40,000 complete game simulations per second without neural networks, an opening book, or any hand-crafted evaluation function. The project arrived three years before DeepMind's AlphaGo would popularize deep learning approaches to the ancient board game.
What Makes FoolGo Different
The engine relies entirely on Monte Carlo tree search (MCTS) with UCB1 as its selection mechanism. This means every move decision involves running thousands of random game playouts, then statistically choosing the branch that performed best. The approach is brutally simple compared to modern Go engines, yet it produces competent play through sheer computational brute force rather than learned pattern recognition.
Engineering for Speed
The headline performance number—40,000 games per second—didn't come from smarter algorithms but from careful systems engineering. C++ provides the baseline performance, but the real gains likely came from efficient board representation, fast random number generation, and minimizing memory allocations during search. For a project that explicitly avoids complex evaluation functions, raw simulation speed becomes everything.
Historical Context
FoolGo represents a snapshot of Go AI research before neural networks took over. Pure MCTS approaches like this one were competitive in the early 2010s but couldn't scale to match human professionals. When AlphaGo debuted in 2016 with its combination of deep convolutional networks and MCTS, it rendered engines like FoolGo academically interesting rather than state-of-the-art.
Why This Still Matters
For developers building game-playing systems or optimization algorithms, FoolGo demonstrates a valuable principle: sometimes you can substitute computation for sophistication. The project's minimalist design—no learned weights, no domain-specific heuristics—makes it easier to understand, modify, and extend than modern ML-based alternatives.
Key Takeaways
- Pure MCTS with UCB1 selection requires zero training data or handcrafted features
- 40,000 simulations per second comes from C++ optimization, not algorithmic breakthroughs
- The approach predates but parallels techniques used before deep learning dominated game AI
- Simplicity makes FoolGo an excellent teaching tool for understanding tree search fundamentals
The Bottom Line
FoolGo isn't going to beat KataGo or Leela Zero anytime soon, but as a systems programming showcase and historical artifact, it's worth your time. Sometimes the best way to understand modern AI is to build something older—and see exactly what constraints shaped the field before compute became cheap enough to solve problems with raw statistics instead of smart ones.