Click here to go the Primary page
Chapter 1: Introduction
This paper explains the inner working of the Visual Basic chess program ‘Maniac’ and this paper will also serve as a manual for the program. Even though ‘Maniac’ is my intellectual creation, I have employed computer images from other products and from the Internet. I have acquired a chess set and a chessboard from the commercial product ‘Chess Mater 6000’ that I have used in ‘Maniac’. I have also acquired a set of ‘Simpson’ icons from the Internet that I have used in ‘Maniac’ as another chess set. I have also acquired one chess piece (‘The Maharaja’) for the ‘Wooden Chess Set’ from the commercial product ‘Zillions of Games’. Other than that, all other chess sets and chessboards (and other images) are of my creation or else they were freeware images that were acquired from the Internet for which the authors chose to be anonymous.
I
searched the net, during the first few weeks of starting the project. I did
find some free-ware code, but I chose not to look through them, since I assumed
that they would be quite complex (and they were), and it would be a lot more
easier if I were to write my own based on some abstract theories on game
programming. I found some FAQs that dealt with game programming, especially
chess. They talked about algorithms, such as ‘Alpha-Beta pruning’, and other
variations of this. First of all, I did not really understand, as to how these
algorithms worked, and their explanation was not sufficient. However, programs
such as ‘Crafty’ were available with their C code, but as stated before, I
decided not to look at the code – they were very complex, and my lack of Chess
programming knowledge made it even more difficult. Anyhow, I decided to employ
the most logical way of solving the given problem. I figured out that, if all
possible moves were to be found, and certain points were to be assigned based
on a set of evaluations, I should be able to create a fairly effective chess
program – that is the most logical way – I know, it is not a big deal, but I
had to figure it out on my own (later I found out that this basic principle is
known as minimax, which essentially is to minimize your opposing
player’s board value and maximize your own).
At
the start of the program development, I had a set of requirements, which I
thought should be fulfilled for the program to be complete. Basically, I
started of with a basic interface, used dynamically loaded image boxes, with
Drag and Drop events, defined, which allowed pieces to be transferred from one
image box (or one square), to another image box (or another square). Once I got
this to work right, and created some icons, and gif files for the pieces, I had
the basic interface. At first I did not plan to implement the rules check and checkmate, fearing that they would be too complex. Instead, I
decided that the objective would either be to capture all the opposing pieces,
or to actually capture the opposing King,
and another piece will become the King,
and then capture that until the opposing player runs out of non-Pawn pieces (Pawns may not become Kings). I found info about such variants
from the Internet*. Based on this I started
to write, code for the primary pieces. The primary pieces are Pawns, Bishops, Rooks, Knights and the King. The Queen is not a primary piece, since its moves are based on the Bishop and Rook, so a Queen is
essentially a combination of all possible moves made by a Bishop or a Rook from a
given square. The same would apply to the other combo pieces – Chancellor, ArchBishop, and Empress.
Once I had the basic rules coded, I could make legal moves, except for check and checkmate, but at that point they did not matter. Then, I started
to convert the existing code that was used for checking legal moves, to
generate all legal moves. Eventually I had a working version, that would allow
me to make a move, and the program will make the next and so on. At this point,
where I had a functional program, I decided that I should attempt to implement
some sort of evaluation function. I added primary evaluations such as capturing
pieces, supporting pieces, attacking pieces, and loosing pieces. Over time, the
evaluation code become quite complex and sufficient to accommodate some sort of
implementation that would allow the discovery of a check. Finally, I did get the program to recognize checks, and evaluating checkmates and stalemates, were relatively simple. A checkmate is a position where all possible moves lead to a check, and the King is in check in the
current square. As for stalemate, it is exactly the same as a checkmate, except that the King is not in check, in his current position. Eventually I developed more
evaluation points, and decided to create a form for creating and editing
personalities. Essentially I decided that the user of the program, should have
the opportunity to change the internal values that are used for the
evaluations, so I created the Personalities form, that allowed the user to
create unique personalities by tweaking the different values. As the project
progressed, I decided to accommodate different variants of chess. From the
beginning onwards, I did write code to include the Chancellor and ArchBishop,
and once it was mature enough I added the Empress, since all of these three
pieces are derivatives of the primary pieces (i.e. Bishop, Rook and Knight). At present, there are about ten
different variants that have been acquired from the website mentioned on
footnote of the previous page. Even though there is no official interface to
add new variants, (unlike Personalities where there is a separate form to add
and make changes) users may add new chess variants, based on the available
pieces, by editing the Access file. All information pertaining to the program
(Personalities, Chess variants, different Chess Sets and Chess Boards and saved
games) is stored in an Access 97 data-file that is stored in the local
directory of the game. At the end of this document, I have included added
information, as to adding new Chess variants, Chess Sets and Chess Boards in
the Access file. Please note that the personalities should be created and
edited through the form provided for this purpose, since different personality values
are formatted differently, before being stored in the Access file. Further
more, the personality values, in the Access file are not named according to the
values they contain – instead the personality table contains about 60 numeric
fields, that are named as v1, v2, v3 and so on, and their true meaning is only
recognized within the program, were specific numeric constants have been
assigned to each specific value.
At
present the program supports the following features:
There
are other features, which are interrelated to the above mentioned ones.
The
following is a list of some basic evaluations the program takes into account,
however please note that most of the following evaluations will be repeated or
further explained, in Chapter 5 and you will find many more types of
evaluations in the Personality Settings section of Chapter 5.
·
Capture Points à when a computer’s piece moves into a square
that is occupied by an opposing piece, the opposing piece is captured, and so
the value of the opposing piece is added to the total points of a given move.
1)
Center
4 - all three values will be added
2)
Squares
surrounding the center 4 – or in other words the middle of the board – will
accumulate two of the three values
1)
First
the lowest valued move is found
2)
Then
the highest valued move is found
3)
Then
a certain percentage (the value is determined by personality values and other
calculations based on it) of difference between the highest and lowest values,
is calculated and then added to the lowest value
4)
Then
all moves with points that exceed this ‘limit’ is set to this limit – whereby
allowing the random choosing of moves.
All
the values mentioned before are stored in an Access data file, and this file
may contain as many personalities as required. The users of the program may
create their own personalities to add to the ones that come with the program.
The names of the personalities that come with the program will have the
following prefix - ø. The users of the program
will not be allowed to make changes to the personalities that come with
program, but they may open the Access file, and set the Boolean
‘OriginalPersonality’ to false, which would allow them to make changes.
The minimal system requirements are as follows:
Even
though, the program will work with even lesser requirements, than what has been
stated above, the performance would be so bad that the program will be
virtually unusable. The nature of Visual Basic, and the graphical options
included has made the program quite bloated, which has led to higher
requirements.
The
following are requirements for optimal performance:
The following, screenshots and information, discuss about the various features and aspects about the program
OK/Cancel Buttons:
The following, are used throughout the program, instead of the typical, ‘OK’ and ‘Cancel’ buttons:
Menu
Options:
Ø New Game – start a new game, change players and player related options, and
choose the desired chess variant.
Continuation of the File menu:
Ø Load Game – This opens a form, where you may load a previously saved game.
Ø Save Game – This opens a form, where you may save a game, and load it later on.
Please note that saving, a game essentially means that it saves all information
pertaining to the current game, such as board position, the number moves made,
and other info about the game itself. However, it does not save information
about the current players. Therefore, if you were to save a game, played by a
given computer personality, and then load it later, you might find that the original
personality, with whom you were playing the game will not be loaded and instead
the current personality that has been chosen or assigned by default will be
playing the loaded game, so you will have to manually keep track of the
personality (probably in the description text box) that is playing the current
game. Further more, you may not save a game during self-play, or one-side play.
The actual definitions of ‘self-play’, ‘personalities’ and ‘one-side play’ may
be found in the following pages.
Ø Setup Board – You may setup different positions and add pieces based on the chess variant. This option will be further explained, on page 21.
Ø Create/Edit Personality – You may create new personalities (computer players)
or edit existing ones that did not come with the program, whereby, you are only
allowed to change user-created personalities only. This option, will also be
further discussed on page 26.
Ø About and
Exit are self-explanatory.
The following is the Options menu:
In
the following pages, you may find further information on options shown on the
menu above.
Ø Scroll Through Moves – This opens the following
window, which allows one to scroll through (backward or forward) all the moves
made in a given game. Please note that the move list is cleared, if Setup Board
(explained later) is chosen, or if a new game is started, or if a saved game is
loaded. When this option is chosen, all pieces are disabled and are all menu
options, and to return to normal functionality, please use the ‘X’ button on the
top-left corner of the window.
The slider may be moved with the mouse, or by using
the arrow keys for single-moves and Page Up and Page Down for
five-moves at a time. Other than the above mentioned information, all
information stated about taking back moves, and moving forward a taken back
move, applies to this.
Ø
Change Player – This allows you to change
the current personality (i.e. computer player), change colors (which will also
switch positions), and change player types such as ‘computer vs. computer’ or
‘human vs. computer’. The following form appears when this option is chosen.
Further information about this form is on page 24.
Please note that when you change the options ‘Who Plays White’, you will be
essentially switching positions with the computer.
Ø
Change Chess set & Board – As the name suggests, this allows
you to change the chess set and the board. It opens the following form, where
there are different chess sets and different boards available.
Ø
Enable No-Progress Draw – By default, this option
is enabled and by enabling it, the game will be considered a draw if a certain
number of moves have passed for each side, without a capture or pawn-move. Such
a situation is labeled as ‘no progress’ and so becomes a Draw. The ‘certain
number’ is as follows (please note that these number of moves should have been
taken for each side, before this rule is applied):
Board
Type |
Number
of moves for ‘No-Progress Draw’ |
4 X 8 |
25 |
5
X 6 |
23 |
8
X 8 |
50 |
10
X 8 |
62 |
10
X 10 |
78 |
12
X 8 |
75 |
14
X 8 |
87 |
16
X 8 |
100 |
16
X 12 |
150 |
16
X 16 |
200 |
Even though, the above covers most of the prominent
board types, the option ‘Empty Board’ (explained later), allows one to choose
any sized board (maximum is 16 x 16) so the following equation allows one to
calculated the ‘No-Progress Draw’ for any sized board:
Moves =
TotalRows x TotalCols x 0.78125
Please round of the above result to the lowest
integer.
Ø
Display Notation – This to display (or not
display), the letters and numbers on the bottom and the side of the board.
Ø
Display Player Info – opens a window, from which
one could learn, the name of the players, if they are human or computer players
and if the human player is in check. This window may be dragged by clicking and
holding the title bar with the left mouse button. By default this window is
enabled. Please note that when this window is dragged to the lower part of the
board, its size and orientation changes, so that is wider and may be placed on
the bottom for boards that are wider and may take up the whole width of the
screen.
Ø
Display Square Highlights – When the computer makes a
move, it usually does it within seconds, that the users tend to miss it, which
turn leads them to assume that the computer did not make a move at all.
Therefore, ‘Square Highlights’, highlights the source square and the target
square of the current move. By default this option is enabled.
Ø
Inform me, when I am in
check – By
enabling this option, a message will be displayed, each time your king is
placed in check. By default, this option is disabled – the assumption is that
you would know when you are in check.
Ø
I will skip a turn – As the name suggests, you
are skipping a turn, and allowing the computer to play.
Ø
Enable/Disable Self Play – Enables or Disables
Computer Play – that is Computer Player vs. Computer Player. Use F4 to enable
or disable this option During ‘self play’, the system might seem frozen, but in
actuality the program employs most of the available resources, so to stop ‘Self
Play’ use F4. – Note: if you use a very large board such as the 16X16 one, then
it might seem as though the computer has frozen, especially if you have a slow
processor – so remember F4 to stop ‘self
play’
Ø
One-Side Play – This a feature, just to have
fun. It is not a true playable feature, but it is really fun to watch.
Basically what it does is allows one side (that is the computer) to make moves,
while the other sits still. Therefore the computer just keeps capturing the
opposing pieces, and eventually checkmates the king and the opposing pieces do
not move at all!
Ø
Take back last move – This option allows you to
take back moves. Please note that certain game information, such as the number
of moves for no-progress draw, the number of moves made and the game stage
(such as open game, middle game or end game), are not properly updated or they
are reset (such as no-progress draw count is reset to zero), when a move is
taken back.
Ø Move forward last move – This option is only enabled
when a move is taken back (look at the previous menu option), and will move
forward a move that has been taken back. Please note that when a new move is
made, or when the last taken back move is moved forward, this option will be
disabled until the next take back. Whenever the move list is cleared, this
option will be automatically disabled, and the move list will be cleared when a
new game is started, a game is loaded or when a position is setup.
Ø
Evals – The following are the
sub-menu options available within Evals. The following options help to increase
speed by being disabled, and increase computer player strength by having them
enabled. Most of these features are enabled by default, but the last one is
not, when very large boards are chosen, since it is time-consuming (takes a
couple of seconds more and the computer may seem frozen), however it may be
enabled by the user. (Please note that the following features, influence the
Chess engine as a whole, and not based on the current personality)
Continuation of Evals:
ü
Enable Check for Checkmate
Threat –
This a feature, when disabled, will make the computer player (regardless of
personality), relatively week, and will make the speed of a move considerably
faster (less time is spent by computer). The disadvantage, to the computer
player, is that the program, will not know if it will be checkmated in the next
move, while the removal of this check will enhance the speed of play,
especially in slower machines. This feature is enabled by default
ü
Enable Check for Stalemate
Threat – The same as the above feature, except
that the issue here is stalemate. This feature is disabled by default, since a
stalemate is generally considered a draw, and so the program does need to waste
time in attempting to check for stalemates. Please note that this check will be
automatically disabled, when the ‘Enable Check For Checkmate Threat’ feature is
disabled, since this feature is interdependent on the other. Furthermore, when
enabled, this will, further slow down the play compared to enabling the
checkmate feature alone.
ü
Enable the Evaluation of
Other Pieces –
This is another feature to make the computer play faster, which would in turn
lead to poorer game play. When a given move is evaluated, a number of factors
are considered for the piece that is being moved. However, this feature (when
enabled), will allow the consideration of each and every piece (of the same
color), on the board to be evaluated, so as to determine their influence based
on the given move. Therefore this leads to a far stronger play, but at the same
time, it consumes significant resources, which in turn leads to a significantly
slower play, especially in slower computers. Anyhow, this feature is enabled by
default.
ü
Enable Added Eval – This is an added feature,
which is by default enabled for most boards, allows the computer to look into
the 3rd ply (or almost 3rd ply, since it looks into the 2nd
ply and sort of touches the 3rd), which in turn leads to certain
discoveries such as ‘forks’ or ‘pins’, that allow the computer to make better
moves, that would prevent situations where ‘forks’ or ‘pins’ are possible, and
generally standardizes the values of different moves. What this option,
actually does is to evaluate the opposing players next best move, and it’s
impact on the current position. Please note that this feature, when enabled,
significantly consumes processor cycles, and may not be appropriate for very
large boards. However, boards smaller than 16 x 16 are usually acceptable.
Ø
Board Setup Options – This option menu is Part
of the Setup Board mode, and will be further explained on the following pages.
Please note that this menu is only available during the ‘Setup Board mode’,
where you may setup the board position in any manner required.
Board Setup Mode (also know as Setup Board Mode):
The ‘Board Setup Options’ menu is only enabled when the ‘Setup Board’ option is chosen from the ‘File’ menu. Within the 'Board Setup Options' menu, you will find other options related to 'Setup Board'. Please note that 'Castling Options' within 'Board Setup Options' will be disabled, if castling does not apply to the chosen chess variant (castling will not apply to all boards that have lesser than 8 rows, and it also does not apply to boards that have an odd number of rows). Once, a position is accepted, most of the values, such as total moves count, no-progress count and move list (used for taking back moves), are all reset so no moves may be taken back before that point. Also note, that the type of pieces that will be visible on the ‘Setup Pieces’ window would depend on the chess variant, which will be set in the Access file (look at page 51 for further info).
Accept, Clear Board and Cancel - As the terms imply, they are used to accept the current position or cancel 'Setup Board Mode', or to clear the board. Please note, that the kings will never be removed from the board, nor will the user be allowed to remove them (however, if the chosen game is played without kings, then the kings by default will not be available). These options will only be available, when the 'Setup Board Mode', is chosen. If stationary-king game is chosen then the given king that is stationary will not be allowed to move. (for further info on stationary-kings, look at page 24).
During this operation, right-clicking a piece, except for
the king, will remove the piece from the board. Another piece may be place over
an existing piece, to replace the current piece in that square. However, this
will not work, when the square is occupied by the king, so the king will have
to be moved to another square, (if the king is not stationary) before the given
square is to be occupied by some other piece. Please note that the ‘Setup
Pieces’ window may be moved around, as required, but it may be done only by
clicking, and holding down the left mouse button on the title bar, and not on
any other part of the window.
Sub-Menus:
·
Whose turn is it
to Play? – This is self-explanatory, but please note that by default, White
will be selected, and once the given position is accepted, the player who is
white (computer or human), gets to make the first move.
New Game:
The following form appears when the ‘New Game’ option is chosen, and the following pages explain, as to what happens when the following options are clicked.
· Change the Board and Chess Variant – Allows the user to change the board and
chess variant, and the following is a screen shot of the form that appears when
this button is clicked:
Different chess variants are available, which may be chosen from the list box.
Further information is listed on the frame on the right. If the option Empty Board is chosen, then two scroll bars appear beside the Row and Col text boxes, which allows the user to choose the desired size of the board. Please note that the maximum size is a 16 x 16 board, and the minimum is 2 x 2 board. If the total rows on the board is an odd number, then castling will not be allowed The ‘Pawns may be promoted to’ text box contains info on the type of promotable pieces, and all the pieces allowed on the board. Please note if promotion is not allowed, then you will have to find out the pieces allowed on the board through ‘Board Setup Mode’ (look at page 21 for further info).
The ‘No King Game’, is a special feature, which may be applied to any of the variants, and allows both sides or one of the sides to play the game without a king. The objective of such a game would be to capture all the pieces of the side that doesn’t have a king. If the game ends in stalemate, that is the side without the king, has at least one piece, but the player doesn’t have any legal moves, then it is considered a draw. Please note that this is an experimental feature, and known to work properly under most conditions, but it hasn’t been tested as much as the normal king-based chess variants. Please note that some variants, are designed in such a way that they do not allow no-king games (such as ‘Maharaja and the Sepoys’ variant), and some do not allow kings at all (such
‘Narrow Chess’).
The ‘Stationary King Game’, is another special feature, where both the kings or one of the kings, are not allowed to move throughout the game. The objective of such a game is the same as normal chess, except that kings stay where they are and have no legal moves, so a simple check that may only be blocked by moving the king, will lead to a checkmate since the king may not move. When this option is chosen for a given side, the given side’s initial-king square is
replaced by the image on the left, to denote that the given king
may not move at all. Please note that this feature will be
automatically disabled if the given variant, by default is not
played with kings.
· Change Players – When this option is chosen, the following form appears:
Most of the options on the form (from the previous page) are self-explanatory except for one:
Use Random Players? - This option, when set to
true, makes the program choose a random player from all the available
personalities, when making each move. So, the play would be highly
unpredictable and the computer might choose questionable line of play. Please
note that, this option would not be as fun to play with, as it would be if
there were to be fifty or more personalities on file - and assuming that they
are significantly different from each other. The strength of play would depend
on each personality chosen for a given move.
The following screen shot, is another tab of the same form (from the previous page). The character ø is used before a personality’s name to denote that the personality is an original one. This means that it came with the program, and was not created by the user. This will be further explained, in one of the later parts of this report.
The ‘Index Of Player’, is automatically assigned by the Access database, and may not be changed by the user. The ‘Second Computer Player’ tab is identical to the first.
Please note that in self-play, the ‘Second Computer Player’ will always play white. So, you must assign, the desired personality to the second computer player, for white and the first computer player for black.
Personality Settings:
The following helps you create your own personalities, or edit existing ones (note: you will not be allowed to make changes to personalities that came with the program, unless you uncheck the ‘OriginalPersonality’ flag in the Access file):
The following is the primary tab that is displayed when this form is loaded.
This tab contains the general non-value related personality information, and you may enter such information, on this tab as well. The rectangular box on the right, is the ‘Picture box’, which is explained in the following pages
Personality Tabs:
·
Name and Description
Ø
Index Of Player – automatically assigned by
the data file, and cannot be changed.
Ø
Name Of Player – The
is the name of
the player and when a new player is chosen, the name ‘Computer Player’ and the ‘Index Of Player’ is assigned. However,
you may change it to any other name you want.
Ø
Description of Player – Enter information about the
player and you might also want to make a false profile, so as to make the
personality seem ‘Human-like’.
Ø
Picture box – Double click on the Image
box, to change the picture. Please note that the image file should be 276 x
350 pixels, or any size that uses this
proportional value. However, if you were to use a smaller or larger image, or
one that does not hold the same proportional value, then the image will be
stretched, so it would seem disproportionate. Also, keep in mind, that the
image file should be bitmap, jpeg or gif. If the file you chose were to be
located within the ‘images’ directory, that is located within the directory
containing the executables of this program, the file name will be saved in such
manner that would allow one to move all the program files, to another
directory, without effecting the location of the file. This means, that you may
place the files there, and then redistribute a version of the program, with
your custom-made personalities, and the program would know the location of the
images, based on the location of the executables.
·
Computer’s Pieces – Set the values of each
piece (the king’s value is used to determine, the amount of protection that
should be offered to the king by the other pieces. Other than that, these
values are the primary values, based on which other values are added, subtracted,
multiplied or divided.
·
Opponent’s Pieces – Same as the previous tab,
except that these points determine, how a given personality values the
opponent’s pieces. Here, the king’s value is used to determine, how important
is it to place the opposing king in check. Note: this will not influence
checkmates, it is just used to determine, how obsessed the personality will be,
with the opposing king. Other than that, these values are also part of the
primary values, based on which other values are added, subtracted, multiplied
or divided.
This tab contains values related specifically to pawns:
·
Pawn related Values
Ø Importance of encouraging pawn moves in the Opening Game: This primarily applies to chess variants, where
different pieces have Knight-moves. In these versions of chess, the program
usually prefers to use those pieces, since they may come to the center of the
board within the first few moves. However, the program, fails to see that, pawn
structure is quite important in the opening game, so pawn-movement is quite
important. Tweak this value based on the type of chessboard, you plan use your
personality with, since this value is based on the board-size.
Ø Pawn move-encouragement should last till…. - This applies to the value
mentioned in the previous page. As the name suggests, it determines, as to the
number moves, during the opening game, the value, mentioned previously should
be applied. Please note that, Pawn encouragement is disabled once you choose
‘Setup Board’ in the ‘File’ menu, and it is only enabled when you start a new
game. Also note, that it is highly unpredictable, as to what extent
pawn-move-encouragement will be applied, when ‘Random Players’ are chosen.
Ø Value of Pawn during the End Game – This percentage is used to increase the value
of pawns in the end game, due to the obvious reason that pawns may promote to
any piece, when they reach the last rank.
Ø Importance of encouraging pawn moves in the End Game – This is used for the same
reason as the value mentioned on the top of this page. Please note that, unlike
the Opening-game version of this value, this one does not end in a certain
number of moves – so it lasts all the time, during end games.
Ø Added Incentive for Pawn Promotion – Added when a pawn is placed in the last rank.
Ø Importance of Capturing an unprotected passed pawn – applies to capturing
unprotected pawns that are on the second or third-last row, so as to prevent
promotion.
Ø Incentive to prevent pawns on the same file to move during opening
game- Since,
the program does not have any opening-books*,
it has a to capture opposing pawns, at the expense, of having more than one
pawn, on the same file. Therefore, this rule makes it less likely, at least
until the game reaches the middle game. From there onwards, this rule should
not apply since, the needs for pawn-based-captures may change. Please note,
that this value should not be set too high, since minor pieces such as knights
and bishops, may not be captured if given the opportunity in the opening game.
Ø Incentive to prevent pawns on the ends to move during opening game- Since, the program does not
have any opening-books, it has a tendency to move the pawns at the end, so this
rule makes it less likely to do so, until the middle game.
The following tab contains King related values,
however please not that there is another tab ( ‘King Squares’), which also
contains King related values:
Ø
Preference of king not to
move during a check – if you don’t set an acceptable percentage for this value, the
personality would consider moving the king during a check, as being more or
less, the same as blocking the check with a minor piece. However, if you set it
too high, then the personality might even sacrifice it’s queen to block a check
or capture the checking piece.
Ø
Importance of Placing Checks
on the Opposing King – By setting this value to the lowest possible number, the personality
will not consider placing the opposing king in check as being important. On the
other hand, if the value is too high, the personality would be very obsessed
with the opposing king, that it will place useless checks that would lead to
the loss of it’s own pieces.
Ø
Importance of supporting the
King – Same
as the ‘Support Points’, but this applies to the king. If it is too less, the
personality doesn’t care about the king, except when he is in check, since the
king is legally not allowed to place himself in check. However, on the other
hand, if it is too high, then the personality would be too obsessed with the king
and make questionable moves.
Ø
Added Incentive for
King-Side and
Queen-Side Castling – This is
self-explanatory – well if you set it too low, the personality would not care
about castling, unless the position is very stable, and all possible moves, are
more or less equal in value. On the other hand, by setting it too high, the
personality might choose castling (that is when it is available for the first
time), at the expense of some other important move.
Ø
Incentive to prevent moves
that would lead to a check – This helps to prevent
moves, that would allow the opposing player to place the king in check, in his
or her next move. The reason for this is that the program, only has the
capacity to discover mate in one*, so this
feature helps to reduce the opportunity to checkmate the king in two or more
consecutive check-moves, by not allowing the king to be in check in the first
place. Please note that all checks are not truly bad, unless they lead to a
checkmate, and preventing a check does not guarantee a prevention of mate in
two or three – it only guarantees that a checkmate will not be made by placing
consecutive checks. Therefore, since this value is not
to be considered paramount, it may be set significantly lower, and setting it
too high will make the program choose a move that would merely prevent an
unthreatening check, at the expense of making a move that would lead to a
better position.
Ø
Incentive to prevent moves
that would lead to a check in the End Game –
This is the same as the above-mentioned value, except that this is specifically used in the End Game.
Ø
King Not-To-Move related
issues – These values are applied during different points in
the game (Opening-game, middle-game and end-game), which makes sure that the
king is not moved, in quiet positions (which essentially means, positions where
the king is not in check, and when the king does not have the opportunity to
capture an opposing piece). The computer has a tendency to make unwanted
king-moves, during stable positions, since moving the other pieces off their
current squares will lead to a far inferior position, than the current one.
However, moving the king, especially in the opening game is very dangerous, and
will also prevent castling, and in some of the tests I performed, I found that
the computer brought the king into the middle of the board, during the opening
game, for no apparent reason, except that the other moves were not good enough.
Therefore, to prevent this situation, these values tie the king to his square
(except for captures, checks and for castling), and their influence should be a
lot lesser in the middle game, and a lot more lesser in the end game, where
kings are required to move.
The following, contain information on the
Miscellaneous tabs. Please note that there is nothing ‘miscellaneous’ about these values
– they are just as important as the others, but they could not be nicely
categorized as the others.
Ø
Importance of Centering – This value is accumulated
with the points for the ‘Center 4 squares’ and ‘Squares surrounding the Center
4’.
Ø
Importance of the Center 4
Squares – These
are the central, four squares on the board, and so they are the most important
part of the board. When points are added for the ‘Center 4 Squares’ the points
of ‘Centering’ and ‘Squares surrounding the Center 4’ are accumulated, so keep
in mind that the values you set for the other two are added to this. This value
is used, when a piece has access to the specific square. Please note, that the
‘Center 4 Squares’, is most prominent on the 8 x 8 board, and becomes less
important as the board gets bigger, especially the 16 x 16 board. Hence, this
value was included, primarily for the 8 x 8 board, so it will not influence
other boards as much.
Ø
Importance of the Squares
Surrounding the Center 4 – These are points used for the squares surrounding the ‘Center 4
Squares’. This value is accumulated with the value of ‘Centering’, which is
added to the Total-Points, each time a piece covers a square that lies within this
area. The same rule applies here, as it has been stated in the previous value –
this value has been designed to work best with 8 x 8 boards, and as the boards
get bigger, this value looses it’s prominence.
Ø
Percent of Board’s Value to
Determine End Game – At the beginning of new game, a value is calculated based on the number
of pieces on the board, and on the value of those pieces. During the game,
after each move is made, the current board’s value is recalculated and compared
with the original value multiplied by the ‘Board’s Value to Determine End
Game’. Therefore, this helps to approximately determine, when the end game has
been reached, and when the end game related values should start working. So, if
you set the wrong value here, then the program might misinterpret a given
position as being the end game, when in fact it is not, or the opposite might
occur, where the end game would have been reached but the program would not
know. Anyhow, I tried a few values, and found that 40%, works well for all boards
and all chess variants, however you might want to experiment with it – probably
you might find something better.
Ø
Points for each Square a
piece covers – This value is added to the Total Points, for each square a piece has
access to. This value is in actuality, added in terms of points, and not in
terms of a percent, however, I decided to display it as a percentage and then
convert it to the required form. It just looks better when one sees things in
the form a percentage, and it is easier to understand.
Ø
Importance of Supporting a
given piece – set
it too high, and the computer would play a highly defensive game, and set it
too low, and you would have a very open board.
Ø
Importance of the Possible
Capture of a piece – ‘Possible capture’ means, that the computer’s piece has access to a
square occupied by an opposing piece, however, please note, that in the next
move, the opponent may move that piece – so it’s called a ‘Possible Capture’.
By setting it too high, the computer would make questionable moves that would
merely attack an opposing piece (except the opposing king which is determined
by ‘Importance of Placing Checks on the Opposing King’), at the expense of
loosing it’s own pieces. On the other hand by setting it too low, the computer
would not care about attacking the opposing player at all and would generally
play a very defensive game. Therefore, this value and the one above are
generally used to determine the ‘Defensive’ and ‘Attacking’ characteristics of
a given personality.
Ø
Importance of Supporting a
given piece in the End Game – same as ‘Supporting a given piece’ except that
this value only applies to the End Game.
Ø
Importance of capturing an
unprotected Piece – same as ‘Possible Capture of a piece’, except that this only applies to
pieces that are not supported by other pieces. Please note, that setting this
value too high, is not beneficial to the personality, due to the fact that the
program might consider capturing a mere unprotected pawn, as being the most
important move, compared to another move that might lead to a better position.
Ø
Randomness of Play – By increasing this value,
you will weaken play, but will also add some diversity in play. Setting this to
about 5% works well but any more is questionable – try experimenting with it.
Ø
Incentive for an Actual
Capture of an Opposing Piece – Later, into the development of the game, I found an
issue where the computer chose not to capture a protected queen with
it’s knight, when given the opportunity. This is due to all the different
evaluations the chess engine takes into account, which led it to believe that
mobility and the control of the center are more important issues compared to
capturing a protected queen and loosing the knight (however this would not be
an issue if the queen were to be unprotected). This mainly applies to the
opening game and middle game where there are more pieces compared to the end
game where capturing is straightforward. This problem may be resolved by either
increasing the Queen’s value or be reducing the knight’s. However, that would
negatively influence the other evaluations, which are based upon these values.
Therefore, this value helps to resolve this issue without changing the primary
piece values. When an actual capture is made, the prominence of the capture is
increased by using the percentage specified in this value.
Ø
Percent of Board’s Value to
Determine Middle Game – This is same as the End Game value (please refer to the previous pages
for info on the End Game value), except that this is used to identify the
middle game. Please note that unlike the End Game, where material value is used
to determine the end game, in the Middle Game the number of moves, since the
opening game is used to determine when the game has reached the middle game.
Therefore, if moves were to be taken back, or a position were to be setup, then
the chess engine will not be able to properly identify the middle game, so what
ever point the prior board position was in (opening, middle or ending), is left
as it is except for material value that is used to determine the end game.
Please
note that, in the following values, the ‘Added Eval’ option (found in the
‘Evals’ sub-menu, which is found within the ‘Options’ menu), is actually the
evaluation of the opposing player’s next best move, and the impact that move
will have on the current position. Therefore, any references made to evaluating
the opposing players move or to evaluating the 3rd ply is an
reference to ‘Added Eval’.
Ø Importance of preventing the Queen from moving in the Opening game – The computer has a
tendency to bring the queen out, early into the game, so this value prevents it
in the opening game. Please note that this usually applies to FIDE Chess, since
other chess variants have other prominent pieces, so the Queen isn’t the
strongest piece. However, you may change the different options in the Access
file (for further info on this, look at page 51), and make other variants
recognize this value.
Ø
Incentive to prevent a BAD
loss – When
working, with unprotected minor pieces (i.e. Knights and Bishops) or with any
other type of piece, the computer has a tendency to ignore a capture of the
given piece by another opposing minor piece (usually a piece of equal
strength), and may choose to make a move that will serve the needs of mobility
and control of the center. Even though, points are deducted for the loss of a
piece, other evaluations coupled with the possible capture of the attacking
piece, skews the values of the different moves and leaves an unprotected piece
to be captured by another. Therefore, this prevents a ‘BAD loss’, which
essentially is loosing a piece for no apparent reason.
Ø
Added incentive if a given
piece is supported by more than one piece – Even though, a piece is protected, the
computer has the tendency to move it off it’s square if attacked. This mainly
applies to major pieces, such as the Queen, Chancellor, Archbishop or Empress.
If the piece is being supported (or protected) by another minor or major piece,
and it is being attacked by an equally valued piece, then the attack is not to
be considered a serious one. Nevertheless, under certain circumstances the
computer moves it’s queen away from the square in fear of loosing it’s queen
and even though the opposing player would also loose his/her queen. Therefore,
if a piece is being supported by more than one piece, then it is in a lot
stronger position, than one being supported by one piece, when attacked by an
equally valued piece. Hence, this value gives an added incentive for such a
move.
Ø
Incentive for an actual
capture in when evaluating the impact of the opposing player’s best move – This is the same as the
value ‘Incentive for an actual capture’, except that this applies to the
specific scenario as stated by the name of this value. The reason that this is
separate from it’s counterpart, is that in ‘Incentive for an actual capture’,
the capture is true in nature, while in this case it is not ‘truly’ actual, but
is more virtual in nature.
Ø
Incentive to prevent exceptionally good moves from going through the added
eval, since the added eval is best applied to quiet positions, where there are
no exceptional moves – The name of this value is self-explanatory.
This value puts the points in perspective, during
the evaluation of the Added Eval, when a given piece (usually prominent) is
captured. Therefore this value is in essence, a version of ‘Actual Capture
Points’, but used for a special purpose.
Please note, that this might seem similar to the actual capture value used for ‘Added Eval’ (explained in the previous page), however this value is unique and further explanation of it’s nature is not an easy task, unless one actually understands the coding behind it.
·
King Squares – These are a set of values
that essentially apply to protecting the king. Unlike, normal protection
values, which primarily apply to having access to the squares occupied by the
computer’s own king and by the opposing king, these values apply to influencing
the squares surrounding the kings. These values, when properly set, allows the
computer to get to better positions, that would in turn lead to checkmates,
especially in the end-game, since the computer would spend more time in
covering the squares around the opposing king, rather than just placing checks
on the king. However, please note that when these values are set to high, the
computer will become obsessed with the opposing king, and may make questionable
moves, and in the end-game, if the opposing player just has the king, and no
other pieces, then a high value may lead to a stalemate.
Chapter 6: Information on the Different Variants
I
have attached information, which I have downloaded from the ChessVariants page
(http://www.chessvariantscom).
However, there are few differences and limitations, in the different versions,
which I shall state here:
The
FIDE version of Chess (this is standard chess, also known as OrthoChess):
The
above rules apply to the rest of variants except for a few:
Ø
King-Side
– Move the King to the second-last column, on the first rank – that is next to
the King-side Rook. Then the Rook will be moved to third-last column, on the
first rank.
Ø
Queen-Side
– Move the King to the second column, on the first rank – that is next to the
Queen-side Rook. Then the Rook will be moved to third column, on the first
rank.
Board
Type |
Number
Of Pawn Moves a pawn may make, when on the second rank |
4 X 8 |
1
to 2 |
5
X 6 |
1
only |
8
X 8 |
1
to 2 |
10
X 8 |
1
to 2 |
10
X 10 (Other
Variants) |
1
to 3 |
10
X 10 (Grand Chess) |
1
to 2 à
start from the third rank |
12
X 8 |
1
to 2 |
14
X 8 |
1
to 2 |
16
X 8 |
1
to 2 |
16
X 12 |
1
to 4 |
16
X 16 |
1
to 6 |
Please note that the above feature is not available
if the number of columns is less than 8, and where the
‘more-than-one-pawn-move’ starts depends on the variant (it is actually set in
the Access file – look at page 51 for further info), for example in Grand
Chess, it does not start on the usual second rank but on the third rank.
Chess Variant |
Pieces |
Maharaja and the Sepoys |
|
FIDE
Chess |
|
Demi
Chess |
|
Double
Chess |
|
Petty
Chess |
|
Chess
– Speed Game |
|
Grand
Chess |
|
Capablanca/Gothic
Chess |
|
Eric’s
Great Chess |
|
Capablanca
Pieces and Amazon/Empress Piece |
|
Empty
Board |
Chapter 7: Defects of the
program and other issues
There are a few defects, which would allow even a relatively weak player to take advantage of the program and the following are such defects and other related issues.
Chapter 8: Working with The Access File
This chapter, will discuss as to how you may make changes in the Access database (Players.mdb located within the local directory of the game) to add/remove Chess Sets, Chess Boards and create new chess variants. Please note that if you use Access 2000 (or later), that you should not convert the database to the newer version, since the data control that I have used in Visual Basic only supports Access 97.
The
following is a list of tables available and a brief description about them:
·
BoardPositions – contains info about the
different variants, and new variants should be added to this table.
·
ChessBoards – contains info on the
different chess boards, however the images are stored separately in the
directory /Boards located within the
directory that contains the executables
·
ChessSet - contains info on the
different chess sets, however the images are stored separately in the directory
/ChessSets located within the
directory that contains the executables
·
Players – contains info on the
different personalities, and the actual values that determine a given
personality. This table should not
be manually modified, since the entered data on Personality form is formatted
before being stored in this table. Hence, to create personalities, you will
have to use the Personality form (for further info this form, look at page 26).
·
SaveGames – This table contains the
save-games. Please note that this table should not be manually altered since,
that data is to some extent formatted before being placed in this table.
However, to create new variants, you have to save the given position and copy
the ‘position string’ from this table to the BoardPosition table
(this will be further explained on the following pages).
ChessBoards:
This is the easiest to create. The
following is the list fields within the table:
ü ID
ü Name
ü Description
ü DisplayBorder
ü TopBorderID
ü BottomBorderID
ü LeftBorderID
ü RightBorderID
ü TopLeftCornerID
ü TopRightCornerID
ü BottomLeftCornerID
ü BottomRightCornerID
ü LetterAndNumberColor
ü BackColor
The
ID is not generated automatically,
since the program requires the ID to
be sequential (starting at 1). Therefore, when you are to add a new ChessBoard, you will have to add it
sequentially and Access by default will assign 0, but you should reassign it to
a non-zero number that is sequential with the existing IDs. Please note, that if ChessBoards are to be deleted then
the last board that was added should be deleted first, since the IDs
have to be sequential.
The
Name and Description are self-explanatory, but note that they should not
be left null, so there should be at least a ‘space’ character.
DisplayBorder is a boolean field and if it were to
be set to false then the rest of the fields (except the color fields), need not be filled. The ‘border’ and ‘corner’ fields are used for
the border around the ChessBoard.
Different ChessBoards may use the same ‘border’ and ‘corner’ fields and may
even mix-and-match different borders. By default, there are two sets of border
images, one for the wooden board and
the other for the ocean board. Please note that the ID of ‘border’
and ‘corner’ fields should match with the actual names of the images. For
example in the file name ‘LeftBorder1.bmp’, the ‘1’ is the ID. To create
new borders and corners, one should follow the following naming convention,
where X is the ID:
As
for creating the images themselves, you may use products such as Adobe
Photoshop. Ideally the squares should be uniform in color due to the fact
that, when the board gets larger and the squares get smaller, the square images
are not resized, instead only a part of the image is used. If you choose to
create squares that are unique, in that they have specific designs on them,
then you should only use them for specific boards and preferably set the size
of the squares based on the variant you wish to use them with (look at Page 52
for further info on setting the size). For example, for the typical 8 x 8
board, the size should be about 50 by 50 pixels. To calculate the
required size, please use the following equation:
Height in pixels = Height of
Square / 15
Width in pixels = Width of Square / 15
The
width and height of the squares are internally assigned, or may be set by the
user in the BoardPosition table that will be further explained in the
following pages. Please note that the Height and Width of the Squares are
measured in twips and not in pixels, and fifteen times one pixel
equals to one twip. The following are the filename conventions
you should follow for the white and black squares (X is the ID):
If
you wish to create uniform squares, with even colors then all squares may be of
the size 60 by 60 or 50 by 50 pixels, and may be used for any sized
board.
All
the chessboard-related images (borders, corners and squares) should be placed
within the directory ‘Board’ that is located within the program’s directory.
Usually it is the following directory: ‘c:\Program Files\Maniac\Board’. The
file type may only be bmp.
ChessSet:
This table contains the following fields:
ü ID
ü Name
ü Description
Basically, all rules that apply to the table ChessBoards regarding the above mentioned three fields, also apply to ChessSet. The ID is not automatically generated, and it should be a sequential non-zero numeral. As for the images and icons, they should comply with the following naming conventions:
· Images (this is the actual chess piece): CS[ID]P[1 – 19].gif
· Icons (this is the icon used for the mouse pointer): CS[ID]I[1 – 19].ico
For example, a chess-set with an ID of 1 and the chess piece being 3, will have the file name ‘CS1P3.gif’ and the icon file would be ‘CS1I3.ico’. Please note that the image files should be gif files and for the best appearance you should make the image’s background transparent and set the size to about 50 by 50 pixels. The icons should be a typical icon file – a 32 x 32 pixled 16-color image. The chess piece numbers range from 1 to 19, and the following list specifies each one according to it’s numerical assignment, such as the Black Queen has been assigned the number 13.
1. White Pawn
2. White Knight
3. White Bishop
4. White Rook
5. White Queen
6. White ArchBishop
7. White Chancellor
8. White Empress
9. Black Pawn
10. Black Knight
11. Black Bishop
12. Black Rook
13. Black Queen
14. Black ArchBishop
15. Black Chancellor
16. Black Empress
17. Black King
18. Maharaja
19. White King
Therefore,
based on the above list you may create images and name them according to the above-mentioned
naming conventions.
All
the chess-set-related images (gif and ico) should be placed within the
directory ‘ChessSets’ that is located within the program’s directory. Usually
it is the following directory: ‘c:\Program Files\Maniac\ChessSets’.
BoardPositions:
This is where new variants may be added and the following is the list of fields within this table:
ü ID
ü Name
ü Position
ü Castling
ü MoreThanOnePawnMove
ü PawnPromotion
ü ExtraPawnMoveStartRow
ü QueenNotToMoveAtStart
ü TypeOfPromotion
ü Rows
ü Cols
ü Description
ü NoKingGameAllowed
ü NormalKingGameAllowed
ü StationaryKingGameAllowed
ü SetPhysicalPosition
ü Height
ü Width
ü Left
ü Top
The adding process has one very important aspect, which requires the assistance of the program itself, and the SaveGames table. To create a new variant a starting position is required, which should be acquired by setting up a position and saving the game. Please note that there should not be more than 84 pieces on the board, for the position to be used as a new variant. Once the game has been saved, you will have to access the table SaveGames through Access and copy the whole P1 field of the last game saved. Please note that one should not delete the first dummy record in the SaveGames table, which is required by the program. Now, go back to BoardPostions table and create a new record Then paste the string into the field Position. Please make sure that all fields are filled (they should not be null).
Further information about the different fields are as follows:
· Castling – A boolean field, when checked means that castling is allowed
· MoreThanOnePawnMove – A boolean field, when checked means that more than one pawn move is allowed, for the first move of a given pawn
· PawnPromotion – A boolean field, when checked means that pawn promotion is allowed
· ExtraPawnMoveStartRow – If MoreThanOnePawnMove field is checked, then this field will be taken into account. This field states, which is the starting rank of a pawn that may be allowed to make more than one move. Usually the start rank is 2. Please note that even if MoreThanOnePawnMove is not checked, this field should not be null.
· QueenNotToMoveAtStart – This is a feature, that is usually applied to FIDE chess alone. Basically when this is field is checked, queen moves in the opening game will become highly unlikely. Please refer to page 37 for further info on this feature.
· TypeOfPromotion – If PawnPromotion is checked, then this field will provide the info as to the type of pieces a pawn may promote to. Please note that this value, just like ExtraPawnMoveStartRow must not be null even though PawnPromotion might be false, since this field is also used to determine the type of pieces that may be placed on the board during Board Setup Mode (look at page 21). The following list of numerical values list the type of promotion allowed (and the type of pieces allowed on the board), and please note that you should only use, one of the following in this field and do not leave it with it’s default value of zero
Ø 1 – Bishops and Knights
Ø 2 – Bishops, Knights and Rooks
Ø 3 – Bishops, Knights, Rooks and Queens
Ø 4 – Bishops, Knights, Rooks, Queens, ArchBishop and Chancellor
Ø 5 – Bishops, Knights, Rooks, Queens, ArchBishop, Chancellor and Empress
· Rows – Number of Rows
· Cols – Number of Columns
· Description – info about the variant
· NoKingGameAllowed – A boolean field, that determines if the given variant may be played without kings (for further info refer to page 24).
· NormalKingGameAllowed – A boolean field, that determines if the given variant may be played with kings. If not then the game is automatically a variant that will be played without kings. Please note that even if this option is unchecked, which means by default the game will be played without kings, the kings will be present if they are included in the BoardPosition, and so this boolean only enables the option to play a king-less game, but does not remove the king from the board (for further info refer to page 24).
· StationaryKingGameAllowed – A boolean field, when checked allows the variant to be played with Stationary Kings (further info is on Page 24).
· SetPhysicalPosition – A boolean field, when set to true will load the last four fields, which are the following ones, otherwise the following may be left null:
Ø Height – The height of the Square
Ø Width – The Width of the Square
Ø Left – The distance the first Square should be from the left of the screen
Ø Top – The distance the first Square should be from the top of the screen
Once the above is determined, either by defining in the above-mentioned fields, or by disabling SetPhysicalPosition, whereby the program will assign appropriate values to these fields, a given square’s size and location will be determined. Then the number of squares will depend on the Cols and Rows fields. Please keep in mind, that if SetPhysicalPosition is unchecked then the above-mentioned fields may be left null, and also note that the program has capacity to determine the best size of a given board based on the number of Cols and Rows for the resolution of 800 x 600. Please note that the above-mentioned values are not measured by pixels but by twips and as stated before, fifteen pixels equals to one twip.
Appendix A: Piece Designations
Wooden Chess Set |
Simpson Set |
Typical Set |
Name of the Piece |
|||
White |
Black |
White |
Black |
White |
Black |
King |
|
|
|
|
|
|
|
|
|
|
|
Pawn |
||
|
|
|
|
|
|
Knight |
|
|
|
|
|
|
Bishop |
|
|
|
|
|
|
Rook/Castle |
|
|
|
|
|
|
Queen |
|
|
|
|
|
|
ArchBishop/Cardinal |
|
|
|
|
|
|
Chancellor/ Marshall |
|
|
|
|
|
|
Amazon/Empress |
None |
|
None |
|
None |
|
Maharaja |
Further Piece Designations:
Modern Set* |
Pictorial Set |
Chinese Set |
Name of the Piece |
|||
White |
Black |
White |
Black |
White |
Black |
King |
|
|
|
|
|
|
|
|
|
|
|
Pawn |
||
|
|
|
|
|
|
Knight |
|
|
|
|
|
|
Bishop |
|
|
|
|
|
|
Rook/Castle |
|
|
|
|
|
|
Queen |
|
|
|
|
|
|
ArchBishop/Cardinal |
|
|
|
|
|
|
Chancellor/ Marshall |
Amazon/Empress |
||||||
None |
|
None |
|
None |
|
Maharaja |
Appendix B: Ideal Personality Values
The
following table alphabetically lists the value names and the values that are
considered to be the most ideal for creating a stable personality, and the
following values are the exact values used by the default personality Norm.
Name of Value |
Value |
Added
Incentive For King-Side Castling |
50.00% |
Added
Incentive for Pawn Promotion |
20.00% |
Added
Incentive For Queen-Side Castling |
35.00% |
Added
Incentive, if a given piece is supported by more than one piece |
50.00% |
Computer's
ArchBishop |
15.00 |
Computer's
Bishop |
5.00 |
Computer's
Chancellor |
14.00 |
Computer's
Empress |
16.00 |
Computer's
King |
16.00 |
Computer's
Knight |
5.00 |
Computer's
Pawn |
1.50 |
Computer's
Queen |
14.00 |
Computer's
Rook |
8.00 |
Empty
Squares |
65.00% |
Empty
Squares |
25.00% |
End
Game (King Squares) |
90.00% |
EndGame
(King related Values) |
15.00% |
Importance
of capturing an unprotected passed pawn |
40.00% |
Importance
of Capturing an UnProtected Piece |
30.00% |
Importance
of Centering |
36.00% |
Importance
of encouragining pawn moves in the End Game |
41.00% |
Importance
of encouragining pawn moves in the Opening Game |
40.00% |
Importance
Of Placing checks on the Opposing King |
35.00% |
Importance
Of Placing checks on the Opposing King in the End Game |
45.00% |
Importance
of preventing the Queen from moving, during the Opening Game (does not apply
to all variants, and usually it only applies to FIDE chess) |
47.00% |
Importance
of Supporting a given piece |
30.00% |
Importance
of Supporting a given piece in the End Game |
30.00% |
Importance
of supporting the King |
20.00% |
Importance
Of the Center 4 squares |
37.00% |
Importance
of the Possible Capture of a piece |
38.00% |
Importance
of the Squares Surrounding the Center 4 |
37.00% |
Incentive
for an Actual Capture of an opposing piece |
20.00% |
Incentive
for an actual capture when evaluating the impact of the opposing player's
best move |
20.00% |
Incentive
to attack/prevent pawns about to be promoted |
23.00% |
Name of Value |
Value |
Incentive
To Prevent a BAD Loss of a piece |
35.00% |
Incentive
To Prevent a BAD Loss of a piece when evaluating the impact of the opposing
player's best move |
70.00% |
Incentive
To Prevent exceptionally good moves from going through the added eval, since
the added eval is best applied to quiet postions, where there are no
exceptional moves |
90.00% |
Incentive
to prevent moves, that would lead to a check |
24.00% |
Incentive
to prevent moves, that would lead to a check in the End Game |
26.00% |
Incentive
To Prevent Pawns on the Ends to move during the Opening Game |
35.00% |
Incentive
To Prevent Pawns on The Same File In The Opening Game |
50.00% |
Middle
Game (King related Values) |
85.00% |
Middle
Game (King Squares) |
36.00% |
Opening
Game (King related Values) |
100.00% |
Opening
Game (King Squares) |
11.00% |
Opponent's
ArchBishop |
15.50 |
Opponent's
Bishop |
5.50 |
Opponent's
Chancellor |
14.50 |
Opponent's
Empress |
16.50 |
Opponent's
Knight |
5.50 |
Opponent's
Pawn |
2.00 |
Opponent's
Queen |
14.50 |
Opponent's
Rook |
8.50 |
Opponents's
King |
16.50 |
Pawn
move-encouragement should last until a certain number of pawn moves(depends
on the size of the board) |
2 |
Percent
Of Board Value To Determine The Middle Game |
31.00% |
Percent
Of Board's Value to Determine End Game |
40.00% |
Points
For Each Empty Square a Piece Covers |
50.00% |
Preference
of the King not to move during a Check |
50.00% |
Randomness
of Play |
0.00% |
Squares
Occupied by Opp (opp to the Opp King) Piece |
50.00% |
Squares
Occupied by Opp Piece |
45.00% |
Squares
Occupied by Own (own to the Opp King) Piece |
45.00% |
Squares
Occupied by Own Piece |
25.00% |
This
value puts the points in prespective, during the evaluation of the Added
Eval, when a given piece (usually prominent) is captured. Therefore this
value is in essence, a version of 'Actual Capture Points', but used for a
special purpose. |
35.00% |
Value
of Pawns during the End Game |
2.50 |
Index
50-Move, 42
Abstract Theories, 2
Access, 1, 3, 5, 6, 8, 22,
26, 27, 35, 36, 38, 41, 43, 47, 48, 51
Account, 5, 7, 37, 52
Actual Capture Points, 40
Added Eval, 20, 38, 39, 40,
45, 46
Adobe, 49
Algorithms, 2
Alpha-Beta Pruning, 2
Anonymous, 2
Archbishop, 3, 6, 39, 44,
50, 52, 54, 55, 56
Attached, 42
Attack, 36, 39, 56
Attacking, 3, 7, 36, 39
Authors, 2
Automatically, 19, 20, 25,
26, 28, 48, 50, 52
Background, 46, 50
Backward, 4, 13
Bad Loss, 39
Basic, 2, 5, 6, 46
Bigger, 35, 36
Bishop(s), 2, 3, 32, 39, 44,
50, 52, 54, 55, 56
Black, 26, 44, 49, 50, 54,
55
Board(s), 2, 3, 4, 6, 11,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 31, 34, 35, 36, 37, 43, 44, 45, 47, 48,
49, 51, 52, 53
Board Setup Options, 21, 22
Boardposition, 47, 49, 52
Boolean, 8, 48, 52, 53
Border(s), 48, 49
Calculate(d), 7, 16, 36, 45,
49
Calculations, 7
Cancel, 10, 22
Capability, 4, 46
Capture(d), 2, 4, 5, 6, 7,
16, 25, 32, 33, 34, 36, 37, 39, 40
39, 40, 45, 56
Capture Points, 5, 6
Capturing, 3, 6, 18, 32, 37,
56
Castling, 6, 22, 23, 24, 34,
42, 43, 44, 51, 52, 56
Center, 6, 31, 35, 36, 37,
39, 56
Center 4 Squares, 35, 36, 56
Center Points, 6
Centering, 6, 35, 36, 56
Central, 6, 35
Chancellor, 3, 6, 39, 44,
50, 52, 54, 55, 56
Check, 2, 5, 7, 17, 18, 20,
25, 30, 33, 34, 45
Checked, 52
Checking, 3, 33
Checkmate(s), 2, 6, 19, 20,
25, 32, 34, 36, 37, 41, 56
Checkmated, 20
Checks, 3, 33, 34, 36, 41,
56
Chess, 2, 3, 4, 6, 10, 11,
15, 19, 22, 23, 24, 25, 31, 36, 37, 38, 42, 43, 44, 45, 46, 47, 50, 51, 52, 54,
56
Chess Engine, 19, 37
Chessboard(s), 2, 31, 47,
48, 49, 50
Chessset(s), 47, 50, 51
Chessvariants, 2, 42
Code, 2, 59
Color(s), 9, 14, 20, 44, 48,
49, 50
Cols, 51, 52, 53
Combination, 3
Combo, 3
Complex, 2, 46
Components, 6, 46
Computer(s), 2, 5, 6, 7, 11,
14, 17, 18, 19, 20, 23, 26, 28, 29, 34, 36, 37, 38, 39, 41, 45, 56
Computer Piece, 5
Computer Player, 11, 14, 17,
18, 19, 20, 26, 28
Computer Vs. Computer, 14
Constants, 3
Convert, 3, 36, 47
Corner, 13, 48, 49
Crafty, 2
Database, 26, 47
Data-File, 3
Defects, 3, 45
Defensive, 36
Deleted, 48
Derivatives, 3
Designation, 1
Designed, 25, 36, 45
Developed, 3
Development, 2, 37
Document, 2, 3
Double Chess, 43, 44
Downloaded, 42
Draw, 4, 16, 19, 20, 25, 42,
46
Dynamically, 2, 4
Edit, 4, 11, 27
Empress, 3, 6, 39, 44, 50,
52, 54, 55, 56
Empty, 6, 16, 24, 44, 56
Empty Board, 16, 24, 44
En Passant, 4
Enable Check For Checkmate Threat,
20
End Game, 6, 19, 32, 34, 36,
37, 41, 56
Eval(s), 19, 20, 38, 39, 40,
45
Evaluate(s), 7, 20, 46
Evaluating, 3, 7, 38, 39, 56
Evaluation(s), 2, 3, 5, 7,
8, 20, 37, 38, 39, 40, 45, 46
Existing, 3, 4, 11, 22, 27,
48
Extrapawnmovestartrow, 51,
52
Faqs, 2
Features, 3, 4, 10, 19, 45
FIDE, 4, 38, 42, 44, 45, 52,
56
Files, 2, 28, 49, 50, 51
Forks, 7, 20, 46
Form, 3, 7, 11, 14, 15, 24,
25, 26, 27, 36, 43, 44, 47, 59
Freeware, 2
Functional, 3
Game(s), 2, 3, 4, 6, 10, 11,
13, 16, 19, 20, 22, 25, 31, 32, 34, 36, 37, 38, 41, 42, 44, 45, 46, 47, 51, 52
Generate(d), 3, 48, 50
Gif, 2, 28, 50, 51
Hard-Drive, 9
Height, 49, 51, 53
Human, 14, 17, 23, 28
Human-Like, 28
Icon(s), 2, 50
ID(s), 48, 49, 50, 51
Image(s), 2, 25, 28, 40, 47,
48, 49, 50, 51
Impact, 7, 20, 38, 39, 56
Implementation, 3
Implements, 4
Incentive, 6, 32, 34, 37,
39, 56
Index Of Player, 26, 28
Info, 2, 11, 17, 22, 24, 37,
38, 43, 45, 47, 49, 52
Intel, 9
Intellectual, 2
Interface, 2
Internet, 2
King(s), 2, 4, 5, 6, 7, 18,
22, 23, 25, 29, 30, 33, 34, 36, 41, 42, 43, 45, 50, 52, 54, 55, 56
King Squares, 7, 33, 41, 56
King-Side, 6, 34, 42, 56
Knight(s), 2, 3, 6, 7, 31,
32, 37, 39, 44, 50, 52, 54, 55, 56
Legal, 3, 7, 25
Located, 28, 47, 49, 51
Logical, 2
Loosing, 3, 36, 37, 39
Loss, 5, 33, 39
Maharaja, 2, 25, 44, 45, 50,
54, 55
Maharaja And The Sepoys, 25,
44, 45
Maniac, 2, 43, 44, 46, 49,
51, 59
Manual, 2
Mate, 34, 46
Mate In 1, 46
Mathematical, 46
Mature, 3
Maximize, 2
Measured, 49, 53
Menu, 10, 11, 12, 13, 19,
21, 22, 23, 32, 38
Middle Game, 19, 32, 34, 37
Mind, 5, 28, 35, 43, 45, 53
Minimax, 2
Minor, 32, 33, 39
Miscellaneous, 35, 40
Mobility, 6, 37, 39
Mode, 21, 22, 25, 45, 52
Modern, 55
MoreThanOnePawnMove, 43, 51,
52
Mouse, 13, 17, 23, 50
Move(s), 2, 3, 4, 5, 6, 7,
11, 13, 16, 18, 19, 20, 22, 23, 25, 26, 28, 31, 32, 33, 34, 36, 37, 38, 39, 41,
42, 43, 44, 45, 46, 52, 56
Moved, 13, 19, 20, 22, 34,
42
Move-Encouragement, 32
Move-Forward, 4
Movement(s), 6, 31
Moving, 6, 13, 25, 33, 34,
38, 45, 56
Name(s), 8, 15, 17, 18, 26,
28, 32, 39, 40, 48, 50, 51, 54, 55, 56, 59
Narrow Chess, 25
New Game, 10, 13, 19, 24,
32, 36, 42, 44, 45
No King Game, 25
No Progress, 16
Non-Pawn, 2
Non-Zero, 48, 50
No-Progress, 16, 19, 22
No-Progress Draw, 16, 19
Numerical, 49, 50, 52
Ø, 8, 26
Occupied, 5, 22, 36, 41
Opening, 6, 31, 32, 34, 37,
38, 45, 52, 56
Opening Book(s), 45
Opening Game, 6, 31, 32, 34,
37, 38, 45, 52, 56
Opponents
Opportunity, 3, 32, 34, 37
Opposing, 2, 4, 5, 7, 18,
20, 30, 32, 33, 34, 36, 37, 38, 39, 41, 45, 56
Opposing Piece, 2, 4, 5, 18,
34, 36, 37, 56
Opposing Player, 2, 5, 7,
20, 34, 36, 38, 39, 41, 45, 56
Options, 7, 9, 10, 12, 13,
14, 19, 22, 23, 24, 26, 38, 43
OriginalPersonality, 8, 27
Page(s), 1, 3, 7, 11, 12,
13, 14, 21, 22, 24, 25, 26, 27, 32, 35, 37, 38, 40, 42, 43, 44, 45, 47, 49, 52,
59
PawnPromotion, 51, 52
Pawn(s), 2, 6, 24, 31, 32,
42, 45, 56
Pawns May Be Promoted To, 24
Pentium, 9
Percent, 5, 36, 37
Percentage, 7, 32, 33, 36,
37
Personalities, 3, 4, 8, 11,
26, 27, 28, 47
Personality, 1, 3, 5, 6, 7,
11, 14, 19, 20, 26, 27, 28, 30, 31, 33, 34, 36, 37, 45, 46, 47, 56
Picture, 27, 28
Picture Box, 27, 28
Piece(s), 1, 2, 5, 6, 7, 8,
11, 13, 18, 20, 22, 24, 25, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 44, 45, 50, 51, 52, 54, 55, 56
Pins, 7, 20, 46
Pixels, 28, 49, 50, 53
Play(d), 4, 7, 11, 18, 20,
22, 23, 25, 26, 36, 37, 44, 45, 46, 52
Player(s), 7, 10, 11, 14,
17, 20, 23, 25, 26, 28, 32, 38, 44, 45, 47
Plies, 7
Ply, 7, 20, 38
Point(s), 2, 3, 5, 6, 7, 22,
30, 34, 35, 36, 37, 39, 40
Position(s), 3, 4, 6, 11,
14, 19, 20, 21, 22, 23, 34, 36, 37, 38, 39, 41, 45, 47, 51
Position String, 47
Possible, 2, 3, 5, 6, 20,
33, 34, 36, 37, 39, 43, 56
Possible Capture, 5, 36, 37,
39, 56
Possible Capture Of A Piece,
36, 37, 56
Possible Capture Points, 5
Preference, 33
Prevention, 4, 5, 34, 42, 46
Primary, 2, 27, 29, 30, 37
Problem, 2, 37
Processes, 46
Processor, 18, 20
Program(s), 2, 3, 4, 5, 7,
8, 9, 10, 11, 18, 20, 26, 27, 28, 31, 32, 34, 36, 37, 42, 45, 46, 48, 49, 51,
53
Programming, 2, 46
Project, 2, 3
Prominent, 7, 16, 35, 38, 40
Promote(d), 6, 32, 42, 44,
45, 52, 56
Promotion, 6, 24, 32, 44,
52, 56
Protected, 37, 39
Protecting, 7, 41
Protection, 29, 41
Queen(s), 3, 6, 33, 34, 37,
38, 39, 42, 44, 45, 50, 52, 54, 55, 56
Queen-Side, 6, 34, 42, 56
Random, 7, 26, 32
Randomly, 7
Randomness, 7, 37
Randomness Of Play, 7, 37
Rank, 32, 42, 43, 44, 52
Recognized, 3
Requirements, 3, 2, 9
Reset, 19, 22
Resigning, 42
Resolution, 9, 53
Rook(s), 2, 3, 23, 42, 43,
44, 50, 52, 54, 55, 56
Row(s), 6, 22, 24, 32, 51,
52, 53
Rules, 2, 4, 42, 44, 50
Save(d) 3, 11, 13, 28, 47.
51
SaveGmes, 47, 51
Saving, 11, 51
Screen, 17, 24, 26, 53
Second Computer Player, 26
Second-Last, 6, 42, 44
Self Play, 11, 18, 26
Setphysicalposition, 51, 53
Sets, 2, 3, 4, 15, 47, 48
Setup, 4, 11, 13, 19, 21,
22, 23, 25, 32, 37, 44, 45, 52
Setup Board, 11, 13, 21, 22,
23, 32, 45
Setup Board Mode, 21, 22
Setup Pieces, 22
Simpson, 2, 54
Size, 17, 23, 24, 28, 31,
49, 50, 53
Skip, 4, 18
Space, 9, 48
Square(s), 2, 5, 6, 18, 22,
25, 34, 35, 36, 39, 41, 49, 53, 56
Square Highlights, 18
Stalemate(s), 3, 20, 25, 41,
42
States, 52
Stationary, 4, 22, 25, 52
Stationary King Game, 25
Stored, 3, 8, 47
Strengthen, 7
Sub-Routine, 59
Support(s), 4, 5, 9, 33, 43,
47
Support Points, 5, 33
Supported, 5, 37, 39, 56
Supporting, 3, 5, 33, 36,
37, 56
Supporting A Given Piece,
36, 37, 56
Switching, 14, 46
System, 3, 7, 9, 18, 46
Tab, 26, 27, 30, 31, 33
Table, 3, 43, 47, 48, 49, 50,
51, 56
Task, 40, 46
TCMRP, 4, 46
Three-Move-Repetition, 4
Title, 7, 17, 23
Tweaking, 3
Twips, 49, 53
Type(s), 5, 6, 14, 16, 22,
24, 31, 39, 43, 49, 52
Unchecked, 52, 53
Unique, 3, 4, 40, 46, 49
Unpredictable, 26, 32
Unprotected, 6, 32, 37, 39,
56
Users, 3, 4, 8, 18
Value(s), 1, 2, 3, 5, 6, 7,
8, 20, 22, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 45, 49,
46, 47, 49, 52, 53, 56
Variant(s), 2, 3, 4, 6, 10,
11, 22, 23, 24, 25, 31, 36, 38, 42, 43, 44, 45, 47, 49, 51, 52, 56
Version(s), 2, 3, 6, 28, 31,
32, 40, 42, 44, 47
Video-Card, 9
Visual Basic, 2, 9, 46, 47,
59
Website, 3
White, 23, 26, 44, 49, 50,
54, 55
Window(s), 9, 13, 17, 22, 46
* Acquired all info on all types of chess variants and all types of chess pieces from http://www.chessvarints.com
[1] If a piece (usually knights, and knight-like pieces), is attacking more than one piece (usually two or or more prominent pieces), is called a fork
[2] If a piece is unable to move, due to the move leading to a prominent piece being captured, or to allowing the king to be in check, is considered a pin, whereby the trapped piece has been pinned.
* Opening-Books, are set of predetermined moves, that are considered the best to start a game of conventional chess (FIDE chess). There are approximately hundred thousand different opening variations, and most of them are interrelated, and inherit from one another – for example e2e4 is an opening variant, from where g1f3 would be another opening variant, and from there about 5-10 more moves could be made, which may be part of another larger opening variant, which eventually will lead to the middle game.
* This means, that the king will be checkmated in one move. So the program, checks if this condition will be true by the making a given move.
* This is a FIDE rule that essentially states that a game is considered a draw if a given position has been reached three different times, during the game.
* I created this chess set (‘The Modern Set’), using Adobe Dimensions, which is a low-end 3D-Modeler.