Comments/Ratings for a Single Item
Luke Scholler wrote on 2022-12-13 CET
Hello! I know this may be a strange comment, but I am working on a project involving your micro-max engine and have a few questions. Believe it or not, this site is the only place it seems that I am able to contact you directly. Maybe you have contact info on your website, but I could not find it.
Anyways, my question is simple: is it possible to play as the black pieces on this chess engine? I have tried changing the "initial piece setup" line of code and swapping the king and queen, but that doesn't seem to work. What would I have to do to get this to work? Thanks
I read the TalkChess forum (talkchess.com) every day, and normally post there almost as often, and that would be a more natural place for questions like this.
Are you asking this for the stand-alone version of micro-Max? The WinBoard-compatible version is a normal WB engine, which can be set to play white or black through the GUI in the normal way. The stand-alone version does not play for a particular color; it just moves for the side that is on move when you enter an empty line of text (i.e. press the <Enter> key), or performs the move that you entered.
Actually for this project, no. This is about checking the NmH, the NmD and the NmA against bishops on a 10x10 board in order to see if these knights are very close in value to the bishops. But for the apothecary chess games I'm awaiting the source code in order to tweak the piece value of the joker. That is if you are happy with how things are going so far with the joker.
Probably I should stick to ChessV, but I'm awaiting for the new version
Is there something specific you are waiting for? Release Candidate 2 is solid, as far as I know, and is probably the strongest variant engine available.
I think sjaak II does not do bent riders. Probably I should stick to ChessV, but I'm awaiting for the new version.
The way castling works in Fairy-Max is that any piece that has castlings amongst the moves on its definition line will castle with the piece on the same rank on the left or right edge. Provided both are virgin. The problem is that while setting up a position from an external source, virginity is judged by whether the piece is placed in the same position as the internal start position. And that currently the internally defined start position can only have non-Pawns on the back rank, and a single rank of Pawns placed on another rank (which cannot be specified fully independently from the width of the promotion zone).
This is already versatile enough to implement many chess variants, but by no means all. Multi-variant engines like Sjaak II are much more flexible in this respect.
What I am thinking about is to allow the lines that specify the (non-Pawn) piece placement in the fmax.ini file to be longer than the board width, and put the extra pieces that are specified on the next rank, bumping the Pawns one rank forward for every new rank. For engine-defined variants Fairy-Max has to communicate the internally defined initial position to the GUI in FEN format, though. And the current FEN generator is not completely general, but assumes there will only be pieces on the back rank. So this will have to be entirely rewritten.
Is it possible to make castling work also on the second rank with the piece on the edge (not just on the corner)?
Only pieces that start on a location they also have in the initial position as the fmax.ini file defines it will be considered virgin. It is possible to shift the Pawn rank of the initial position (Grant Acedrex uses that), or enlarge the promotion zone (Makruk & Cambodian Chess use that). But not independently. So if you want a zone wider than one rank that does not extend all the way (and including) the Pawn rank, the current version of Fairy-Max cannot do it.
Perhaps I should devise some upgrade that makes it possible to add extra piece ranks, which then automatically push the Pawns forward. I will think about that.
@HG, Is pawn virginity lost when using a external fen file for the starting position in a tournament. It figures to me that pawns on the 3rd rank cannot make double steps.
Thanks, HG!
You mean the examples given for the various pieces? These are indeed still given in the original system (which still is the internal representation), that didn't have the possibility to optionally specify a secondary step vector.
With B2-then-R you mean a piece that slides on a trajectory that starts with (exactly) 2 diagonal steps, and then continues orthogonally after a 45-degree bend? This would be nearly the same as Griffon, except that you would have to specify a delay of 1 step before the move switches from primary to secondary leg. E.g. for one of the trajectories the Griffon would use 15,3,1, and the corresponding trajectory of the B2-then-R would be 15,403,1. The 4 there specifies a delay of 1 step, and the 0 that there is no change in rights between the first and second leg. (Both are mc.)
Note that to avoid duplicat generation of the F moves, you could specify the other trajectory that starts with the same step without any rights in the first leg, like 15,30,16 for Griffon. This has 0 for primary rights (= cannot do anything), and then toggles that to 3. (I did not do that in the example.)
The Osprey now works fine and I understand why. I'm likely to be able to make the gryphon on my own. But may you please add to your to do list upgrading the explanatory text in the .ini file for bent riders? For example I'm interested in how to do a B2 then rook or a R2 then bishop even if I successfully used the XBetza notation for them in the interactive diagrams. To my understanding they can actually be easier in fairy-max.
First matter is usually because you ask for a save file in a non-existent folder.
You can register Fairy-Max twice (through the Load Engine dialog), specifying different nicknames, and ticking the checkbox to use the nicknames also in the PGN files. What you can also so is start WinBoard with ' additional option' -sameColorGames 100 . This will suppress the color alternation in matches, so that you can configure Fairy-Max with a variant that uses, say, Knights for white and Bishops for black, and just play a match. Then the first number in the match score will be the white Knights.
About the Osprey moves: I think it is not WinBoard that rejects them, but Fairy-Max. The Betza notation is correct, and WinBoard understands it (as the highlighting on user moves shows). But the line you posted for the move definition is not an Osprey. (Not sure what it is, but it doesn't have the correct step after the trajectory turns the corner.) The problem is that you use the notation that specifies a move through 2 numbers (separated by comma), where the second number has to specify both the move rights, and the alteration in step vector. I suspect you started from the Griffon definition, and just changed the vector of the first step. But because the second number encodes the change in step (in a cumbersome way), that implicitly also alters the secondary step.
Recent Fairy-Max versions allow you to specify the secondary step explicitly, rather than as a change of the primary step, by appending the secondary step after an extra comma. For the Osprey this would give a move definition like
2,3,17 2,3,-15 -2,3,15 -2,3,-17 31,3,15 32,3,17 -32,3,-15 -32,3,-17
While holding a tournament after a game ends, I keep getting an error saying the system cannot open a certain png file. Why?
How do I label the 2 engines (both fairy-max) so that I can figure out who plays a set of pieces and who plays the other? Something like bishops vs knights.
Edit: I had managed to figure out the firs matter.
Well, Winboard rejects the Osprey move as illegal, although it represents it correctly for the human player.
I think even pretty old WinBoard versions should understand that Betza string. (But I did not actually try it). Just to be sure, use the version at http://hgm.nubati.net/WinBoard-AA.zip .
The Fairy-Max in that package also has a more user-friendly way to specify bent sliders; you can specify each move also as a triple s1,r,s2 . Where s1 is the initial step (+/-32 or +/-2 for an Osprey), and s2 is the step after the bend (+/-15 or +/-17). The middle parameter specifies the 'move rights' and should be 3 for a piece that slides and can both capture and non-capture.
The parent variant is indeed the word on the ' Game:' line after the piece-to-char table. I don't think there are any standard variants with a 2-deep zone, for 8x8 boards or larger. In variant shogi it uses 1/3 of the board height, which works for the 6x6 Judkin's Shogi (which has a zone of 2 ranks).
With legality testing switched off, however, WinBoard would obey the engine when it plays a promotion move. That solves the problem in engine-engine games. In human-engine games it might work when you type moves that should promote, in this case.
Unrelated to my earlier questions: It seems to me that fmax understands the Osprey as n:600 32,1003 32,1F003 -32,1003 -32,1F003 2,10003 2,FFFF0003 -2,10003 -2,FFFF0003 but WinBoard does not understand : DmpafyafsW . Am I correct?
How do I pick a parent variant in winboard? The variants I had defined in Fairy-max.ini have the dimension line set 10x10=3 but whenever promotion occurs winboard gives an error. This was happening actually before my last questions. Do I have to name my variant Elven? Later Edit. I prefer a depth of 2 anyway. So this probably cannot be done! Even later edit: You meant at the end after the piece to char. I figured it know. But this is still for a depth of 3. How do I make a depth of 2?
Thank you for the info HG!
Recent versions of Fairy-Max allow the nottation FxR=D in the line of the game definition that sepecifies the board size. The number D after the equal sign specifies the depth of the zone. In case this number is larger than 2 it also assumes that the Pawns start at the foremost rank in the zone. So for Camboian Chess and Makruk the game definitions specify 8x8=3. (A negative number there redefines the Pawn rank without affecting the zone size, and its absolute value then indicates the number of ranks behnd the Pawns. So Grant Acedrex uses 12x12=-3.)
The depth of the promotion zone icannot be independently set in WinBoard, but follows from the parent variant. So you would have to pick a parent variant that has a zone depth of 3, rather than 'fairy' (which has only promotion on the last rank). Variant 'elven' could be good for this.
Castling will be a problem. This is related to the way position setup works in Fairy-Max: it only assumes castling is possible if the piece on which such a move is defined, and the pieces on the edge of the same rank, start in the same location as what was defined as the start position. And in the current version of Fairy-Max start positions can only have pieces on the back rank, plus a single rank of Pawns.
@HG,
I had asked a few questions earlier this week. May you find the time to take a look?
HG,
For fairy max the promotion zone of the games is still 1 or 3 deep (no 2)?
Later Edit: Is there a way to do castling if the king and rook start on the second to last rank (like in expanded chess say)?
Even Later Edit: How do I tell Winboard that the promotion zone is the last 3 ranks?
At the time I wrote that there was a problem with engine-defined variants running in a match that started from an externally set-up position, where the position sent by the engine overruled the position requested by the user. But I think this was fixed in the latest beta version of WinBoard. There it should be possible to run a tournament or match specifying a 'position file' in the Tournament Options dialog, which contains the FEN(s) of the desired start position(s). I hope.
HG,
You have explained to me here :
https://www.chessvariants.com/index/listcomments.php?id=33121
how to set up a machine match to test something. Is this still the way to do it or are there different things now?
I had computer trouble, so I had no opportunity to check it out yet.
Fairy-Max does ignore game names that start with a capital. I forgot what was the reason for that (but originally there was one). But when you change the T to t the variant will appear in WinBoard's New Variant menu, from where you can select it. (If you did not put the definition too far down in the fmax.ini file; WinBoard can only display a limited number of engine-defined variants.
You did not specify what piece should be used for K/k in the pieceToChar string. Change it to
PNBRQ.EA.........G......MKpnbrq.ea.........g......mk
@HG,
Haven't you seen my comments or was I unclear?
HG, I had tried again but have not managed to do it. I don't yet need to set up a machine match, this will come later. I only need to know if fmax can play the game.
HG, I have added this game: //Aurelian's test for NmH compared to bishop Game: TestH1 # PNBRQ.EA.M.......G....pnbrq.ea.m.......g.... # fairy 10x10 12 8 5 9 10 7 3 5 8 11 12 8 6 9 10 7 4 6 8 11 p:100 -16,24 -16,6 -15,5 -17,5 p:100 16,24 16,6 15,5 17,5 k:-1 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7 k:-1 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7 n:259 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7 48,6 -48,6 3,6 -3,6 b:296 15,3 17,3 -15,3 -17,3 Q:851 1,3 16,3 15,3 17,3 -1,3 -16,3 -15,3 -17,3 R:444 1,3 16,3 -1,3 -16,3 G:830 17,1003 15,1F003 -15,1003 -17,1F003 17,10003 -15,FFFF0003 -17,10003 15,FFFF0003 A:875 15,3 17,3 -15,3 -17,3 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7 e:400 15,7 17,7 -15,7 -17,7 30,7 -30,7 34,7 -34,7 48,7 -48,7 3,7 -3,7 M:400 1,7 16,7 -1,7 -16,7 13,7 47,7 49,7 19,7 -13,7 -47,7 -49,7 -19,7 # # G& FyafsF # A& BN # E& FAH # M& CW to fairymax.ini. How do I make Xboard display it?
I remember doing this in 2016 with an early apothecary chess.
Not 'natively'. But it is possible to define a game with an arbitrary setup, and then ask WinBoard to start from another position (e.g. with a -fen option). As long as the number of pieces in the variant does not exceed what Fairy-Max can handle this should be possible.
Can Fairy-Max do games that have pieces starting in other places than the back rank. For example Expanded chess?
Ok! I got it!
Oh sorry, I completely overlooked those questions. The latest version of Fairy-Max and WinBoard now are bundled in the WinBoard-AA package.
The pieceToCharTable is how Fairy-Max instructs WinBoard to map piece IDs on images. Each position in the pieceToChar string corresponds to a certain image, starting with Pawn, Knight, Bishop, Rook, Queen, ... and ending with King. First half for the white images (upper-case IDs), second half for the black (lower-case IDs). For an overview of the available images, look here. Images not needed in the game are indicated by a dot. The others by the ID of the piece they represent (a single letter, or letter plus a single quote or exclamation point, the latter only recommended for use when you run out of letters).
Fairy-Max just sends that string to WinBoard, when the variant it describes gets selected. It doesn't do anything with it itself.
There are some special notations in the pieceToChar WinBoard attaches additional meaning to: ^L , with L some piece ID that was already assigned to some other image means the image is for the promoted version of an L (which, in move and position notations, would be indicated as +L). This is needed mainly in Shogi variants; normally WinBoard assumes that the piece that uses the Pawn image promotes to a piece of your choice on reaching the zone (the depth of which depends on the parent variant and board size)
Actually I have managed to download it from the winboard forums along with winboard. Still I don't remember what the piece to char table's use is!
@HG, I had asked two questions here, on this thread, earlier. Have you seen them?
Where can the latest (I think it is 5.0) fairymax version be downloaded?
On my Linux system on an Intel PC I never had any such problems with XBoard + Fairy-Max. Which is the essential change that finally made it work for you? The fflush(stdin)?
I use fairymax all the time, since I'm not a great player, but it's challenging enough that it's still hard to beat. Unfortunately, it seemed to block indefinitely while talking to X-board. I was curious what was happening since I'm interested in chess engines. There is a large section on stream blocking, etc on the X-board site. I managed to fix the problem, and happy to report it played gnu-chess in a game on an ARM chromebook computer running the latest linux OS.
I pasted the resulting code here:
https://pastebin.com/Fd4cNpRV
> Can anyone let me know what I'm doing wrong?
Ugh, I completely missed this question, and considering the date I suppose it is no longer relevant. Still, for people that might run into a similar problem: what is wrong is that you defined piece number 8, which is present in the initial setup, with ID 'H', but that there is no 'H' in the list of pieces given in the 'Game' line
Game: fun01 # PNBRQ.....AKpnbrq.....ak # fairy
This list of piece IDs is essential for the WinBoard GUI (to which Fairy-Max will send it) to know which piece image to associate with each piece. Each position correspond with a certain image, the first 5 being the standard image for P, N, B, R and Q, and the last for each color always representing a King. The list now defines the piece 'A' (which does not occur in your variant at all), but not 'H'. As a result WinBoard will choke on the initial position that Fairy-Max sends it, as this will contain 'H' pieces which WinBoard doesn't know what image to use for. Replacing the A and a by H and h would solve this, and display the H as a spiked helmet. By putting the H and h in a different position in the string, (e.g. by changing the number of dots, but keep the length for white and black equal!), you would get other images for H, h.
Note that the latest versions of Fairy-Max and WinBoard would allow you append the lines
#
# H& ADGH
to the definition, which communicate the moves of the H piece (in Betza notation) to WinBoard, so that it will properly highlight the possible destination squares of the piece when you grab it, and can test legality of engine moves. (Otherwise legality testing would have to be switched off, because WinBoard might have other ideas of how the piece with the chosen image can move than Fairy-Max.)
I'm trying to use fairy max to play a game with 4 new pieces at the corners (the new piece is a hawk and it jumps 2 or 3 squares in any direction). The game definition is below (in fmax.ini). When I run this game black's pieces are shown in wrong locations, and the game immedietly results in a stalemate. (I have legality checking turned off, but I get errors either way). Can anyone let me know what I'm doing wrong? thanks.
// variant - [new piece at corners]
Game: fun01 # PNBRQ.....AKpnbrq.....ak # fairy
8x8
8 4 5 7 3 5 4 8
8 4 5 7 3 5 4 8
p:74 -16,24 -16,6 -15,5 -17,5
p:74 16,24 16,6 15,5 17,5
k:-1 1,34 -1,34 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7
n:259 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7
b:296 15,3 17,3 -15,3 -17,3
R:444 1,3 16,3 -1,3 -16,3
Q:851 1,3 16,3 15,3 17,3 -1,3 -16,3 -15,3 -17,3
H:900 -16,7 -32,7 1,7 2,7 16,7 32,7 -1,7 -2,7 -15,7 -30,7 17,7 34,7 15,7 30,7 -17,7 -34,7
> Is there a ready made setup for chess with different armies ? Do you mean in the jocly.com bot, or in the WinBoard+Fairy-Max download? In the latter you can select various CwDA battles in the Engine Settings dialog for the "Variant fairy selects" option, and then choosing variant 'fairy' from the WinBoard New Variant dialog should give you those armies.
For those interested, Fairy-Max is now being used as a remotely connected bot player on the Jocly platform. It offers regular orthodox Chess, Makruk, Capablanca, Cylinder Chess, Shatranj, and Courier. XiangQi is also available via the Max-Qi engine from the same author as Fairy-Max.
To play one of those variants, go to https://www.jocly.com/#/open-tables and click on an open table to start the game, or invite user HGMBot to play. Since the bot is connected to Jocly as a regular user, you'll need your own Jocly account (free) to play this AI.
Prefer Firefox, Chrome or Safari (with WebGL enabled) to get a 3D interface for playing. If 2D is good for you, any modern browser will work, including those from mobile devices.
Well, thanks! Unfortunately I don't keep separate web pages on piece values. What I learn about them I usually publish here. Not all comments here can be appropriately associated with an article, however. (The Piececlopedia is far from complete.) And unassociated commands are almost impossible to find back here, if they don't disappear at all. I remeber having published something here about divergent pieces (mKcN, mNcK, mQcN, mNcQ), and on another occasion there was a topic in which both Mats Winther and I published about the value of bifurcator pieces. Recently I did an investigation on sliders that skip the first square, either completely, or allowing captures or rifle captures to them. This in connection with the weird 'Heavenly Tetrarchs' piece of Tenjiku Shogi. But the results never got any further than the 'Talk page' of the Wikipedia article about Tenjiku.
A question for you, H. G.: is there a document somewhere describing your latest research into the value of chess pieces? The Excellent is both for Fairy-Max itself, and for your work on Chess engines and piece value.
I made a nice addition to the capabilities of Fairy-Max. There were still two unused bits in the field specifying the mode rights of each move direction, and I use them now to specify a delay of the first toggle event. Normally non-hoppers indicate in their primary move rights what they can do (capture, non-capture and continuation in all combinations), and with their secondary move rights which of those have to change after every step. For simple sliders or leapers the latter are not used, as nothing has to change. (They either have continuation, and keep it on every step, so they are sliders with unlimited range, or they haven't, and then there is no second step, and thus also nothing to toggle. But range-2 sliders would specify continuation in their primary move rights, and toggle it off after one step. (Lame leapers like the Xiangqi Elephant would do the same, but in addition sot specify any capture/non-capure rights with the first step, and toggle those on for the second step, as well as toggling continuation off.). The new interpretation of the so far unused bits would postpone the first toggle 1, 2 or 3 steps. So applied to the old encoding for a range-2 slider, it would extend the range to 3, 4 or 5 before the continuation is toggled off and the last step is made.
Indeed, Game Courier runs on Android. It would be neat if one didn't have to scroll every time when making a new move, because the board doesn't fit in the window. I am curious how much money the Android app developers earn, when selling their programs on play.google.com and elsewhere. The apps are cheap, but sometimes there are half a million downloads, because Android is so widely used. Many of the apps have glitches that are very, very frustrating. It is not possible to download a decent painting program, for instance. If it's possible to earn some money, it could motivate that one learns Android programming. /Mats
I thought that Game Courier is web based. So you should be able to use it through the standard browser app. I made a similar turn-based server for Seirawan Chess, and had no problem at all to use it from Android. It would also be quite trivial to provide a second access page with a layout especially tailored for good dislay on a smartphone. I agree it would be good to have a dedicated Android client that could also be used locally with engines. I asked Aart if he would be willing to let me patch his Chess for Android to implement some other variants, but he did not jump to the occasion. So I guess we are on our own. Problem is that I never programmed on Android, and would not even know how to make a 'Hello World' program. So I would have to learn it,and acquire the necessary development software. I did already buy a Galaxy Gio for the purpose. My plan is to write an Android front-end for WinBoard.
Does anyone know if Windows 8 can run Zillions? I'd like to get a netbook or a tablet and take it on the road with Zillions games loaded up. Anyone have any success doing this yet?
Maybe it is time to create variant software for Android, too, because it us used so widely, today. Soon Android will be in every TV set, too, and people will surf the web on the TV. Today, there are apps for chessbase online database (a remarkable tool) and Playchess.com, ICC, etc. It would be great if an Android version of game courier could be created, too. /Mats
I think that only means you can play normal Chess against it. I don't believe Chess for Android supports anything else. Much to my chagrin. It should be very easy to support at least the 8x8 variants, such as Knightmate, Spartan, Berolina, Cylinder...
Aha, I can always turn down the volume. What does it mean that "Chess for Android" can run your FairyMax engine? Are chess variants playable on Android? http://www.aartbik.com/MISC/eng.html /Mats
Well, although I made the engine, (which I distribute myself as WinBoard engine for PC), I am not involved at all in the development of the GUI of the app. I just sent the developer the source code for setting up and searching a position (which I already had made available earlier to the HOXChess developer for the iPhone). This was kind of a 'fire and forget' event, and I am not sure I still have the e-mail address of the guy.
Mr. Muller:
I would like to have a computer chess contest for a 10x8 chess setup I made a few years ago:
Is it OK if I use your engines (Joker80, FairyMax) as contestants in this contest?
Thank you for your time,
- Sam
Thanks for the info and pointer to MaxQi. I've downloaded the source for MaxQi - if I get anywhere with adapting the code I'll make the source available on my magpies site.
I am occasionally still doing some work on Fairy-Max, but I have way too many programming projects. Lately work on Fairy-Max was limitd to making derivatives of it dedicated to a specific variant with unique properties. MaxQi for playing Xiangqi was one result of this (included in the Debian package). Currently I am working on implementing drop moves in Fairy-Max, to make it play Twilight Chess. The 8-rank restriction is not very easy to lift. The board size is unfortunately very much intertwined with the promotion evaluation code, which uses properties of the specific bit patterns of the rank numbers to derive the bonuses of 64 'centiPawn' for pushing a Pawn from 5th to 6th or 6th to 7th rank. This is a legacy of its micro-Max ancestry, where compctness of the code was the only criterion. So the promotion evaluation would have to be re-written when the number of ranks is different. Fairy-Max also uses the most-significant bit of the toSquare as a flag to indicate the move is valid, and on boards with more than 8 ranks this bit would be needed for the rank number. I already did solve that in MaxQi, which needs of course more than 8 ranks, with its 9x10 board. Xiangqi has no promotion, of course, so I did not have to deal with that. MaxQi is a bit of an odd-ball version of Fairy-Max, though, because I layed out the board sideways, to facilitate the testing for eye-to-eye Kings. Despite that it would still be a better starting point for making an 8+ ranks Fairy-Max, rotating back the board so that the original fmax.ini files can be understood again (this only affects the code for board setup and translation of input and output moves to square numbers in the interface), and newle written promotion code can then be added. Unfortunately micro-Max was not designed for easy code maintenance...
Is Fairy-Max still being developed? I am using it as the engine in my MAGPIES project, and was wondering if the 8-rank restriction was likely to be removed in the near future. If not then no matter, I'll try adapting the code myself.
63 comments displayed
Permalink to the exact comments currently displayed.
No.:-(
I am planning to create an engine similar in strength to Fairy-Max which can do anything the Interactive Diagram can do. But it is in a very early stage of inception, and the project was interrupted by the necessity to rescue the TalkChess forum.