PLOY is a piece capturing board game similar to chess for two or four players. Here pieces have a limited range i.e. they cannot move arbitrarily far and the direction a piece may move is limited, but can be changed during the course of the game. Similarly to chess the aim of the game is to catch a special figure, which is called commander here.
The game has been designed by Frank Thibault and was published in 1970 as one of the famous 3M bookshelf games.
PLOY is played on a 9x9 square board with 9 columns and 9 rows and horizontal, vertical and diagonal routes as shown in figure 1. This means, the board has 81 positions for pieces and a piece may only travel along the routes marked on the board.
To make the description of positions and moves easier, each position has a coordinate consisting of a column letter and a row digit (similar to chess). This is shown in figure 2.
So the lower left corner position has coordinate
a1
the center position
coordinate e5
.
Each player owns several circular pieces. All pieces of a player have the same color (either green, red, blue or yellow).
Each piece has direction indicators ("flags") on top going from the center to the edge of the piece. When the pieces are on the board, their flags are aligned with lines on the board and indicate in which direction that piece may move next.
Figure 3 shows the kinds of pieces available in PLOY.
Piece Name | Commander | Heavy Lance | Medium Lance | Light Lance |
---|---|---|---|---|
Picture | ![]() |
![]() |
![]() |
![]() |
Number of Flags | 4 | 3 | 3 | 3 |
Range | 1 | 3 | 3 | 3 |
Piece Name | Heavy Probe | Medium Probe | Light Probe | Shield |
Picture | ![]() |
![]() |
![]() |
![]() |
Number of Flags | 2 | 2 | 2 | 1 |
Range | 2 | 2 | 2 | 1 |
When it is a player's turn, he can choose from two kinds of moves:
In a motion move a piece is transferred from one position to another. Within a single move a piece may only move from it current position to one pointed at by one of its direction indicators within its range.
The range of a piece is given by the number of flags of this piece: e.g., a piece with two flags has a range of two. There is one exception: a commander only has a range of 1.
A moving piece is stopped by a piece of the same team and may hit but not pass a piece of an opponent. A hit piece of an opponent is replaced by the hitting piece.
Figure 4 shows as an example the moves of a light
lancer. The lancer may move at most three positions
(because it has three flags). It can go from e4
to d5
, e3
, e2
and e1
and may also hit the opponent piece
on f5
. Any moves on and beyond c6
are blocked by an own piece and beyond f5
by
the opponent piece.
The second kind of move is a direction move.
In this kind of move a piece stays on its position, but it
is rotated by a multiple of 45° such that its flags
point into another direction. Figure 5 shows a
direction move of a heavy probe on c3
that is
rotated by 135°.
On a single turn, shields (the pieces with one flag) may
do a combined move by changing direction immediately after a
motion move. Figure 6 shows a shield move
from e7
to d6
with a subsequent
rotation by 90°.
A player is eliminated when either his commander has been hit by another player or all pieces except the commander have been hit. Otherwise he is in play. This is called the strict elimination rule.
The engine supports a simpler form of elimination called relaxed elimination, where a player is eliminated only when his commander has been hit and is otherwise in play. This is identical to the chess elimination rule.
A player in a partnership game (see below) is absorbed, when he is eliminated according to the current elimination rule, but his team partner is still in play.
PLOY can be played by two or four players in one of the following variants:
In a two player game the two players get 15 pieces each and put them on the board in the configuration given in figure 7. The player with the green pieces moves first and both players take alternate turns until the one of them is eliminated.
In a four player game the four players get 9 pieces each and put them on the board in the configuration given in figure 8. Green moves first and the players take turns in clockwise direction.
Once a player is eliminated, all his pieces are taken over by the player doing the hit leading to elimination. The player taken over may not take a turn any longer, but his pieces can be used by the dominating player during his turn.
Note that in the original PLOY rules a bare commander (without other pieces) must be removed from the board; the engine does not support that rule, but leaves the commander on the board instead.
In a partnership game the four players also get 9 pieces each and put them on the board in the configuration given in figure 8. There are two teams consisting of green and yellow on the one side and red and blue on the other side. Green moves first followed by red, yellow and blue and so on.
Once a player is absorbed, all his pieces are taken over by his team partner. The partner also takes the turns of his team partner and may use all team pieces for his moves.
The game ends
Similar to chess a player may also be eliminated by resignation and by exceeding his allocated time.
The PLOY engine has no mechanism for resigning, but time control may be activated. Time control is liberal for humans, i.e., humans do not automatically lose the game when passing the time limit, but get a visual feedback instead that they have run out of time. The computer will always obey the allocated time budget.
We use the algebraic notation for moves that gives the coordinates of the start position and of the final position typically separated by a dash. When a piece is hit, the dash is replaced by a cross and when the move ends a game it is followed by a hash mark.
A rotation is indicated by a trailing digit preceeded by a plus or minus sign. It tells how many 45° rotations are done on the piece. Plus indicates a counterclockwise, minus a clockwise rotation (so a "+3" means a rotation by 135° counterclockwise).
The moves presented above are notated as follows:
![]() |
e4-d5
|
![]() |
c3+3
|
![]() |
e7-d6+2
|
A new game can be started anytime by selecting the menu
entry New
from the
File
menu. A selection of
different game variants is presented as a dialog box and
— when selected — the new game is
started. Note that the game has the default game parameters
set: this means, for example, that all players are
human.
An existing game can be loaded via a file selection box
initiated by selecting the menu entry
Load
from
the File
menu. Ploy games have a
".plg" extension (for PLOY Game) and the file
selection remembers the last location where a game has been
loaded.
An ongoing game may be saved anytime by
selecting Save
from
the File
menu. If the game
already had a file associated, saving is immediately done to
that file. Otherwise some file name has to be selected or
entered via a file selection dialog.
Save As...
from
the File
menu works analogous: you
are prompted for a file name to save the ongoing game even
when it already has been stored somewhere else.
For an ongoing game the score sheet (containing the
players names and their moves) may be saved anytime by
selecting 'Export Score Sheet...
from the File
menu. The score sheet is saved in the same directory as the games, but with a txt-extension.
The format of the file is very simple, it is pure text file with tab separated columns. If you need a more sophisticated format, I suggest to import it into a spreadsheet and postprocess it there.
Ploy moves can be entered mainly in two ways:
Also a mixture of both methods is possible.
Nevertheless the general logic is always the same: For a motion move you first have to select the start position of the moving piece, then the final position. For a direction move you select the position of the rotating piece, select that position again (to indicate that this piece does not move away from its start position) and then specify the rotation.
For example, to enter the move e4-d5
– from
the example above – one has to select the
position e4
and then the position d5
. To
enter the move f3+3
one has to select the
position f3
and again that position f3
and
then specify the rotation by 135° counterclockwise.
Positions are entered by typing in the column letter first followed
by the row digit and a final confirmation by the return
key ↵
.
For example, to enter the position e4
one has to
type e
for the column,
4
for the row and a final confirming
↵
.
It is also possible to use the cursor keys to change the position of the cursor, but this is tedious and only recommended when the selected position has been missed.
The start position is entered this way, the final position also. Note that the cursor for entering the final position is initially positioned on the start position, so you can use the cursor keys for small distances as well as the coordinate method.
A motion move is fully defined by the start and final position, so
it is executed as soon as the final position is confirmed. So for
example the move e4-c6
is quickly entered as
e
4
↵
c
6
↵
The program does not directly check whether the positions entered are plausible, but it checks whether the complete move is allowed.
A direction move is entered by selecting the piece to be rotated on the start position, selecting that position again and then specifying the rotation. The position is selected as described above by coordinates or cursor keys and a final confirmation.
The rotation is specified via cursor keys: a left or up cursor key
turns the piece counterclockwise by 45°, a right or down cursor
key turns it clockwise by 45°. A rotation indicator tells how far
the piece has been rotated from its initial position. Once the
orientation is okay, the rotation is again confirmed by the return
key ↵
.
So for example the move e4+3
is quickly entered as
e
4
↵
↵
←
←
←
↵
.
You do not have to give the coordinates for the position again,
because it is selected by default as the final position.
Also note that by default a rotation of -1 is preselected: hence for clockwise rotations you do not need to press n cursor keys, but merely (n-1).
For a shield move the motion move has to be followed by a rotation, so one has to combine the entries.
A single click on the board via the mouse selects a board position. The position can be changed via mouse or keyboard until it is confirmed by another click on the board position selected.
So typically a board position is selected and confirmed by a double click.
A motion move is fully defined by the start and final position, so
it is executed as soon as the final position is confirmed. So for
example the move e4-c6
is quickly entered by mouse
via
e4
andc6
A direction move is entered by selecting the piece to be rotated on the start position, selecting that position again and then specifying the rotation. The position is selected and confirmed as described above by the mouse and another confirmation.
The rotation is specified via a small popup window with three buttons (cf. Figure 9): the left button turns the piece clockwise by 45°, the right button turns it clockwise by 45° and the center button confirms the rotation. A rotation indicator tells how far the piece has been rotated from its initial position.
To correct errors via keyboard several keys are available:
Del
resets the current position
input.Esc
resets the current move
input.Ctrl-Z
resets the last confirmed
move input.Ctrl-Shift-Z
resets to the last
move input of a human player.The same corrections (without the reset of the position input) can
be done via mouse by selecting menu entries in the
Move
menu:
Reset current move entry
resets
the current move input.Undo last move
resets the last
confirmed move input.Undo up to human player
resets
to the last move input of a human player.There are two settings dialogs: one for defining the program
settings (via menu Game::Program
Preferences
) and one for defining the settings for the current
game (via menu Game::Game Preferences
).
The program settings dialog (shown in figure 10) allows to define several settings:
language:
Here you can select the
language for the program (see section
"Customizing the Program" on how to add
a new user interface language). This setting requires a restart
of the program to become operative.apply time control to humans:
This
tells whether the moves of human players are also by default under
time control.bound kind
and value for bound
: This is the
default bound for the move calculation: time bound for move
gives a bound in seconds for each move of a player, time bound
for game gives a bound in seconds for all the moves of a
player in a single game, ply bound tells how many levels
(moves and counter-moves) a computer player will analyze
and node bound tells how many game situations a computer
player will analyze. Note that only the time bounds are
meaningful for human players.use relaxed elimination rule:
This
tells whether by default the elimination rule is used that keeps a
player in play even when he only has a bare commander.use only rotations by
±45°:
This tells whether by default a piece may
only be rotated one sector to the left or to the right. This is a
rule specified in the original instructions in Germany.When some game is active, the game settings dialog (shown in figure 11) allows to define several settings for that game:
use relaxed elimination rule:
This
tells whether for that game the elimination rule is used that
keeps a player in play even when he only has a bare commander.
There is some caveat here: the game is rolled back to a situation
where some move would violate the new elimination rule. E.g., a
hit move that leaves a player with a bare commander eliminates him
by the strict rule but he is still in play for the relaxed
elimination rule. So any subsequent move of that player is not
allowed any longer for the strict rule. In most cases changing
the elimination rule is fine, but you should be aware of
this.use only rotations by
±45°:
This tells whether by default a piece may
only be rotated one sector to the left or to the right. Note
again that the game is rolled back to a situation where only
conforming moves have been done before.apply time control to humans
,
bound kind
and value for bound
: Those settings are
identical to the program-wide settings above, but only apply to
the current game. When you change the settings to time control
per game, all timers are reset.player name
and is
human
: Here you can define the names of the players for
all the players for the current game and the fact whether the
player should be simulated by the CPU.This implementation of Ploy uses a MTD(f) search strategy and has a transposition table with 223 slots and also records several refutation moves per search level. On a current computer system a thinking time of less than 40s per move leads to a very bad play by the engine. PLOY has no endgame or opening library, but at least it plays reasonable with a thinking time of 60-120s.
As an alternative you can specify the number of nodes to be searched: this makes the result independent from the speed of your system. A reasonable value is 1,000,000 nodes; normally ploy processes about 40,000 nodes per second, so this takes about 25s.
It is also possible to give a bound on the number of plies, but this leads to long search times, because in a PLOY situation a lot of moves is possible because of the rotations. 200 moves per player are not uncommon. So, for example, a ply bound of 6 leads to the analysis of 2006=64·1012 nodes which takes decades to analyse on todays machines.
You can customize PLOY by editing or copying the resource file
located in the resource
directory. Here you will find
string definitions for messages, colour codes in RGB hexadecimal
notation and font definitions.
It is recommended that you take an existing RSC-file as a template, copy it and change accordingly. When you start PLOY again, your definition shows up in the program preferences as a new resource definition. The resource file uses an UTF-8 encoding, so you also can use non-ASCII characters as long as they are UTF-8-encoded within the file.