fairy-stockfish / Fairy-Stockfish

chess variant engine supporting Xiangqi, Shogi, Janggi, Makruk, S-Chess, Crazyhouse, Bughouse, and many more
https://fairy-stockfish.github.io/
GNU General Public License v3.0
603 stars 189 forks source link

Version 1.0.0 release in the horizon? #15

Closed Nordlandia closed 5 years ago

ianfab commented 5 years ago

Is there a specific reason (e.g., stable version, documentation of features/limitations, getting binaries, or the like) why you are asking for a release? If so, maybe that could be achieved without requiring a formal release.

So far I have not thought about a formal release, since the project still is relatively new and is changing a lot, although recently there have mostly been playing strength improvements without much changes in the basic functionality. There still are a couple of variants where the implemented rules are not fully reflecting the official rule set (e.g., fourfold repetition for shogi variants, 50-moves rule, etc.), though. Furthermore, for an official release, I would like to have the automated generation and upload of binaries via travis and appveyor in place, which I did not have time to implement yet.

Nordlandia commented 5 years ago

Maybe not urgent. I just needed a updated binary (.exe) for some testing with cutechess.

ianfab commented 5 years ago

Did you already have a look at https://github.com/ianfab/Fairy-Stockfish/wiki/Compiling-Fairy-Stockfish? If you have issues with getting compilers to work on windows, but require some new features for testing, I could also try to cross-compile a windows executable on linux and send it to you.

ianfab commented 5 years ago

@Nordlandia Today, I was anyway cross-compiling Fairy-Stockfish, so you can find windows 64-bit binaries for the normal and large-board version here: Fairy-Stockfish.zip

Nordlandia commented 5 years ago

Many thanks 😃

I'll thinking about contribute to variant framework again.

Considering i have many machines allocated for fishtest framework, i can assign one for variant framework.

One issue: I can't let fairy stockfish play TwoKings in cutechess gui.

ianfab commented 5 years ago

@Nordlandia Two Kings is not supported yet, since it would require special handling that can unfortunately not be reused for any other variant (in contrast to more general extinction rules or the like), which does not really fit well into this project. Although it therefore does not have a high priority (compared to much more popular games such as xiangqi, othello, etc.), I would of course still like to support it at some point, but most likely in a completely different way than I implemented it in MV-SF.

Nordlandia commented 5 years ago

Out of curiosity, what is the current piece values for Capablanca Chess (archbishop and chancellor)

We're discussing piece values on talkchess and i want to compare the values stockfish use for Capablanca variant.

See - http://www.talkchess.com/forum3/viewtopic.php?p=788525#p788525

ianfab commented 5 years ago

@Nordlandia The piece values of this fork are not tuned yet, but only some rough guesses by me (partly based on tuned piece values from my other SF forks for S-Chess, Makruk, etc.), partly because the same piece values are used for all variants, which makes tuning difficult. You can find the numbers here: https://github.com/ianfab/Fairy-Stockfish/blob/19a744a3c64a1af1a046f36e3c6417b24b7fcac9/src/types.h#L218-L219

However, if it is only about comparing queen, chancellor, and archbishop, you might want to check out the tuned piece values of the S-Chess fork, which should be much closer to the "true" values. https://github.com/ianfab/Seirawan-Stockfish/blob/dad6e2154ba48f2ff9427fc3923ea2282b74f9e1/src/types.h#L207-L209

Nordlandia commented 5 years ago

Many thanks again 😃

HGMuller commented 5 years ago

As piece values were mentioned, perhaps my following observation can be helpful: in Capablanca Chess (and similar 10x8 variants) the value of the super-pieces appears to depend significantly on how many of those you have. In particular a Queen is a lot stronger (1-1.5 Pawn) than a Bishop + Rook (like in normal Chess) if the Archbishops and Chancellors are already out of the game. But if they are still on the board, R + B is significantly stronger than a Queen. A possible explanation for this is the 'leveling effect': if the A and C are still there the R + B interdicts their access to many squares, while they do not have to fear Q anywhere as long as they are protected. I understand that Stockfish has a general second-order material term, and it could be important to tune that simultaneously with the linear piece values. Otherwise you might end up with piece values that are a compromise that is always far from optimum.

