03-26-2021, 10:03 PM
(This post was last modified: 03-28-2021, 05:43 AM by slimy_asparagus.)
Eric,
I can give an update from my point of view. Then I would like to ask if you have any idea where this is on your TODO list.
Recap
Currently Ludii supports a flip ludeme, which does not work for stacks. It was always always on your TODO list to extend it to stacks. However I could not see how I would be able to do what I was trying to do with a stack-compatible "flip". We discussed adding a "forEach Level" ludeme to the language spec.
My update
With all the wonderful work you have done on the stack model, I doubt I really need "forEach Level" any more. I think a stack-compliant flip would be sufficient and much easier.
However, I did put some thought into implementing Unstack which is on your wishlist. (Tak is similar but that has a lot of IP relevance and I doubt you would ever get permission to publish that so I would ignore that one.) I don't see how you can implement Unstack with the current Ludii specification. However "ForEach Level" might I believe make it possible.
My proposal for Unstack
So the copy for Unstack says: "It is a stacking game in which counters are distributed in a way that resembles the "sowing" in Kalah games." I know Ludii supports Kalah games via the "sow" ludeme. However as far as I can see "sow" would not work for Unstack, because "sow" represents one decision move. Once you have taken that decision the rest of the action is forced. In Unstack the "sowing" action is a chained sequence of separate choices. To quote from the rules:
The "at least one" bit is what makes this not a single decision move.
However I believe a "forEach level" ludeme would solve this. It would be needed in two places.
1. The primary decision move would be to move a piece to a neighbouring space subject to appropriate rules.
2. You then need a "then" clause that moves all pieces stacked above it along the same path. This will require a "forEach Level" operation.
3. A final "then" clause does a (moveAgain) if any pieces can be moved.
The second usage will pick up the pieces moved in the above action and allow them to be moved in the same way. This too will require a "forEach Level". It too will do a (moveAgain) if any pieces can be moved.
So My Questions
Please could you give us some sort of timeline on
1. stack compliant flips?
2. forEach level ?
3. Are you likely to implement both or just one. If so which one?
4. Do you have any comments on my analysis of Unstack?
(Note: Please don't delay any upcoming release of Ludii for anything in this post.)
Nicholas
I can give an update from my point of view. Then I would like to ask if you have any idea where this is on your TODO list.
Recap
Currently Ludii supports a flip ludeme, which does not work for stacks. It was always always on your TODO list to extend it to stacks. However I could not see how I would be able to do what I was trying to do with a stack-compatible "flip". We discussed adding a "forEach Level" ludeme to the language spec.
My update
With all the wonderful work you have done on the stack model, I doubt I really need "forEach Level" any more. I think a stack-compliant flip would be sufficient and much easier.
However, I did put some thought into implementing Unstack which is on your wishlist. (Tak is similar but that has a lot of IP relevance and I doubt you would ever get permission to publish that so I would ignore that one.) I don't see how you can implement Unstack with the current Ludii specification. However "ForEach Level" might I believe make it possible.
My proposal for Unstack
So the copy for Unstack says: "It is a stacking game in which counters are distributed in a way that resembles the "sowing" in Kalah games." I know Ludii supports Kalah games via the "sow" ludeme. However as far as I can see "sow" would not work for Unstack, because "sow" represents one decision move. Once you have taken that decision the rest of the action is forced. In Unstack the "sowing" action is a chained sequence of separate choices. To quote from the rules:
Quote:Move 1+ stone(s) at a greater distance (no diagonals), if he leaves at least one cell on each intermediate cell.
The "at least one" bit is what makes this not a single decision move.
However I believe a "forEach level" ludeme would solve this. It would be needed in two places.
1. The primary decision move would be to move a piece to a neighbouring space subject to appropriate rules.
2. You then need a "then" clause that moves all pieces stacked above it along the same path. This will require a "forEach Level" operation.
3. A final "then" clause does a (moveAgain) if any pieces can be moved.
The second usage will pick up the pieces moved in the above action and allow them to be moved in the same way. This too will require a "forEach Level". It too will do a (moveAgain) if any pieces can be moved.
So My Questions
Please could you give us some sort of timeline on
1. stack compliant flips?
2. forEach level ?
3. Are you likely to implement both or just one. If so which one?
4. Do you have any comments on my analysis of Unstack?
(Note: Please don't delay any upcoming release of Ludii for anything in this post.)
Nicholas