Ludii Forum
Make Muster - Printable Version

+- Ludii Forum (https://ludii.games/forums)
+-- Forum: Suggestions (https://ludii.games/forums/forumdisplay.php?fid=10)
+--- Forum: Submit Your Games (https://ludii.games/forums/forumdisplay.php?fid=23)
+--- Thread: Make Muster (/showthread.php?tid=727)



Make Muster - dale walton - 10-02-2021

This has been a long time in coming, due to not knowing how to test the win condition. I finally got back to it now that the language (and my understanding of it) is better...


RE: Make Muster - Eric Piette - 10-04-2021

Hi,

Thanks for the submission. I am going to add it for the next release.

Regards,
Eric


RE: Make Muster - fuerchter - 07-19-2022

Hi Dale,
thanks for coming up with the game and adding a Ludii version.
While I'm still learning Ludii's language, I'm trying to re-implement some already implemented games (like yours), so I have other people's code to read when I'm finished or give up.

Similar to your efforts, I am having issues implementing ending rule 2), though you seem to have managed in the end. Would you mind giving me a hint on how I could achieve this also (without me looking directly at your .lud)? I've tried a few different ludemes now:
(size Territory) - this only seems to work, if the region a player encloses does not contain any opponent's troopers at all (will be >0 in that case)
(enclose) - this is the opposite of (size Territory) where this will only trigger a win, if the region _only_ contains opponent's troopers?

I've also looked at (is Blocked) and some of the (sites ...) ludemes, though not as thoroughly.


Besides that, was there some kind of formulaic way to generate the Make Muster board instead of taking a square board and removing cells (again, I've not looked at your .lud yet)?

Finally, I noticed that in your rules post there is a small error, namely in the image subtitled "Pink's diagonal move...". The move shown would be illegal, since pink would have to add a trooper in the corner instead. Setting up the game state in your Ludii implementation seems to confirm this. I hope, you're fine with me pointing this out (perhaps you already knew anyways).


RE: Make Muster - dale walton - 07-22-2022

HI,

Thanks for your interest. I am glad you are trying to learn Ludii by reverse engineering.
It has been awhile since I implemented Muster, and I have learned a lot more about scripting it, but this script is actually a fairly simple one, as my games go.

Re the board: removing squares from a square board is not a bad approach.
Now-a-days, it is possible to do math within these definitions, so a generalized formula can be used.

At the time I used a different approach: a table of poly grid definitions (probably by trial and error) and it seemed to be a buggy process, but I don't think I ever fully understood how the sites within poly are truly selected. - If one understood that, one could also do it by formula.

A third approach would be by defining "+" shaped regions and concatenating them together in a square grid somehow - There are a lot of grid operators I haven't explored, so I can't say if that would be possible.

A note on the rules implemented:
I actually modified the ending rule in implementing for Ludii - It proved simpler to understand the game if I removed the original rule that prevented a win if a piece needed to be placed. (this could happen by moving a piece to unify your position, such that a new placement location is created. It already applied for the blocking goal case to avoid complicated exceptional end games). The code for the original unification rule is still in the script, but commented out.

For the end conditions hint: My logic used counting how many groups a player has, provided he has multiple pieces in play; and for the blocking goal, finding how many groups of non-player sites exist. (Some of the "Group" related ludemes have had issues, and I am surprised that the particular one I chose to use is working. I have found that sometimes adding in some of the default arguments (or removing redundant default arguments) in the ludemes in ones script can work around bugs.)

Thanks for pointing out the error in the rule diagram. I will need to remember to correct it...

A final point, my understanding is that Ludii is for non-commercial use. Likewise for Muster: commercial use would also need my permission.


RE: Make Muster - fuerchter - 07-24-2022

(07-22-2022, 01:20 PM)dale walton Wrote: It proved simpler to understand the game if I removed the original rule that prevented a win if a piece needed to be placed.

I didn't even notice this, when playing it through Ludii. Though a win where you would still have to add a trooper might not be that common.

(07-22-2022, 01:20 PM)dale walton Wrote: and for the blocking goal, finding how many groups of non-player sites exist.

Thank you very much! I used this in my version, and it looks like it's working. I feel like I should have figured this out on my own, but eh.

(07-22-2022, 01:20 PM)dale walton Wrote: A final point, my understanding is that Ludii is for non-commercial use.  Likewise for Muster: commercial use would also need my permission.

Yeah, I only intend to do things in my free time here (learning and playing around with the program, no commercial use).

After I finished my .lud of the game, I compared a bit with yours and learned about the (priority) ludeme which I hadn't used before!
Aside from that, I used (what I believe) is the game's property that you can only win with a "Move" move, not with an "Add" move to check and trigger the end after that. Perhaps this can also be useful to you in some way.


RE: Make Muster - dale walton - 07-25-2022

Glad you learned something.

Only checking for wins on the move turns probably has only a slight effect. I am guessing that if it is in the movement code some of the positional AI's might need to evaluate it, but not if in the end section. On the other hand, putting it there with a trigger means it is tested half? as much, -- there still is an end test for the trigger, but not counting 2 sets of groups each time..

You can do some timed runs with particular AIs and see if there is any difference.