How phuc11731510/chess_variant_engine works
This repository contains a custom Fairy-Stockfish/LCZero chess-variant engine plus a Python self-play training pipeline. The primary play path accepts UCI commands or terminal play, configures a neural backend, searches positions with MCTS, and returns a selected move; separate documented command modes support self-play, arena matches, and diagnostics. The tree and sampled source support these principal entry points and search/backend flow, but README content is absent and several mode implementations were not sampled, so uncertain internal wiring is omitted.
Main entry points: main.cc Engine modes · uci_nn_engine.cc UCI NN engine · backend_factory.cc Backend factory · search.cc MCTS search
Components 24
Engine play
- Engine modes
custom_engine/src/main.cc - UCI NN engine
custom_engine/src/app/uci_nn_engine.cc - Terminal play
custom_engine/src/app/play_mode.cc - Model arena
custom_engine/src/app/arena_mode.cc - Python FFI
custom_engine/src/app/fairyzero_ffi.h - NN benchmark
custom_engine/src/app/bench_nn.cc - Generation audit
custom_engine/python/audit_generation.py
Neural search
- Backend factory
custom_engine/src/app/backend_factory.cc - ONNX backend
custom_engine/src/lczero_chess/neural/onnx_backend.cc - Batching backend
custom_engine/src/lczero_chess/neural/batching_backend.cc - Evaluation cache
custom_engine/src/lczero_chess/neural/zero_heap_cache.cc - MCTS search
custom_engine/src/search/classic/search.cc - Search tree
custom_engine/src/search/classic/node.cc - Position encoder
custom_engine/src/lczero_chess/chess/encoder.cc
Training lifecycle
- Self-play mode
custom_engine/src/app/selfplay_mode.cc - Seed generation
custom_engine/python/make_seed.py - Training records
custom_engine/src/lczero_chess/trainingdata/writer.cc - Dataset loader
custom_engine/python/dataset.py - Model training
custom_engine/python/train.py - ONNX model
Variant rules
- Variant board
custom_engine/src/lczero_chess/chess/board.cc - Variant rules
custom_engine/src/chess/variant.cpp - Variant parser
custom_engine/src/chess/parser.cpp
Other components
- GUI or player
Connections 28
- GUI or player → Engine modes: starts mode
- Engine modes → UCI NN engine: dispatches UCI
- Engine modes → Terminal play: dispatches play
- Engine modes → Model arena: dispatches arena
- Engine modes → Self-play mode: dispatches self-play
- UCI NN engine → Backend factory: builds backend
- Terminal play → Backend factory: builds backend
- Self-play mode → Backend factory: builds backend
- Backend factory → ONNX backend: creates backend
- ONNX backend → Batching backend: uses batching
- Batching backend → Evaluation cache: checks cache
- UCI NN engine → MCTS search: starts search
- Terminal play → MCTS search: starts search
- MCTS search → Search tree: updates nodes
- MCTS search → Batching backend: requests evaluations
- UCI NN engine → Variant board: parses positions
- Variant board → Variant rules: applies rules
- Variant parser → Variant rules: configures rules
- Self-play mode → Training records: writes records
- Seed generation → Training records: creates seed data
- Training records → Dataset loader: loads records
- Dataset loader → Model training: supplies examples
- Model training → ONNX model: exports ONNX
- ONNX model → Backend factory: loads weights
- GUI or player → Python FFI: sends commands
- Python FFI → UCI NN engine: drives engine
- Engine modes → NN benchmark: dispatches benchmark
- Engine modes → Generation audit: dispatches audit