Greg Strong wrote on Mon, May 20, 2019 10:22 PM UTC:
You are taking on a couple of difficult problems ...
Being able to mix-and-match pieces is obviously difficult and the CECP isn't really suitable for this. External configuration with a text file is probably what is required. It wouldn't need to be all that sophisticated if your configurablity is limited to adding new piece types. ChessV does offer a simple scripting language that will let you accomplish this. What it supports is hit-and-miss but just adding new (basic) piece types is no problem. Your ski-jump move is not presently supported however. I need to add that anyway for the Grand Accetrix Griffin, but it won't make this next release. It has been almost a year and a half since I've put out a new version and I have added so much new stuff since then that I just need to wrap up and get it out.
Knowing when to end a game due to insufficient mating material and when to return a zero evaluation is also obviously tricky. The currently released ChessV 2.1 doesn't do anything about this at all. IIRC, you can be down to two kings and it'll happily wander around until the 50-move rule is triggered. The new version is somewhat better. It knows about endings with standard chess pieces, and even includes customized evaluation for a few combinations (KRKP, KRKB, and KRKN), plus a "mop-up" evalution for lone king vs. rook or more. But throw in any non-standard pieces and it goes back to not making any decisions... King + Camel vs. King and you are back to wandering around for 50 moves with it stupidly thinking the side with the Camel is ahead (although it is smart enough to know that if the other side has a pawn then the side without and less than a rook's worth of material should be scaled down massively.) I would like to program in more smarts here, too, especially in light of all your work to quantify these endings. I now have a material hashtable so it could be done without worrying about computational cost, but probably won't get to too much of this for this version. Looking for low-hanging-fruit, like a simple piece property that says "this piece can't mate without help." It would be really, really awesome to make it smart enough that, when a game starts, even if it is a user-define game through an include file, it does enough endgame table generation to make some basic decisions about this stuff, but that is probably a long way off.
You are taking on a couple of difficult problems ...
Being able to mix-and-match pieces is obviously difficult and the CECP isn't really suitable for this. External configuration with a text file is probably what is required. It wouldn't need to be all that sophisticated if your configurablity is limited to adding new piece types. ChessV does offer a simple scripting language that will let you accomplish this. What it supports is hit-and-miss but just adding new (basic) piece types is no problem. Your ski-jump move is not presently supported however. I need to add that anyway for the Grand Accetrix Griffin, but it won't make this next release. It has been almost a year and a half since I've put out a new version and I have added so much new stuff since then that I just need to wrap up and get it out.
Knowing when to end a game due to insufficient mating material and when to return a zero evaluation is also obviously tricky. The currently released ChessV 2.1 doesn't do anything about this at all. IIRC, you can be down to two kings and it'll happily wander around until the 50-move rule is triggered. The new version is somewhat better. It knows about endings with standard chess pieces, and even includes customized evaluation for a few combinations (KRKP, KRKB, and KRKN), plus a "mop-up" evalution for lone king vs. rook or more. But throw in any non-standard pieces and it goes back to not making any decisions... King + Camel vs. King and you are back to wandering around for 50 moves with it stupidly thinking the side with the Camel is ahead (although it is smart enough to know that if the other side has a pawn then the side without and less than a rook's worth of material should be scaled down massively.) I would like to program in more smarts here, too, especially in light of all your work to quantify these endings. I now have a material hashtable so it could be done without worrying about computational cost, but probably won't get to too much of this for this version. Looking for low-hanging-fruit, like a simple piece property that says "this piece can't mate without help." It would be really, really awesome to make it smart enough that, when a game starts, even if it is a user-define game through an include file, it does enough endgame table generation to make some basic decisions about this stuff, but that is probably a long way off.