# Debug build (for development)
make -j2 ARCH=x86-64 debug=yes build
-# Large board variants (supports boards up to 12x10)
-make -j2 ARCH=x86-64 largeboards=yes build
-
-# All variants including ones with large branching factor
+# All variants including ones with large boards (up to 12x10) and large branching factor (all)
make -j2 ARCH=x86-64 largeboards=yes all=yes build
```
-#### Architecture Options
-Common architectures (use `make help` for full list):
-- `x86-64-modern`: Modern 64-bit CPUs (recommended)
-- `x86-64-avx2`: CPUs with AVX2 support
-- `x86-64`: Generic 64-bit (portable but slower)
-- `armv8`: ARM64 CPUs
-- `apple-silicon`: Apple M1/M2 processors
-
-#### Build Troubleshooting
-- **Compilation errors:** Ensure C++17 compiler (GCC 7+, Clang 5+)
-- **Linking errors on Linux:** Install `g++-multilib` for 32-bit builds
-
### Python Bindings (pyffish)
```bash
# Build Python bindings (from repository root)
### Directory Structure
```
-├── src/ # Core C++ engine source
-│ ├── Makefile # Primary build configuration
-│ ├── main.cpp # Engine entry point
-│ ├── uci.cpp # UCI protocol implementation
-│ ├── xboard.cpp # XBoard protocol implementation
-│ ├── position.h # Position representation
-│ ├── position.cpp # Board logic
-│ ├── movegen.cpp # Move generation
-│ ├── search.cpp # Search algorithm
-│ ├── evaluate.cpp # Position evaluation
-│ ├── variant.h # Variant properties
-│ ├── variant.cpp # Variant definitions (built-in variants)
-│ ├── variants.ini # Variant definitions (runtime configurable variants)
-│ ├── nnue/ # Neural network evaluation
-│ ├── syzygy/ # Endgame tablebase support
-│ ├── pyffish.cpp # Python bindings
-│ └── ffishjs.cpp # JavaScript bindings
-├── tests/ # Test scripts and data
-│ ├── perft.sh # Move generation tests
-│ ├── protocol.sh # Protocol compliance tests
-│ ├── js/ # JavaScript binding tests
-│ └── pgn/ # Test game files
-├── .github/workflows/ # CI/CD configurations
-├── setup.py # Python package configuration
-└── README.md # Comprehensive documentation
+src/ # Core C++ engine source
+tests/ # Test scripts and data
+.github/workflows/ # CI/CD configurations
```
### Configuration Files
- **`setup.py`**: Python package build configuration
- **`tests/js/package.json`**: JavaScript bindings configuration
-### Key Source Files
-- **`src/variant.h`**: Variant rule properties
-- **`src/variant.cpp`**: Variant-specific game rules
-- **`src/variant.ini`**: Variant rule configuration examples and documentation of variant properties
-- **`src/position.h`**: Position representation
-- **`src/position.cpp`**: Board logic
-- **`src/movegen.cpp`**: Move generation logic
-- **`src/parser.cpp`**: Variant rule configuration parsing
-- **`src/piece.cpp`**: Piece type definitions and behavior
+### Key Source Files in `src/`
+- **`variant.h`**: Variant rule properties
+- **`variant.cpp`**: Variant-specific game rules
+- **`variant.ini`**: Variant rule configuration examples and documentation of variant properties
+- **`position.h`**: Position representation
+- **`position.cpp`**: Board logic
+- **`movegen.cpp`**: Move generation logic
+- **`parser.cpp`**: Variant rule configuration parsing
+- **`piece.cpp`**: Piece type definitions and behavior
+- **`pyffish.cpp`**: Python bindings
+- **`ffishjs.cpp`**: JavaScript bindings
## Continuous Integration
- **`wheels.yml`**: Python package builds
- **`ffishjs.yml`**: JavaScript binding builds
-### Validation Pipeline
-1. **Code Standards:** C++17 compliance, `-Werror` warnings
-2. **Protocol Tests:** UCI, UCCI, USI, XBoard compatibility
-3. **Variant Tests:** Move generation verification for all variants
-4. **Performance Tests:** Benchmark consistency across builds
-5. **Multi-platform:** Linux, Windows, macOS builds
-
## Common Development Patterns
### Making Engine Changes
1. **Edit `src/variants.ini`**: Add variant configuration
2. **Test parsing:** `./stockfish check variants.ini`
-## Troubleshooting Guide
-
-### Build Failures
-- **C++ version:** Requires C++17-compatible compiler
-- **32-bit builds:** May need `g++-multilib` package
-- **Linking errors:** Ensure pthread library availability
-
-### Test Failures
-- **Perft mismatches:** Usually indicates move generation bugs
-- **Benchmark variations:** Expected 1-5% variance across builds
-- **Missing expect:** Install expect utility for test scripts
-
-This documentation covers the essential information needed for effective development in Fairy-Stockfish.
+### Relevant websites for researching chess variant rules
+- [Chess Variants on Wikipedia](https://en.wikipedia.org/wiki/List_of_chess_variants)
+- [Chess Variants Wiki](https://www.chessvariants.com/)
+- [Variant Chess on BoardGameGeek](https://boardgamegeek.com/boardgamefamily/4024/traditional-games-chess)
+- [PyChess Variants](https://www.pychess.org/variants)
+- [Ludii](https://ludii.games/library.php)
+- [Lichess.org Variants](https://lichess.org/variant)
+- [Greenchess](https://greenchess.net/variants.php)
+- [Chess Variants on Chess.com](https://www.chess.com/variants)
+
+### Development Best Practices
+* Make sure to only stage and commit changes that are intended to be part of the task.
+* Keep changes minimal and focused on the task at hand.
+* After applying changes make sure that all places related to the task have been identified.
+* Stay consistent with the existing code style and conventions.