README for Schola Version 1.1.0 ------------------------------- See the bottom for general notes on Schola. The top part has the changes made for each release. -------------------------- 08/10/2009 : Version 1.1.0 Fix a timing window where the opponent could respond to a move before we have updated the data structures so we respond with an error. Don't update the time at a time control if the controller is sending time updates. Fixed an evaluation bug where Black's pawns were incorrectly evaluated. Minor cleanups; got rid of SSE. Some fixes for a clean 64 bit compile (marginally faster). Merged draw by material detection into main evaluation / search. Added Late Move Reductions. Added a capture flag to the move structure so we could correctly identify Kxf2 differently from Kf2 (for example) in killer moves. This was causing move ordering problems. Used a separate repetition for the current position and the search position so that it's lockless. Tweaked the time support so it's better for faster games. Fixed a problem with the repetition that caused it to miss draws in certain search situations. Notes for 1.0.x: -------------------------- 08/12/2008 : Version 1.0.2 Fixed bug where book move was generated from opponent's position when pondering Incorporated minor compilation tweaks from Dann Corbit Added draw with insufficient material courtesy of Dann Corbit Locked repetition table due to timing window when in ponder mode Reset pondering information on new game Corrected check for valid ponder move in some situations Save opponent's name to log file for analysis Added logo file (Thanks Swami!) -------------------------- 09/02/2008 : Version 1.0.3 Fixed bug where level used seconds, not minutes Ensure GetTickCount won't wrap Allow log file to be read while process is still running Add logging of time allocated to move and other time control stuff Changed to not set time ourselves if the GUI is setting it NOTE: I hope this has fixed losses on time around the 40 or 80 move mark (e.g. time control). However, I have been unable to reproduce or completely explain these losses. The additional log I have added should aid in tracking that down if it's not fixed. -------------------------- 09/12/2008 : Version 1.0.4 Modified the time control to keep an amount of time for the last move in a time control so we can get the move back to the GUI without the flag falling. Use less time if the opponent plays the ponder move. Fix up the combination of force / ponder. This is the first release of the Chess engine "Schola". It has been very developed over a number of years with large gaps in development. I class Schola as rather weak. It has a reasonable search but has a very rudimentary evaluation routine. The main reason for releasing it at this stage is to get it out before the evaluation gets re-written as this should provide good experience for future improvements. The main features of Schola are: 1. Implementation of the Winboard protocol. Admittedly this has been driven largely by what works though it has been tested within Arena, Chess Assistant, Chess Master, Winboard and the epd2wb.exe tool. It supports most protocol version 2 features including setboard. 2. The search is an implementation of the PVS alpha-beta search. It uses null move cutoff (with R=2). I have experimented with verification null move but this appeared to cause more nodes to be searched; I also experimented with adaptive null move depth but this too is currently disabled. 3. A standard hash table is used with an always replace policy. It will attempt to use a second location for the hash item if the first is already taken and this did improve the hash hit rate during testing though there are probably more profitable ways to do that. 4. Book support is provided courtesy of Ed Schröder. Please see his website for more information: http://www.top-5000.nl/tools.htm 5. Ponder is supported though I will admit I have had issues getting all the kinks out of it. To put it another way I've found all the bugs except the next one ;) [Edit 8/12/08: See change list for 1.0.2!!!] 6. Although I've done a quick port to Linux, I haven't had any testing time with it and have not evaluated it's use under XBoard. Given the documentation about signals in XBoard I suspect it might break. (Edit for 1.0.3: I didn't make any updates to the Linux defines to support 1.0.3 for Linux so it probably won't compile any more). 7. There is an ini file but it hardly supports any options. Look in schola.ini for more information. I would recommend using it, though, since without it Schola will use a fairly small hash table. To specify the Hash, use the HashSize option. The hash size is in MB: # 128 MB Hash HashSize:128 You can also provide the -s option on the command line to set the hash and the -ini option to specify a different ini filename. The default is schola.ini in the working directory. 8. I've built Schola using Visual C++ 2008 Express (the free one). It wasn't ported from 2005 too long ago so I suspect it would port right back. I also have only tested it on XP 32 bit because that's all I have. It uses some of the XP service pack 2 routines so I suspect it's not going to run on anything earlier. Vista should be OK but who knows - I installed it on one machine and very quickly uninstalled it. 9. Most of the code is pretty readable though it wasn't designed very well at the beginning and there's a lot of #if def'd debug that should go at some point. As with many people I just started this to see if I "could" and it's a learning exercise. 10. Each time the engine runs it will create a schola-xxxx.log file. Delete them frequently to stop filling up the disk! 11. As of version 1.0.5 it will compile and link a 64 bit version correctly. Testing has shown a marginal speedup on Vista 64 bit. To install just unpack into a folder and point your GUI at schola.exe. The book files should go there too. I haven't included them due to size but they are at Ed's site (see above link) - you need tbclassc.bin and super.bin: http://www.top-5000.nl/dl.htm?file="books/super.zip" http://www.top-5000.nl/dl.htm?file="books/tbclassic.zip" OK, that's about it. Contact me at plattyaj@hotmail.com if you have any questions, bug reports or comments. I'm only planning to fix basic engine, protocol or search related bugs in this version since the evaluation is going to be ripped apart but any and all comments are welcome. I am well aware of Schola's limitations to more abuse will not be required! Andy Platt Arlington, VA, USA July 23rd 2008.