ianfab commented 5 years ago

That makes sense to me. This observation is kind of confirmed by the piece values from the S-chess fork linked above, since the values of all super-pieces are a lot higher in the endgame compared to the middlegame, while for other pieces (excluding pawns) they are almost independent of the game phase.

The second-order terms might also help, but at least the tuning attempts we did for the S-chess fork failed to give any improvement using non-zero terms for archbishop and/or chancellor. However, since in S-chess they are introduced via gating and the board is quite small considering the amount of powerful pieces, the lifetime of the gated super-pieces usually is quite short, so maybe the effect is too small.

For capablanca chess the impact might be more significant, but I have not tried that yet, since in this fork not even a first tuning of the piece values was performed yet as this is quite some effort considering the large number of variants that could/should be tested, and the results from different variants can be contradictory.

GothicChessInventor commented 5 years ago

I published a paper in 2003 on how to compute the value of any chess piece on boards of any size. You can download as well as see the mathematical summary of it, with detailed explanations, here:

http://gothicchess.info/articles_02.shtml

ianfab commented 5 years ago

@GothicChessInventor Thanks for the info. Although the method seems to generate reasonable values, I think the ability to check the king is not really the main source of the value of a piece, especially in the context of this project, where checks or the existence of kings are not necessarily part of a variant. In the end the algorithm looks like a slight improvement on piece value estimates from naive mobility counting, where the relation to checks however is a bit artificial. To me it would be more natural and generic if the safe attacks to a piece on a square would be done for all piece types instead of just for the king, which would of course however be much more work (if not done computationally).

GothicChessInventor commented 5 years ago

My paper was an extension of the paper published by Henry Taylor from 1876. Taylor, H (1876). On the Relative Value of the Pieces in Chess, Philosophical Magazine, Vol. 5, March 1876, pp. 221-229.

His paper was widely heralded as a remarkable achievement in using Deduction to quantify that which most people relate to using Intuition: namely "how much" are the pieces "worth" when it comes time to evaluate them for performing combinations.

Having said that, his paper was not a complete "evaluation function" to be used to determine what a chess position was worth.

Remember, at the time (1876) there was still a great deal of mystery in chess when compared with the knowledge explosion of our contemporary world.

Taylor's work dealt with a square board of dimensions "nxn" and just a standard set of pieces. My paper uses a three-dimensional function v(r,f) where r is the number of rows, f is the number of files, and v is the value of a chess piece on such a board. When you plug in r = f = 8 in my equations, you get the same exact numbers as Taylor did in 1876.

The concept of safely checking a king was used because, there is no such thing as, say, a Bishop safely attacking a Queen. The Queen can always counterattack it because if a Bishop can attack a queen, then a Queen can likewise attack the Bishop. In the case of Bishops of opposite colors, they could never attack one another, posing yet another problem for such a hypothetical model.

Both papers were peer-reviewed and both deemed worthy of publication by other academics. As required by all such institutions, opinions are put aside for the purpose of focussing on "just the math" and its link to the final conclusion. In my case, the two were harmonious and undeniably correct. I'm not saying I liked or did not like the piece values that precipitated out; I am just saying using this form of rigor produced those values, and they seem to work very well in the real world.

ianfab commented 5 years ago

By no means I wanted to say that the papers are not valuable, but just that the method is limited to variants where the (only) goal of the game is to checkmate the opponent's king. And although this already is a large variety of chess variants, there are many others that do not fall into this category, so personally I am mainly interested in more generic formulas/methods.

ianfab commented 5 years ago

A first release is available now: https://github.com/ianfab/Fairy-Stockfish/releases/tag/fairy_sf_10_2