MTaktikos wrote: ↑Thu Feb 15, 2024 12:50 am
To let you try that out, I implemented a (quick-and-dirty) BattleOTK engine (i.e. no undo moves possible yet) that can easily beat the Zillions engine,
https://pixeldrain.com/u/oUQanB5f
Just for fun I also tried to make the ID play this
here. Since unloading pieces that were not captured first is not a standard feature, I had to add a very simple custom script on the page to extend all the generated moves with the unload:
Code: Select all
function battleTinker(m) {
if((m[-6] & 511) != 6) { // mover not King?
m[-2]++; m[-5] = m[-6] + 1; m[4] = m[0]; m[5] = m[1]; // add unload to move (type and square)
}
}
That ran into the problem that this is a game with royals, where the royals initially are not present, which the AI assumed to be a game-terminating condition. So I had to build in a kludge to make the AI believe it has one royal in the beginning, even though it isn't on the board. (This can now be configured by adding the line baring=-9 in the game definition.) That seems to do it.
Of course the play sucks. But it does play. And (playing with white) it did beat the Dagaz AI:
Code: Select all
1. c4 h5 2. Nd4 g6 3. Bxg6 fxg6 4. Rc3 Nf8 5. Rb3 Bg8 6. Ra3 Rh8 7. Rxa7 Qh6 8. Ra8 Qg5 9. h4 Qxh4 10. Qe3+ Qf4 11. Qxf4#
Can't deny that I hope that you or another programmer will feel challenged to write a better one - but on the other hand, such a single-variant engine appears off-topic here, your general-engine-project is much more thrilling and other themes should not slowdown it.
Well, it should certainly be possible with the engine I have in mind for this new project to play it at a strong level. It might need some tuning of the default evaluation; it is not clear whether piece values still can be guestimated in the normal way for pieces with a piece-creating side effect. One assumes that the value of the unloaded pieces would somehow have to be reflected in value of the piece itself. In any case extra royals in a game with absolute royalty would have to be negatively valued. (Something that the AI of the Interactive Diagram currently doesn't do, as it assumes it is not possible to obtain those anyway. Considering the game above the Dagaz AI doesn't know it either...)
You misinterpreted that. The "No AI" button means that an AI is predefined, simply try to make moves on such a board and you will see the answer by the AI. If you click on "No AI", you disable the AI and can make moves for both sides, usually to test some unclear rules, or if you have another human player nearby, you can play with him human vs human
OK, I see, sorry about that. I now tried Tenjiku Shogi, but it turns out it plays this according to the Wikipedia rules, and not to the modern rules I am used to. (Entirely my fault, BTW, as I am largely responsible for the Wikipedia rules, which were written down in an era that I thought the modern rules made the game too unbalanced. But now that I wrote an engine for the modern rules, which uncovered a lot of opening theory, it turns out that the modern rules are very playable, and could very well have been the original historic rules.) Anyway, when I open with 1.j5-j6 (chess coordinates) against the Dagaz applet, it immediately blunders away a Bishop General through 1... BGk13xa3. (Zillions also always plays a move like that, because it apparently did not even manage to finish QS from the root, and just plays the capture of the most-valued piece under attack, even if this is a hugely losing capture.) In the modern rules it would have been immediately checkmated through 2.VGj4-o10#, which was what I played. But in Wikipedia rules the VG cannot check with a jumping move, so we played on with 2... a12-a11 3. VGo10-p8, attacking his smothered Fire Demon, for which there is no rescue, basically deciding the game. (A Fire Demon has almost infinite value; even ten Queens would be no match for it.) The Interactive Diagram seems to play it much better, and does find the only defense against the mate threat after 1.j6 in 58 sec at the default depth of 2.5 ply.
This phenomenon is very similar like in BattleOTK. In complex variants where Zillions cannot look ahead more than 2 ply, the result depends almost completely on the right evaluation function.
It may be interesting to test also some MCTS algorithms like McGrave (pre-implemented in Ludii) in Tenjiku Shogi.
I did that in 16x16 Othello. Although the Zillions engine beats easily algorithms like McGrave or UTC on smaller boards, when things get so complex, then McGrave and UTC are better - on the 16x16 board, Zillions loses.
The built-in AI of Jocly uses MCTS search, and I did implement
Tenjiku Shogi for it. (The 2d representaion uses western-style pictograms.) It is of course infinitely weaker than my alpha-beta engine Inferno (it is both MCTS and JavaScript, and very inefficiently implemented as well, while Inferno is a C program and uses advanced incremental algorithms), and needs an opening book to survive the first few moves. But someone let it participate in the correspondence championship, and it actually beat one of the human players there.