This document outlines the high-level goals, planned features, and known technical debt for HydroChess. It serves as a guide for contributors to understand the project's direction and where they can help.
← Back to README | Contribution Guide
The single biggest opportunity for strength gain is fine-tuning the engine's parameters. Currently, almost all values in src/search/params.rs, src/search.rs, and src/evaluation/base.rs are rough estimates or hand-picked defaults.
- Optimization of SPSA Tuner:
- We have an SPSA tuner (
src/bin/spsa.rs) that runs match-based self-play from the CLI, but it needs large-scale testing time to converge cleanly on stronger parameter sets. - Goal: Optimize the tuner or distribute the workload.
- We have an SPSA tuner (
- Hand-tuning via SPRT:
- Alternative: Contributors can hand-tune the most relevant parameters (e.g., piece values, evaluation weights, LMR reductions) and verify them using the SPRT test suite.
- This allows for quick gains without too much effort.
- See
sprt/README.mdfor how to run these tests.
src/search/params.rssrc/evaluation/base.rssrc/bin/spsa.rs
Beyond just tuning numbers, the evaluation function itself needs better metrics to understand Infinite Chess positions.
The current evaluation is a simple adaptation of standard chess rules with a few infinite-specific tweaks. It lacks "smart" metrics for an infinite board, such as better understanding of piece safety, long-range attacks, or unique pawn structures in unbounded space.
- Implement smarter evaluation terms in
src/evaluation/base.rs. - experiment with new metrics unique to infinite chess geometry.
- Note: Any logic change here must be verified with SPRT.
src/evaluation/base.rs
We have a Lazy SMP implementation, but it's not faster or stronger than single-threaded execution due to overhead.
The infrastructure exists (src/search/shared_tt.rs, get_best_move_parallel), but it needs optimization to actually scale.
- Optimize Shared State: Improve Transposition Table access patterns for threads.
- Refine Threading Logic: Better work distribution in
get_best_move_parallel.
src/search/shared_tt.rssrc/search.rs
If you are looking to contribute but aren't ready to tackle the big items above, here are some smaller tasks:
- Add Unit Tests: Increase coverage for the codebase. Run
cargo llvm-cov --libto see the current status. - Documentation: Improve documentation for the codebase.
- Refactoring: Verify simple refactors with SPRT.
- NNUE: Explore Neural Network evaluation for infinite chess.