Ratings & Comments
I configured it myself. It is possible to train an NNUE for a custom variant for Fairy-Stockfish, so if someone were to do that, we could probably have much better version that should understand the value of the pieces and king safety properly. Unfortunately, I do not have the hardware to train it right now.
OK, that is what I thought. But for one, a single game is hardly statistically significant, and even in 10 games you can only draw a (weak) conclusion from a result like 10-0 or 9-1. But if the engine used is excessively weak, even that would be meaningless. Fairy-Stockfish is not automatically strong in every variant you configure it for, just because Stockfish is strong at orthodox Chess. It might have a world-class search, but strength depends on evaluation as well as search. With faulty evaluation good search only backfires, as the engine gets more clever in finding ways to force losing trades, or create trouble for itself in other ways. And the heavy pruning makes it blind for the lines that are actually winning, as it considers those poor play, and thus irrelevant.
QueeNy uses piece values Q=9.5 and N=5, which is not optimal with fewer Knights (where de Q/N ratio quickly goes up), but good enough to avoid getting there. But even then, to effectively clobber Stockfish required removal of the normal King Safety evolution. It could even beat Stockfish and many other top engines of those days with 6N vs 3Q (which is theoretically lost). The top engines never took the opportunity for making a 1-for-2 trade, (the first step for whie towards the win) until it was too late, and they had to sac 1-for-1.
All is cool, but I master GC preset.
Since this comment is for a page that has not been published yet, you must be signed in to read it.
Since this comment is for a page that has not been published yet, you must be signed in to read it.
Since this comment is for a page that has not been published yet, you must be signed in to read it.
I once made a wild guess and decided that the maniacs army should have pieces worth roughly 133% of the values of the normal pieces. Rs are replaced with Maniac Fourfers Ns are replaced with Maniac N2s Bs are replaced with Maniac B4nDs Q is replaced with Maniac Acme I called it Bearable Berserkers. Guess I should rename the army to something that ends with Maniacs. They have not been playtested so I'd like ID to support Mandatory capture. Currently you can only make Maniac pieces with a long Betza string. E.g. Maniac Wazir=cWomdaubaromdaubaromdaubaromdaubarmW Not sure about Sirenes. Can you reply a check with moving a Sirene to a square attacked by the piece delivering the check? Edit: How do I delete a comment I entered without a verified ID? In Bearable Berserkers, Maniac is a piece that only prevents itself from traveling but doesn't prevent others from moving.
Since this comment is for a page that has not been published yet, you must be signed in to read it.
Interesting: when I coined the term 'Maniac' I was in doubt whether to call it maniac or berserker. I finally chose maniac because I had already used Berserker as a piece name in Macadamia Shogi.
Offering a Sirene to 'distract' a checking piece is an interesting dilemma. I suppose strictly speaking non-captures would still be pseudo-legal moves even when a capture is possible, as their legality depends on the board situation outside the path of the move. So if checking is defined as a pseudo-legal attack on the King (as FIDE rules do), offering the Sirene would not solve it. But there is another way to look at this, which is that King capture instantly terminates the game, so that you can never expose your own King to any retaliation through it. King capture would then never be illegal due to the checking rule. But it could still be illegal due to the mandatory-capture rule. So the reasoning then would be that winning by King capture would have to be done by a legal move, but that pseudo-legal moves do not become illegal by exposing their King. (But could still be illegal by other global rules, such as blowing up your own King in the process, as in Atomic Chess, or an adjacent Immobilizer.) Then distraction by a Sirene would be an allowed method of check evasion.
I think the latter interpretation of checking is more suitable for chess variants, where you can have pieces that affect each other in all kind of ways.
Weirweb
But 960.
I now introduced the concept of 'prioritized moves', which is a generalization of mandatory capture. Through the captureMatrix you can now specify in a type-specific way which captures are mandatory. A tilde (~) there would indicate the corresponding capture is prioritized. If a prioritized move is legal, all non-prioritized moves are forbidden. Mandatory capture can then be implemented by prioritizing all captures (captureMatrix=.~6/"/"/"/"/" if there are 6 piece types).
I made the following Diagram to test this: as extra pieces on 10x8 there are a Siren (b1/b8) and a Maniac (i1/i8). Capturing a Siren as well as all captures by a Maniac are prioritized. Only a single priority class is supported, so if both (say) QxS and MxP are possible you can freely choose between those. The Siren moves as King (to not make it too easy to use it as bait for catching a valuable opponent), the Maniac can jump to any desination in the 5x5 area centerd on it (KNAD), which is a short-range move, to not make it too easy to draw it out.
Only the latest betzaNew.js supports this, so flush your browser cache, and view in isolation (so other Diagrams on the same page using betza.js do not spoil it). It might be worth posting this as an article ('Siren Chess').
I was thinking of Maniac that only prevents itself from traveling but doesn't prevent others from moving.
Anti-Anti-Chess960
I suppose this would be easier to implement, at least at the level of pseudo-legal moves. A piece could have not a single, but a set of move descriptions (e.g. specified by a comma-separated list of XBetza notations). And the move generator would fall back on the next descriptor in the list whenever a descriptor fails to result in any moves.
If the rule would be that having some pseudo-legal moves which happen to be illegal should also allow fallback on the next descriptor, it would harder to implement in the AI. Because illegality of the move will only be discovered when a move has already been searched deep enough to also consider replies. And if a move of a piece that can have fallback would turn out illegal at that stage, it would have to figure out whether that was the only remaining move in the move list for that piece, and if so, turn back to generation to add the fall-back moves.
But of course there is less need to allow fallback in case the primary moves that exist are illegal; one could simply consider the piece pinned in that case. Like pieces that have no fallback would be; these often cannot move at all either. For globally mandatory moves that would be a bit unnatural, because it could potentially freeze all pieces if all mandatory moves would happen to be illegal, and thus lead to strange stalemates.
I am curious about your to do list in two ways. It will also be helpful to know these two things, because their moving forward or not, influences my path of designing and testing new games.
- Do you intend to implement the generalizations for the joker that we were talking about?
- Any progress in your very general C++ AI?
I am writing programs of my own for the games I'm designing, but even if I'm moving forward I'm not very fast. Also later on I'll need advice from you (because I don't know where else I can ask) in writing a xiangqi, shogi and chu shogi(or more likely apothecary versions for that :) ) AIs.
Once again thanks for your time. By the way, why is scirocco one of your favorites? It is a bit complex. I'm asking because my creations are considered too complex too. I decided to tone down things (no more brouhaha squares, for example), but I'm interested in what makes a game with a steppe learning curve interesting.
I am very busy at the moment with real-estate matters (renovation of one apartment, and attempts to buy and move to another place), which leaves me very little time to work on chess programming. So the general AI written in C will still stay on the back burner for some time. The mandatory-capture feature was surprisingly simple, because it used the already existing capture matrix, and took me just a few hours, so I could squeeze it into my schedule. What also helped is that it was a feature that potentially had wide application, amongst which one of the most popular chess variants (Suicide Chess). A generalized Joker seems a niche application I never heard of before you brought it up. It would probably require more work, and that I generally dislike imitators didn't help its case either. But if you are eagerly waiting for it I will try to give it somewhat higher priority.
I like Scirocco (as well as Chu Shogi, by which it is clearly inspired) because the emphasis is on relatively weak pieces there. Most variants have a disproportionally large fraction of queen-class pieces, often not adding any minors at all. And I like subtlety better than the brute force this leads to. In large variants the goal of checkmate is usually impossible to achieve until very late in the game, the King sheltering behind several layers of defending pieces. In the mean time you can only hope for a tactical mistake by the opponent leading to a trade that gains some material. In Scirocco promotion can be a second objective, which often gains you more than a piece exchange. It is difficult to defend against even when most of the pieces are still there, because the initial pieces on average are pretty weak. And the large depth of the promotion zone makes it readily accessible even if there are still many pieces; you don't have to fight your way to last rank, like you would have to do to get at the King. And all pieces promote, even the relatively fast ones. So you are always in danger, during every phase of the game.
In addition Scirocco has some peculiariarities that are not very common, such as Checkers-like capture and move induction. (Like Chu Shogi has the multi-leg moves.) Without overdoing it by making too many pieces have these exotic properties. That there are many different pieces might be intimidating for an orthodox Chess player, but as a veteran chess-variants enthousiast I am already familiar with most of those.
I would not say your Apothecary creations are very complex; Brouhaha squares seem pretty easy to grasp. They are just large.
I'll be patient about the imitator thing. I understand you have a real world life. Do not worry! Also I don't know any other applications!
Minotaur Halls
But with shuffle.
Woody Rook in Interactive Diagram uses warmachineferz graphics instead of warmachinewazir.
Ah, thank you for spotting this! I fixed it now.
Since when are spam messages approved as Comments? The author is not a member, so he should not have been able to post anything here without supervision. And what is worse, he seems to have found a way to make the Comment impossible to edit; I get an error message from the database when I try to submit a modification.
To get you going I have now made the preliminary change in betzaNew.js that it uses a predefined array 'imiTable' to decide what is imitated. If no such array is defined, the I.D. creates one, and initializes it as imiTable[i] = i for standard imitator behavior. It can be defined by embeded JavaScript in the page. (Which would then affect all Diagrams on that page!) In this comment I embedded:
<script>var imiTable = [0, 2, 3, 4, 5, 7, 6, 1];</script>This causes a move of type 1 (Pawn) to make the Joker move as 2 (Knight), etc. View in isolation, flushing browser cache to make it work!
25 comments displayed
Permalink to the exact comments currently displayed.
I wonder if it would be worth it to support mandatory capture in the Interactive Diagram. Removing all non-captures from the move list if there is a capture in it would not be that difficult. If that doesn't leave any move (which normally would indicate the side to move is mated), it could undo that, so the search can use non-captures. I have no feeling what this would do for the piece values, though. And it would only work if the rule applies to pseudo-legal captures. (Which would be fine for games like Suicide Chess, which do not have royalty in the first place.)
If non-captures would be allowed when pseudo-legal captures are possible, but all illegal, it would be a bit harder. Whether a move is legal would only become clear after searching it deep enough to see the replies. I guess it could start the same way, though, suppressing all non-captures in the first few depth iterations it does for each position. If at the depth where illegality of captures can be seen no legal moves remain, it should get a second chance to re-enable the non-captures.
Of course we could try to generalize the rule and refine it, by allowing type specifity. E.g. a new symbol in the captureMatrix could indicate which captures are mandatory. Then you could define f.e. pieces that must be captured whenever the opportunity arises ('Sirenes'?), or pieces than must capture whenever they can ('Maniacs'?).