stickfosh/README.md
Karma Riuk 0aa8b7a16f
Some checks are pending
pre-release / Pre Release (push) Waiting to run
updated README
2025-02-19 13:39:15 +01:00

2.8 KiB

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:

  1. v0 Random AI: Selects moves randomly.
  2. v1 Pure Minimax: Implements basic minimax search.
  3. v2 Alpha-Beta Pruning: Optimizes minimax with pruning.
  4. v3 Move Ordering: Prioritizes moves to improve search efficiency.
  5. v4 Search Captures: Enhances move ordering by focusing on captures.
  6. v5 Better Endgame: Introduces heuristics for endgame play.
  7. v6 Iterative Deepening: Dynamically adjusts search depth for better performance.
  8. 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:
    git clone https://github.com/karma-riuk/stickfosh.git
    cd stickfosh
    
  2. Create a build directory and compile:
    make main
    
  3. 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.