QueensGambit / CrazyAra

A Deep Learning UCI-Chess Variant Engine written in C++ & Python :parrot:
https://lichess.org/@/CrazyAra
GNU General Public License v3.0
233 stars 42 forks source link

can you supports Korean chess(Janggi), which is a variation of chess? #43

Open KDKOA opened 3 years ago

KDKOA commented 3 years ago

japanese chess(Shogi) https://github.com/kobanium/aobazero chinese chess(Xiangqi) https://github.com/leedavid/leela-chess-to-Chinese-Chess

If you could supports korean chess(janggi), could you please distributed computing server use as methods like other chess variations above? example using client exe or google colab etc

ianfab's Fairy Stockfish engine supported Korean chess(janggi), and Gui supported Korean chess(janggi) as winboard and cute chess.

QueensGambit commented 3 years ago

Hello @KDKOA and thank you for suggestion. I'm not that familiar with Asian chess variants but e.g. shogi appeals to me because it shares similarities with crazyhouse and is more balanced.

Adding Fairy-Stockfish as a new back-end is now less complicated as a generic state interface was recently added. https://github.com/QueensGambit/CrazyAra/blob/master/engine/src/state.h In addition, a few things would need to be added, such as the definition of a policy output vector and a different input representation. https://github.com/QueensGambit/CrazyAra/blob/master/engine/src/domain/crazyhouse/constants.h#L161

We are considering what steps to take next after extending to more lichess variants. With a PhD student, I started to integrate the pommerman, a multi-agent, non-chess environment. https://github.com/tomatenbrei/pomcpp https://www.pommerman.com/

In my eyes the CrazyAra project serves a different purpose than Leela-Zero, Lc0 and other Leela forks. It is not meant to be a distributed community project with a common training server and data server infrastructure and I would currently be unable to manage this in parallel to my work at the university. It could also lead to conflicts where multiple communities compete for computing resources of volunteers. Instead, CrazyAra aims to have a more flexible back-end and to be an open, publication-oriented research project.

A less computational intensive starting point for janggi could be to train a neural network on human expert or engine games. CrazyAra uses the python-chess library to prepare the training data set for this. Janggi is not supported by python-chess, and I'm not sure if there exists a similar library for janggi. However, I found a recently started AlphaZero project for janggi on GitHub which offers the main functionality for janggi.