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.

Chapter 2: Features


At present the program supports the following features:



There are other features, which are interrelated to the above mentioned ones.



Chapter 3: Evaluations


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.


However, one should note that, by increasing the Randomness of Play’, the given personality would become weaker in it’s play. Therefore, I suggest that 10% to 15% of random play would work well and any more would produce a highly unreliable player. If you require the strongest player, then this value should be set some where between 0% and 5%. Nevertheless, one should also note, that when the computer believes a move is good, it does not mean that it is truly good, since the evaluations I have coded is some what limited, and the program does not look beyond 3 plies. So I would suggest that you add some ‘Randomness of Play’, since some degree of randomness could, at times help to strengthen play. If this value is set to 100%, the computer will make legal random moves only, so no evaluation would be taken into account, even though time will be spent on the evaluations, which will not be used.






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.


Chapter 4: System Requirements


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:



Chapter 5: Use of the Program



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


5 X 6


8 X 8


10 X 8


10 X 10


12 X 8


14 X 8


16 X 8


16 X 12


16 X 16



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.





·        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 issuesThese 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.

There is only one value in the last miscellaneous page, and it’s purpose is explained in it’s name itself. This is a unique value that is somewhat difficult to explain. Nevertheless one should not alter it, unless one truly understands how it is internally represented. Therefore this is not a value to be changed. The following is the name of the value that is found in the image:


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


Maharaja and the Sepoys

Queen, Rook, Bishop, Knight and Pawn (only White pieces are allowed and pawn promotion is not allowed)

FIDE Chess



Queen, Rook, Bishop Knight and Pawn of both colors

Demi Chess

Double Chess

Petty Chess

Chess – Speed Game

Grand Chess

Chancellor, ArchBishop, Queen, Bishop, Knight and Pawn of both colors

Capablanca/Gothic Chess

Eric’s Great Chess

Empress, Chancellor, ArchBishop, Queen, Bishop, Knight and Pawn of both colors

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).




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 the color fields LetterAndNumberColor and BackColor requires a numerical value that is of the type ‘long’. Please note that to determine this value for a given color, you may use the included program DetermineColor (not part of Maniac but may be found in the same directory), in which you may set the Red, Green and Blue values, and copy the number that is displayed on the text box and paste in the above mentioned fields.


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.






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’.




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


































Further Piece Designations:


Modern Set*

Pictorial Set

Chinese Set

Name of the Piece

































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

Added Incentive For King-Side Castling


Added Incentive for Pawn Promotion


Added Incentive For Queen-Side Castling


Added Incentive, if a given piece is supported by more than one piece


Computer's ArchBishop


Computer's Bishop


Computer's Chancellor


Computer's Empress


Computer's King


Computer's Knight


Computer's Pawn


Computer's Queen


Computer's Rook


Empty Squares


Empty Squares


End Game (King Squares)


EndGame (King related Values)


Importance of capturing an unprotected passed pawn


Importance of Capturing an UnProtected Piece


Importance of Centering


Importance of encouragining pawn moves in the End Game


Importance of encouragining pawn moves in the Opening Game


Importance Of Placing checks on the Opposing King


Importance Of Placing checks on the Opposing King in the End Game


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)


Importance of Supporting a given piece


Importance of Supporting a given piece in the End Game


Importance of supporting the King


Importance Of the Center 4 squares


Importance of the Possible Capture of a piece


Importance of the Squares Surrounding the Center 4


Incentive for an Actual Capture of an opposing piece


Incentive for an actual capture when evaluating the impact of the opposing player's best move


Incentive to attack/prevent pawns about to be promoted


Name of Value

Incentive To Prevent a BAD Loss of a piece


Incentive To Prevent a BAD Loss of a piece when evaluating the impact of the opposing player's best move


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


Incentive to prevent moves, that would lead to a check


Incentive to prevent moves, that would lead to a check in the End Game


Incentive To Prevent Pawns on the Ends to move during the Opening Game


Incentive To Prevent Pawns on The Same File In The Opening Game


Middle Game (King related Values)


Middle Game (King Squares)


Opening Game (King related Values)


Opening Game (King Squares)


Opponent's ArchBishop


Opponent's Bishop


Opponent's Chancellor


Opponent's Empress


Opponent's Knight


Opponent's Pawn


Opponent's Queen


Opponent's Rook


Opponents's King


Pawn move-encouragement should last until a certain number of pawn moves(depends on the size of the board)


Percent Of Board Value To Determine The Middle Game


Percent Of Board's Value to Determine End Game


Points For Each Empty Square a Piece Covers


Preference of the King not to move during a Check


Randomness of Play


Squares Occupied by Opp (opp to the Opp King) Piece


Squares Occupied by Opp Piece


Squares Occupied by Own (own to the Opp King) Piece


Squares Occupied by Own Piece


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.


Value of Pawns during the End Game






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


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

[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.