For this week, I have started the implementation and system level design for the Chinese Chess (Xiangqi) guided engine using the Rust programming language. The primary focus this week was on creating a solid backend infrastructure that emphasizes correctness, performance, and extendability for the upcoming AI-guided functionalities.
I have designed and implemented the board state representation by utilizing a constant size array, which enables constant time and cache-efficient access to the pieces on the board. Additionally, I have implemented the rule validation part, which ensures legal moves, captures, blocking, and specific rules for different pieces. Lastly, I have implemented the complete move generation logic for all types of pieces, which ensures correctness according to Chinese Chess rules, such as palace rules, river rules, and cannon rules. Alongside this, I have conducted some research on the move generation strategy, where I have compared different strategies such as traditional search-based methods like minimax, alpha-beta pruning, and inference-based methods.
My progress this week has been on track, and all the planned foundational components, such as board state representation, rule validation, and basic move generation, have been implemented as planned, providing a solid foundation for the upcoming implementation.
For the upcoming week, I will be implementing the full game state management, which includes turn management, move history, and terminal state detection, such as check, checkmate, and draw states. Alongside this, I will be implementing the search-based move generation framework and integrating it with the existing rule validation system.
