From 0aa8b7a16f2a91b91317119c60d78b2acbd8f552 Mon Sep 17 00:00:00 2001 From: Karma Riuk Date: Wed, 19 Feb 2025 13:39:15 +0100 Subject: [PATCH] updated README --- README.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 65ccaa9..c3f67d5 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,82 @@ # Stickfosh -> Stockfish, but worse :) +> [Stockfish](https://stockfishchess.org), 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: + +1. **v0 Random AI**: Selects moves randomly. +1. **v1 Pure Minimax**: Implements basic minimax search. +1. **v2 Alpha-Beta Pruning**: Optimizes minimax with pruning. +1. **v3 Move Ordering**: Prioritizes moves to improve search efficiency. +1. **v4 Search Captures**: Enhances move ordering by focusing on captures. +1. **v5 Better Endgame**: Introduces heuristics for endgame play. +1. **v6 Iterative Deepening**: Dynamically adjusts search depth for better performance. +1. **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 + +1. Clone the repository: + ```sh + git clone https://github.com/karma-riuk/stickfosh.git + cd stickfosh + ``` +1. Create a build directory and compile: + ```sh + make main + ``` +1. Run the program: + ```sh + ./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: + +```sh +./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.