Comments/Ratings for a Single Item
I was thinking about having a short-range burning piece, which burns diagonally adjacent pieces, like what the Fire Dragon does in Minjiku Shogi. This creates the desired power gap while still allowing adequete defense against the power piece, even without jumping sliders. An example is shown below.
My only reservation is that introducing any form of burning makes it more a Tenjiku-Shogi variant than a Dai-Shogi variant. If it was up to me I would prefer to only use moves of a type that are already in Dai Shogi. A quite strong piece without solo-mating capability could be made by enhancing a Queen with linear two-leg moves like exist on the Horned Falcon and Soaring Eagle.
I also found another bug where a piece that promotes to a burner doesn't show in the promotion options and then promotes to a white burner if the moving piece was black. Take for example the Chess Knight in the diagram in my last comment.
[Edit]: Pieces that promote to burners upon being asked for promotion choice (at least for Shogi-style promotion) will also burn pieces regardless of whether promotion is accepted or deferred, even if the original piece does not burn.
I also found another bug where a piece that promotes to a burner doesn't show in the promotion options and then promotes to a white burner if the moving piece was black. Take for example the Chess Knight in the diagram in my last comment.
[Edit]: Pieces that promote to burners upon being asked for promotion choice (at least for Shogi-style promotion) will also burn pieces regardless of whether promotion is accepted or deferred, even if the original piece does not burn.
I finally understand what is the problem here. There actually was an avelanche of bugs, some stupid (like accidentally masking off the color bit, or forgetting to mask the 'also burns' bit from the code of the promoted piece), and some more fundamental (introduced by the legal highlighting). The stupid ones are fixed now, so that black promotes to black pieces, and the promoted piece does show up on the purple squares.
The problem with the spurious burning is more fundamental, though: the NewClick input routine combined all moves with the same step to a single one for highlighting, making a list of all posible promotion choices for that move. This was fine when burning was only indicated by a different code for the promotion pieces, as it is when the pseudo-legal moves are first generated. Before the moves can be used they are 'scored', however, which also includes identifying which pieces get burned, and writing those into the move as extra locust squares. This used to be done after the user had selected the move and promotion pieces.
But for the legal highlighting it has to be done for all the moves of the selected piece, to make those in order to test legality even before the user selects one. But this interferes with combining the promotion choices when one of those would burn, and the other not. I am not sure yet how to solve this. It is conceivable that one of the promotion choices is legal, and the other not. (E.g. because you burn a piece blocking a slider attack on the King, or fail to burn a hopper mount.)
Since there are several bugs at once, I'll leave you be.
I might post new diagrams of my ideas in the future, for which you can weigh in as you see fit.
My only reservation is that introducing any form of burning makes it more a Tenjiku-Shogi variant than a Dai-Shogi variant. If it was up to me I would prefer to only use moves of a type that are already in Dai Shogi. A quite strong piece without solo-mating capability could be made by enhancing a Queen with linear two-leg moves like exist on the Horned Falcon and Soaring Eagle.
This logic kind of falls flat, since Tengu Dai Shogi does the same thing with hook moves and Lion Dog moves and is still considered a Dai Shogi variant. Queen+Lion could work for the power piece though (I'm no longer concerned about avoiding lone mating as long as there is still some difficulty in doing so).
I think I somewhat fixed it, now. The scoring routine, which has to be applied to the move exactly once before the latter can be performed, would interpret the promotion code (which would also indicate burning), and change it accordingly, as well as adding any burn victims to the move. For the purpose of legality testing I now always set the promotion code of the move to 0 first (meaning no promotion or burning), and set it back to the original value afterwards. That should always completely restore the move like the scoring routine had not been applied at all. (Which was the procedure before we did the legality testing.) So it has to be applied again on the move selected by the user. But by that time the user has also selected the desired promotion, so it will be known whether the move should burn or not, and the scoring routine will adapt the move accordingly.
This means the board state is now always modified as it should be for the chosen move. The legality testing could be off for moves that do burn, though (or kamikaze moves, which are also indicated by a special promotion code). As there will not be any burning during the legality test, the legal/illegal verdict might be wrong by failing to see a checking piece would be burned, or burning a piece discovered a check. But the destination will be highlighted anyway; just by the wrong symbol (grey cross vs normal). This would not prevent you from making the move, though. Instead of a move-entry bug it is just a highlighting bug.
To fix this I should enhance the procedure for legality testing on moves that always burn or self-destruct. Or perhaps on any move where there is no promotion with choice, as it would in principle also be possible to have type-dependent blocking. Only on burning moves the effect of 'scoring' the move is hard to revert; perhaps I should make a copy of the move for testing legality, and discard that copy afterwards. Promotion with choice is a more complex issue; all promotions are selected through the same highlighted destination square. But some of the choices could be legal, others not.
I also tried to reduce the annoying delay that occured on the first time a piece in the Diagram gets clicked. (The legality testing requires piece values to be defined, so rather than on opening the AI panel the time-consuming guestimating of piece values iss now done on the first click.) I did this by just running fewer iterations on that first click.
This logic kind of falls flat, since Tengu Dai Shogi does the same thing with hook moves and Lion Dog moves and is still considered a Dai Shogi variant.
Considered by who? In my eyes it is more a hybrid. It keeps the pieces from Dai that were in Chu, but the large Shogi variants all do that. The pieces that distingush Dai from Chu were all thrown out. Although one might argue that the promotion-on-capture rule is the decisive difference.
But of course there is nothing against hybrids.
Buddhist Spirit is also an interesting power piece. I think the more important question is whether (some of the) power pieces should be subject to some anti-trading. In original Dai this was not the case, but that could be one of the reasons it was replaced by Chu in terms of popularity. Tenjiku Shogi also has no anti-trading rules. But I actually played that, and even after trading away the Fire Demons and neutralizing the danger of the jumping generals it remains an enormously tense game, because you can get back a Fire Demon through promotion. Which creates an immediately winning imbalance. The Water Buffalo's themselves are only average pieces (by Tenjuku standards), and are not easily traded. So equiping some less important pieces with decisive promotions might be an alternative to anti-trading for keeping a large game exciting.
Tenjiku Shogi also has no anti-trading rules. But I actually played that, and even after trading away the Fire Demons and neutralizing the danger of the jumping generals it remains an enormously tense game, because you can get back a Fire Demon through promotion. Which creates an immediately winning imbalance. The Water Buffalo's themselves are only average pieces (by Tenjuku standards), and are not easily traded. So equiping some less important pieces with decisive promotions might be an alternative to anti-trading for keeping a large game exciting.
It also helps that both the Fire Demon and Water Buffalo come in pairs, and are both sliders.
However, I discovered a new bug where any piece that makes a move to a non-highlighted square will burn/move/make pieces. The squares that get affected are a bit unpredictable though. This also appears to apply to diagrams where the spell parameter is not set, such as this one.
This should be fixed now too. It was a consequence of the partial revert of the legality patch, which moved the 'scoring' back to after the move was selected, instead of scoring each move in the move list. But illegal moves are not in the move list, and one is synthesized based on the origin and destination click when no move in the list that satisfies the clicks is left. I had forgotten to remove the scoring of that synthetic move, so that it was scored twice. The first scoring replaces the 'no promotion' code 0 by the encoding of the piece itself. But the second scoring then interprets the 'has moved' bit of this piece as the encoding of a burn. What exactly gets burned is then determined by the type number of the piece.
I discovered one last bug. The highlights of the crosses for the royal pieces and anti-trading rules are no longer being displayed correctly.
Bug Example shown below. To replicate, simply move the Lions close to each other or the King close to an enemy piece.
seems I inadvertantly deleted too much in the latest patch; the routine Illegal(), which tests legality, was no longer called at all.
I fixed that now.
I think the more important question is whether (some of the) power pieces should be subject to some anti-trading. In original Dai this was not the case, but that could be one of the reasons it was replaced by Chu in terms of popularity. Tenjiku Shogi also has no anti-trading rules. But I actually played that, and even after trading away the Fire Demons and neutralizing the danger of the jumping generals it remains an enormously tense game, because you can get back a Fire Demon through promotion. Which creates an immediately winning imbalance. The Water Buffalo's themselves are only average pieces (by Tenjuku standards), and are not easily traded. So equiping some less important pieces with decisive promotions might be an alternative to anti-trading for keeping a large game exciting.
I think I will go down the Tenjiku path with Reiwa Dai Shogi, but include moves that reference all the moves found in the historical large variants in some way (including Ko and Taikyoku Shogi), but perhaps in more modest amounts. Here are some of my ideas for the new moves:
- Half-Hook Move (RyasRyasW or ByasByasF), a more workable version of the normal Hook Move.
- Jumping Igui (cabS, cabD, cabA, cabN), referencing Ko Shogi's shooting pieces
- Burn (spellZone = F or W)
- Some sort of sliding jump to reference Tenjiku Shogi's jumping sliders
- Some sort of area move to reference Tenjiku Shogi's area move
I'm trying a chess with different armies locally, but it does not work. If I copy paste the exact diagram I get a black white screen (edge). Any idea why?
If the diagram of yours runs in a browser, try looking at the browser console via the right-click + Inspect option (or equivalent). That might help you identify the problem.
If you are using his Interactive Diagrams for your diagram, the following could be helpful. If not, disregard it.
On top of providing the HTML definition you also need to point to the JS script in an HTML script element pointing to it, like so:
<script src="https://www.chessvariants.com/membergraphics/MSinteractive-diagrams/betzaNew.js?nocache=true">
You also have the option of copying the script to a local file for testing without Internet access.
Also, make sure you're copying the whole section when you copy the sourcecode. Missing even a single character can throw things off. For reference, the Diagram starts at <div class="idiagram"> and then ends at its corresponding </div> tag.
Also make sure that graphicsDir contains a valid URL to the piece images. If you want to use those on CVP from home, you should add the website, otherwise it will search the images on your own machine. (Which would be OK if you copied those there.)
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!
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!
Thanks a lot, HG! I was not expecting this so quickly. I am very gratefull!
I see the script line but not the desired effect!
Well, this was the easy part, so I thought I might as well do it immediately. I just had to replace 'imi' by 'imiTable[imi]' in the move generator, and make sure an initialized imiTable would always be present. The harder part is how to make it possible to specify an imiTable in a Diagram-specific way, as a parameter. (Probably using piece IDs, perhaps comma-separated to allow multi-character IDs, etc.)
Oh, I have forgotten to say. There is a bug with the joker again. Now it imitates the latest of the last piece moved by the opponent or the last piece clicked. Now your plate is full!
I don't understand what you mean. This happens in the Diagram I posted? Cnan you give an example of what exactly I have to do to see something irregular?
25 comments displayed
Permalink to the exact comments currently displayed.
You indeed caught a bug there. It was limited to the highlighting routine (the AI handled these cases correctly): when scanning through the blast zone for enemies to know if it should highlight by the 'flame' marker it would also access off-board ranks, which caused the script to crash at that point. Thus preventing further generation of moves. I fixed this now.