Karma Riuk ef25455ac0
Some checks failed
pre-release / Pre Release (push) Has been cancelled
added gif for readme
2025-02-19 15:00:37 +01:00
2025-02-19 15:00:37 +01:00
2025-02-19 13:44:17 +01:00
2025-02-19 13:48:22 +01:00
2025-02-19 13:56:14 +01:00

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 (that shows nothing, but is useful for debugging the AIs) 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 stickfosh
    
  3. Run the program:
    ./stickfosh
    

Running the Application

Stickfosh provides multiple execution modes, selectable via command-line arguments:

Mode Description Example Command
Human vs AI Play against the AI ./stickfosh --mode human_vs_ai
AI vs AI Watch two AI versions compete ./stickfosh --mode ai_vs_ai --ai1 v3_AB_ordering --ai2 v6_iterative_deepening
Human vs Human Manually input moves for both sides ./stickfosh --mode human_vs_human
Perft Testing Performance test move generation ./stickfosh --mode perft
Custom FEN Start from a custom position ./stickfosh --mode ai_vs_ai --fen "rnbqkb1r/pppppppp/8/8/8/8/PPPPPPPP/RNBQKB1R w KQkq - 0 1"

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
Stockfish, but worse :)
Readme 3.7 MiB
Languages
C++ 97.6%
Makefile 2.4%