ChineseChess: a Qt build of Xiangqi with online play across platforms
Cross-platform and online battle platform game based on Qt5 and Qt6: Chinese Chess. Also known as:『Xiangqi』『中国象棋』
At a glance
- What is it?
- A C++ Xiangqi game written against both Qt 5 and Qt 6, with a computer opponent, timed matches, unlimited undo and network battles between different operating systems. It ships as source, as a Store app and as a Raspberry Pi package.
- Who is it for?
- ChineseChess suits a developer who wants a readable, commented C++ example of a networked Qt game, or a Linux or Raspberry Pi user who wants Xiangqi without a Store dependency. It does not suit someone looking for a mobile client, and the README does not describe any.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 171 days ago.
- What is it written in?
- Mainly C++, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A desktop Xiangqi client built twice, once for Qt 5 and once for Qt 6
ChineseChess is a Chinese chess, or Xiangqi, game written in C++ with Qt, and the project's own summary calls it an online battle platform with a communication function. It plays single player against the computer, plays locally between two people, and plays over a network between machines running different operating systems. The README shows a recorded battle between MacOS 10.14 and Windows 10, which is the clearest evidence that the network layer is not tied to one platform. The source layout follows the usual Qt split, with a main.cpp entry point, ChessBoard, ChessPieces and ChessStep for the model, several .ui files for the forms, and separate classes for the AI opponent, the network game and the puzzle mode. The licence is GPL-3.0.
The feature list reads as a small set of decisions
The README enumerates the functional modules, and reading them closely tells you what the author thought a chess client needed. Playing against yourself is listed first, which is a deliberate design choice rather than an afterthought, since it means the same binary works on one machine with no server. The computer AI is the second module, implemented in MachineGame.cpp. The third is the network battle, in NetworkGame.cpp, which can cross different systems. The fourth is battle timing, so that a match can be played against the clock. The fifth is regret, described in the update notes as unlimited, meaning a player can take back any number of moves rather than the single undo that most games allow. The sixth is a track of the chess moves with the current move shown, and the last is an about panel that lists contributor names. PuzzleGame.cpp and PuzzleData.cpp add a puzzle mode on top of that list.
Building on Linux and macOS with CMake
The build path is CMake based and the README recommends opening CMakeLists.txt in Qt Creator directly, which is the simplest route on any platform. For Debian and Ubuntu the dependency list is given explicitly:
$ sudo apt install cmake qtbase5-dev qt5-default libqt5svg5-dev qtmultimedia5-dev qttools5-dev libqt5x11extras5-devThe extra packages tell you what the game actually uses: SVG for the board pieces, multimedia for the move sounds in ChessVoice, tools for the translation infrastructure, and X11 extras for the desktop integration. After that, the sequence is the standard CMake one:
$ git clone https://github.com/XMuli/ChineseChess.git
$ cd ChineseChess
$ mkdir build && cd build
$ cmake ..
$ makeThe README also says you can skip the command line entirely and compile and run from Qt Creator, which it describes as more convenient. On Windows the steps are the same idea without the terminal: install Qt, open CMakeLists.txt in Qt Creator, and use the Build menu.
One tree, two Qt major versions, and a stated minimum
The project supports both Qt 5 and Qt 6 builds, which is unusual for a project of this size and dictates some of its structure. The README states that the code compiles successfully with Qt 5.15.2 and Qt 6.8.3 LTS, and that the minimum tested build version is Qt 5.12 with lower versions unverified. For an IDE, Qt Creator is recommended, with the note that you can convert the CMake project to a Visual Studio solution manually and build with Visual Studio 2022. That last route is worth flagging for anyone on Windows without Qt installed: it is described as a manual conversion, so it is a fallback rather than a supported path. The project also links a series of Chinese blog posts that walk through building the game from a basic version up to the networked one, which functions as the development tutorial for anyone wanting to read the code alongside a narrative.
Packaging that reaches the Microsoft Store, Arch and the Pi
The repository carries the artefacts for several distribution channels. The README links a Microsoft Store listing, and the root holds an msix directory alongside setup_package_user.iss, which is an Inno Setup script, so the Windows build is packaged both for the Store and as a classic installer. A PKGBUILD at the root is an Arch Linux packaging recipe, and build.bat handles the Windows command line build. The Linux ARM story is handled through an external apt repository at apt.raspbian-addons.org, which hosts ChineseChess packages for both 32-bit and 64-bit Raspberry Pi. So the same codebase reaches desktop Linux, Windows, the Microsoft Store and a single board computer, and each of those channels uses a different packaging mechanism, which is the practical cost of the platform breadth.
A v7 line shipped through 2025 and 2026, with a push in May
Release activity shows a project that is still being worked on but that ships in bigger steps. Tagged versions include v7.0 on 2025-10-20, v7.2 on 2026-02-05 and v7.4 on 2026-02-23, and the repository is not archived, with the last push on 2026-05-06. The update section describes the v7 era as covering 2019 through 2026, and lists what changed: the regret function with unlimited takes, the move track with the current move shown, a restart action, code logic optimisation with new comments, a refreshed interface using ancient chess characters, and the Raspberry Pi ARM support. The README also notes that the source is accompanied by detailed code comments for easy understanding, which is a deliberate choice for a project whose tutorial series lives alongside it. Whether the AI opponent is strong is not something the README claims, and it does not document a strength level or an engine description.
Editorial conclusion
ChineseChess suits a developer who wants a readable, commented C++ example of a networked Qt game, or a Linux or Raspberry Pi user who wants Xiangqi without a Store dependency. It does not suit someone looking for a mobile client, and the README does not describe any. Before building, check your Qt version against the stated minimum of 5.12, and on Linux remember that the documented package names are for the Qt 5 line, so a Qt 6 build there needs the equivalent Qt 6 development packages.
Frequently asked questions
Which Qt versions does ChineseChess build with?
The README says the project supports both Qt 5 and Qt 6, compiles successfully with Qt 5.15.2 and Qt 6.8.3 LTS, and has a tested minimum build version of Qt 5.12, with lower versions unverified.
How do I build ChineseChess on Linux or macOS?
Install the dependencies, then clone the repository, create a build directory, run cmake .. and make. The README also says you can skip the command line and compile and run from Qt Creator instead.
Can ChineseChess players on different operating systems play each other online?
Yes. The README lists a multiplayer network battle module that can cross different systems, and shows a recorded battle between MacOS 10.14 and Windows 10.
Can I undo moves in ChineseChess?
Yes. The README lists a regret function and the update notes describe it as unlimited regret, meaning any number of moves can be taken back.
Is ChineseChess available for Raspberry Pi?
Yes, through an external apt repository at apt.raspbian-addons.org, with packages for both 32-bit and 64-bit Raspberry Pi.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/xmuli-chinesechess)Was this useful?