Research Report on the History of Computer Chinese Chess (Xiangqi) Game-Playing

A structured history of Chinese chess engine development from the 1980s to 2026, covering major engines, protocols, and community tooling. National University Computer Game Championship → Using the UCCI Debugger

☰ Contents

National University Computer Game Championship

  • Organizer: Computer Professional Teaching Steering Committee of the Ministry of Education
  • History: Began in the 2010s
  • Frequency: Annually
  • Participants: University students nationwide
  • Format: Group stage plus elimination

Online Engine Ranking Competitions

In recent years, community-organized online engine ranking competitions have gradually emerged:

  • The community runs engine matches on Fishtest or similar platforms
  • Rankings and ELO ratings are automatically updated
  • Providing public comparative data for engine development

Volume XV: Xiangqi Engine Coding Standards

Source Code Organization

Xiangqi engine source code is typically organized into the following directories:

src/: Source code directory position/: Position representation code movegen/: Move generation code search/: Search algorithm code evaluate/: Evaluation function code ucci/: UCCI protocol code nnue/: NNUE evaluation code (modern engines) benchmark/: Benchmark testing code

Makefile: Build configuration README.md: Project documentation LICENSE: License file tests/: Test code and test data

Coding Conventions

Naming conventions:

  • Class names use PascalCase (PositionEvaluation)
  • Function names use camelCase (generateMoves)
  • Variable names use lowercase with underscores (best_move)
  • Constants use ALL_CAPS with underscores (MAX_PLY)

Code formatting:

  • Indentation uses 2 spaces or 4 spaces
  • Braces on the same line as keywords (K&R style)
  • Single-line if statements require braces

Comment conventions:

  • Each public function needs a comment explaining its purpose, parameters, and return value
  • Complex algorithm implementations need comments explaining their principles
  • TODO comments need to note follow-up items

Volume XVI: Xiangqi Engine Debugging Techniques

Using the UCCI Debugger

The UCCI debugger is a basic tool for interacting with and debugging Xiangqi engines:

Main functions:

  1. Send UCCI commands (ucci, isready, position, go, stop, etc.)
  2. Display engine responses and search results
  3. Check correctness of UCCI protocol implementation
  4. Record engine communication logs

Debugging workflow:

  1. Start the UCCI debugger
  2. Send “ucci” command to initialize the engine
  3. Send “setoption” to configure engine options
  4. Send “position” to set the board position
  5. Send “go” to start search
  6. View the search results returned by the engine (best move, evaluation value, search depth, etc.)