- Title Page
- Preface
- About this book
- About Rustic
- Downloads
- Prerequisites
- 1. Introduction
❱
- 1.1. Concept
- 1.2. Design
- 1.3. Roadmap
- 2. Board Representation
❱
- 2.1. Introduction
- 2.2. Bitboards
- 2.3. Piece List
- 2.4. Zobrist Hashing
- 2.5. Game State
- 2.6. Game History
- 2.7. Board struct
- 2.8. Initialization
- 3. Board Functionality
❱
- 3.1. Introduction
- 3.2. Support Functions
- 3.3. Handling FEN-strings
- 3.4. Moving Pieces
- 3.5. Making and Unmaking moves
- 3.6. Detecting the bishop pair
- 3.7. Detecting cannot force mate
- 3.8. Detecting draws by FIDE rules
- 4. The Move Generator
❱
- 4.1. Introduction
- 5. Search
❱
- 5.1. Introduction
- 5.2. Move Ordering
❱
- 5.2.1. The reason
- 5.2.2. How it works
- 5.2.3. MVV_LVA
- 5.2.4. Killer moves heuristic
- 5.2.5. TT-move ordering
- 6. Evaluation
❱
- 6.1. Understanding evaluation
- 6.2. Material counting
- 6.3. Piece-Square Tables
- 6.4. The evaluation function
- 6.5. Tapering the evaluation
- 7. Communication
❱
- 7.1. Introduction
- 7.2. Comparison
- 7.3. How it works
- 7.4. Design
- 7.5. Implementing IComm
- 7.6. Implementing commands
- 8. Engine
❱
- 8.1. Introduction
- 9. Progress
❱
- 9.1. Playing Strength
- 9.2. SPRT testing
- 9.3. SPRT results
- 9.4. Changelog
- 10. Appendix
❱
- 10.1. The binary system
- 10.2. Bitwise operations
- On idiomatic Rust
- Building Rustic
- FAQ
- About me
- Further study
- Credits