Some checks are pending
pre-release / Pre Release (push) Waiting to run
Stickfosh
Stockfish, but worse :)
Overview
This project is a Chess AI built using the Model-View-Controller (MVC) pattern. It provides a modular framework for playing chess, allowing both human vs AI and AI vs AI matches. The AI has undergone several iterations, improving its decision-making capabilities through enhancements like alpha-beta pruning, move ordering, iterative deepening, and transposition tables.
Features
- MVC Architecture: The project follows the MVC pattern for clean separation of concerns:
- Model: Handles chess rules, board state, and AI logic.
- View: GUI and NoOp (console-based) rendering options.
- Controller: Manages interactions between players and the game.
- Multiple AI Versions: Several AI versions with increasing complexity have been implemented.
- AI vs AI Matches: A dedicated mode to watch different AI versions compete.
- Human vs AI Mode: Play against the AI using a graphical interface.
- FEN Support: Load chess positions using FEN notation.
- Performance Testing (Perft): Built-in performance testing for move generation.
AI Iterations
This project has undergone multiple AI improvements, including:
- v0 Random AI: Selects moves randomly.
- v1 Pure Minimax: Implements basic minimax search.
- v2 Alpha-Beta Pruning: Optimizes minimax with pruning.
- v3 Move Ordering: Prioritizes moves to improve search efficiency.
- v4 Search Captures: Enhances move ordering by focusing on captures.
- v5 Better Endgame: Introduces heuristics for endgame play.
- v6 Iterative Deepening: Dynamically adjusts search depth for better performance.
- v7 Transposition Tables: Caches board states to reduce redundant computations.
Installation & Usage
Prerequisites
- C++ Compiler (C++17 or later)
make
- SFML (for GUI rendering)
Build Instructions
- Clone the repository:
git clone https://github.com/karma-riuk/stickfosh.git cd stickfosh
- Create a build directory and compile:
make main
- Run the program:
./main
Running AI vs AI Matches
To watch two AI versions play against each other, modify main.cpp
to instantiate the desired AI versions and run:
./main
Video Demo
Future Improvements
- Implement opening book for better early-game decisions.
- Enhance evaluation function with more advanced heuristics.
- Introduce neural network-based AI for machine-learning-driven play.
- Introduce Monte-Carlo Tree Search for stochastic driven play.
Description
Languages
C++
97.6%
Makefile
2.4%