Harm, thank you!8-)
<<I did some test games to gauge the value of the Joker in the end-game, starting from the position
2j1k1j2/ppppppppp/9/9/9/9/PPPPPPPPP/1N2K2N1 w - -
(And sometimes with Bb1 in stead of Nb1.) From this it seems the Joker is indeed more valuable than a minor. But not very much, because the Knights also frequently win (which would be pretty inconceivable for, say 2R vs 2N).
One way for a Joker to defend against running passers is to move up the file they are on to get a diagonal view of the promotion square. Because of the rule that after promotion the Joker moves as Q, it could then capture the Q.>>
Fine! Smart behavior
<<(For this is it is a real handicap that Fairy-Max does never consider under-promotion; a good way to thwart this defense would of course be to promote to R. The Joker could defend against that by looking at the promotion square along the back rank, but while the passer is running it cannot move backwards, so it must be lucky to already be there.)>>
In fact, that is a serious defect! Also to extimate the real joker's value in points: inhibition of promotions is a important skill for a joker. Moreover: I have studied that Chessjoker causes just a wide variability in choice of promoted piece (not always or almost always Q, like in standard game...). This is just one of most interesting things in the variant.
<<Another way is to move it up along the file until it looks at the King from a distance. (Usually along a rank.) You would then check yourself by promoting. To step out of the Joker's view you need to move the King, and than the Joker can imitate that, to maintain the virtual check, unless your King can shelter behind something.>>
Other typicall smart behavior: I think that your program is really understanding...
<<A strength of the Joker is also that no piece can attack it directly, without the Joker being able to capture it. Only discovered attacks can be safe. In particular, a King can never approach an opponent Joker.
Weakness of the Joker is that it is easily lost when it gets into Pawn range. You move up a Pawn to attack it, and now the Joker can only move forward, either straight or accepting the Pawn sacrifice. Then you move up another Pawn to attack it, etc. until you have drawn it so far forward that you can attack it with a protected Pawn.>>
These words seem a letteral traslation of my paper!
On the other side, I noted, already sunday night, that your engine understood soon that... no surprise...
<<...The current implementation inIt would not see the zugzwang, because it would happily null-move, and after null move it does not allow Joker moves. Making the Joker a 'super-piece' (i.e. Amazon, QN) after null move is too pessimistic, especially in end-games where there are only K, N and P, so there is a guarantee the Joker will never make a distant Q move. You really would have to loop over null moves with different Joker aliases to all pieces you still have. (Which is too complex for Fairy-Max, and rather expensive anyway.)
So I guess I will alter Fairy-Max such that after null move it will assume the Joker moves as a King (rather than not at all). You will always have a King, so if null move does not fail low, it is likely that in the real game you could play a quiet King move. And if the null move was refuted by a Joker king-like move, there is enough reason to worry, because that King move would also be available after moving Q or either R or B (and possibly after moving P). So it seems a reasonable good indicator of whether a full search is needed. In particular, it would make Fairy-Max recognize the zugzwang when a Joker is 'forking' K+N: the null move will fail low on JxN, and the real search will then discover moving away the N will result in JxK.
A nice spin-off is that Fairy-Max will then always consider itself in check when his King is next to a Joker, as the null move used for null-move pruning doubles duty as check detection. This will enable it to win KJK.>>
I really cannot understand the importance of null movement...

, probably because I never was programming a chess algoritm.

Null movement is forbidden, so I am naturally inclined to think that it is not important at all. Evidently, I'm wrong.
I guess the problem is related with the "virtual check of the joker", it isn't?
Anyway, about the Fairy-Max's flawing, I have a very easy hint (did you read my last post?). I repeat it:
"Just after that a player has moved, imitation value of HIS joker has no importance: in the program, must be RESETTED to undefinite value (not the same, naturally, with its value in point!). That is because the opponent player has take to care just the POSITION of the opponent joker, not its imitation value (that is effimere, virtual). This is true also in case a joker has been moved.
There are two excepcion, though: castling (of the opponent player), and when the joker does check (really, the exception is only checkmate, but anyway you have before to consider the simple check). In the second case, is checkmate and not stalemate just by convention."
So, I still believe that a simple engine is able to play discreetly to Chessjoker, though the game it is not so easy as in a first view could seem... true?
By, Pippo