Ludii Forum
Implementing Corey Clark's Faust - Printable Version

+- Ludii Forum (https://ludii.games/forums)
+-- Forum: Questions (https://ludii.games/forums/forumdisplay.php?fid=13)
+--- Forum: About the Ludii Grammar (https://ludii.games/forums/forumdisplay.php?fid=15)
+--- Thread: Implementing Corey Clark's Faust (/showthread.php?tid=487)



Implementing Corey Clark's Faust - Michael - 03-05-2021

Ever since he made the game public, I have reserved parts of the back of my mind to thinking about how I can implement Corey's Faust in Ludii. But this is not an easy nut to crack. The game employs a very unique notion of flippable rectangles. I think it is possible to implement it with the current set of ludemes, but I think it would be tedious to do and the result would probably be a very slow game with useless AI.

The main problem is to identify flippable rectangles. The game is played on a square board with orthogonal adjacency only, and a filled rectangle of pieces is flippable if it meets the following criteria:

Quote:(1) It is composed exclusively of stones belonging to your opponent 
(2a) All sites immediately to the north of the stones of its northomost row is filled with stones of one color. 
(2b) All sites immediately to the east of its eastmost column is filled with stones of one color. 
(2c) Same for south. 
(2d) Same for west.
Definition: These unicolored lines of stones adjacent to the rectangle are called its "walls".
(3) The majority of the stones making up its walls are of your color.
(4) It is not part of a bigger rectangle meeting criteria (1)–(3).
Edge rule: 
• If the nothmost row of the rectangle is on the north edge of the board, pretend that there are sites immediately to the north of it that are filled exactly like the sites immediately to the south of the rectangle's southmost row. Same for east and west.
• If both its outermost columns, or both its outermost rows, are on the board's edges, pretend they are adjacent to neutral stones. These neutral stones count towards the total number of stones making up the rectangle's walls, but (being neutral) they do not count towards either player's share of stones making up the rectangle's walls.

It should be possible to iterate over all rectangles by iterating over pairs of values that define rectangles. That way one can check each and every rectangle to see if it meets these criteria. Selecting a rectangle is as easy as selecting two of its diagonally opposite corners.

But, what I am asking is: Do you think there is a way of making this a less daunting and inefficient task? Do you have an idea of any ludemes that will be useful to have? I am hesitant to begin scripting this game because I'm afraid the hard work will not pay off. The only thing I have really done is to check if I could identify rectangels on the basis of two indices.

I have attached a pdf with the rules of Faust (including enlightening diagrams) and my experiment with identifying rectangles. The latter is simply a game where you select two sites which define a rectangle whose empty sites are then filled by stones of your color.


RE: Implementing Corey Clark's Faust - cambolbro - 03-05-2021

Hi,

BoxOff.lud might be worth looking at, it involves moves that define corners of empty rectangles.

Regards,
Cameron