| Author |
Message |
Greg Schmidt (Gschmidt)
| | Posted on Thursday, March 24, 2005 - 11:46 am: | |
I've implemented a game where the goal is for each player to capture their own pieces. The game is won when only a single friendly piece remains. Is there any way to 'trick' the Zillions evaluation function so that it can actually play games of this type? The win-condition specifies the single piece win, but that's obviously not a big enough hint as Zillions doesn't ever capture its own pieces. Thanks -- Greg |
L. Lynn Smith (Interrupt27)
| | Posted on Thursday, March 24, 2005 - 3:42 pm: | |
You might try making the pieces neutral and allowing each player to control their specific ones. This can be done within the turn-order and declaring move-types for the necessary pieces. Then the win-condition could specify the level of the opponent's type. And the loss-condition the level of the player's type. |
L. Lynn Smith (Interrupt27)
| | Posted on Thursday, March 24, 2005 - 4:29 pm: | |
Sorry, I reversed the endgame conditions. Since this involves the diminishing of the player's pieces, the win-condition should denote the level of the player's pieces and the loss-condition the level of the opponent's. By "player's pieces", I mean those specific neutral pieces which the player has control. |
Greg Schmidt (Gschmidt)
| | Posted on Friday, March 25, 2005 - 11:48 am: | |
Making the pieces neutral sounds like a good idea, I'll give it a try. I have my doubts though that the Zillions evaluator will be able to infer that "less of one's own pieces is generally a good thing" simply from a win-condition that states "single remaining piece wins". Another idea is to create fake positions and strategically create player owned pieces to make the moves in question look good to the evaluator. I suppose this idea could be used with or without the “neutral piece” idea above, although if not used with the above, the rewards would have to be greater to compensate. In other words, a reward of 2 friendly pieces for each friendly piece captured would seem to create an incentive. If it can be done, I don’t know if this extra overhead will be a problem or not. Thanks -- Greg |
Sean Duggan (Dream)
| | Posted on Friday, March 25, 2005 - 7:27 pm: | |
Another possibility is to, rather than actually capture the pieces, store them in a holding pen off to one side. In Zillion's mind, it never loses a piece that way. Only catch is that those pieces would have to have zero mobility which would still Zillions would rate a captured piece as much lower in value than one still on the board. |
Keith Carter (Keithc)
| | Posted on Saturday, March 26, 2005 - 3:55 am: | |
You can manipulate a piece with zero mobility into a higher value. Just use empty add statments in the movement description. For example: (moves (add add add add add ) ) Each empty add increases the value of the piece. Take a look at Kubatoo for an example. My reccomendation is to make the pieces player pieces, not neutrals, and to change the piece type to a nonmover with a bunch of empty adds so a "captured" piece is worth more than a mobile piece. |
L. Lynn Smith (Interrupt27)
| | Posted on Saturday, March 26, 2005 - 4:33 am: | |
Moving the pieces to a holding bin is a great idea. The win-condition could simply be the filling of the cells in this bin, with absolute config naming each. The engine will definitely try to accomplish this. |
Matthew Burke (Morat)
| | Posted on Tuesday, March 29, 2005 - 10:49 am: | |
Or you could write your own engine Might be fun. |
L. Lynn Smith (Interrupt27)
| | Posted on Friday, April 01, 2005 - 5:12 am: | |
Matt, Do you have access to a DLL compiler? I've been looking for a cheap one. |
Matthew Burke (Morat)
| | Posted on Friday, April 01, 2005 - 9:28 pm: | |
I don't have anything cheap---on campus I have access to CodeWarrior and Visual C. It might be possible to use gcc via cygwin if you had the right header files but I haven't tried it. |
Greg Schmidt (Gschmidt)
| | Posted on Friday, April 15, 2005 - 10:57 am: | |
Thanks to all, I've been able to make this work by creating an invisible board vector to which I add invisible bonus pieces. The only detail that remains is that bonus moves into this area are logged in the "Moves Played" window. Making the pieces and/or positions dummies doesn't work because the evaluation ignores them. Is there a way around this? It's not really that critical, just a minor improvement. Thanks -- Greg P.S. It's an out of print game called "Give & Take" so I haven't yet figured out if it's OK to post it to the Zillions site or not. |