smash v1.0.2 by Maurizio Sambati http://www.cli.di.unipi.it/~sambati =-=-=-=-=-=-=-=-=-=-=-=-= TABLE OF CONTENTS 1. Introduction 2. Features 3. Installation 4. Options 5. Known bugs 1. INTRODUCTION -=-=-=-=-=-=-=-= This is the new version of smash, written after the experience gathered by previous versions. The program is still in experimental phase and it could have some unknown problems/bugs. If you find some of them, please send me an email with engine's output. This version is rewritten by scratch and the main changes are: - UCI protocol instead of Winboard - PVS search instead of MTD(f) - Sources are in (my bad) english - Parallel search for multicore CPU or multiprocessor PC There are also many changes in the evaluation function, move ordering and some other things. (I think the only preserved function from the old engine is the SEE function). Smash is distribuited under the terms of the General Public License Version 2. For details see LICENSE file. Maurizio 2. FEATURES -=-=-=--=--= - UCI-compatible engine - It works on both Linux and Windows (i hope...) - ABDADA search - bla bla bla... (this section is very boring to write, i will fill it later) 3. INSTALLATION -=-=-=-=-=-=-=-= If you use Winboard you have to download also PolyGlot (http://wbec-ridderkerk.nl/) that is an adaptor to let UCI engines work with WB. This is a copy of my smash.ini: -------------------- CUT THIS -- smash.ini START --------------- [PolyGlot] EngineDir = /home/duilio/smash EngineCommand = ./smash EngineName = smash Book = true BookFile = /usr/share/polyglot/fruit.bin Log = true LogFile = smash.log Resign = true [Engine] Hash = 16 -------------------- CUT THIS -- smash.ini END ----------------- Maybe you have to change the directories and the executable name. All the things that you need is to configure your GUI to launch the smash executable. (or Polyglot with smash.ini as argument) Windows users: you must put mingwm10.dll in the same directory as smash.exe, or in a system directory. An easy GUI to play with smash is Arena, you can find it in www.playwitharena.com. NOTE: You *must* put a value > 0 for Hash option. To compile smash under Linux you have to download the source archive smash.tar.bz2, put it in a directory and decompress using tar: tar xjvf smash.tar.bz2 After tar finished its work you have to move to smash source directory and compile smash with make: cd smash make [options] Makefile options are: TARGET (linux,win32) if equals to win32 it tries to compile with mingw32 cross-compiler RELEASE (yes,no) compiling in release mode drops all asserts USESMP (yes,no) compiling with SMP support e.g: make "RELEASE=yes" "USESMP=yes" after compilation you can move the binary file 'smash' wherever you want and use it. 4. OPTIONS -=-=-=-=-=- Here there are showed only the non-standard UCI options, i.e. I think it's not needed to explain how "Hash" option works... DeltaPruning Enable delta pruning in quiescence nodes. (default: True) DeltaPruningMargin Set delta pruning aggressivity: 0 is most aggressive value, drops all captures that don't raise score over alpha. 500 is most prudent one. (default: 150) TTInQuiesce (Yes, ProbeOnly, No) Enable Transposition Table in Quiescence Nodes. With ProbeOnly no quiescence nodes will be stored in Transposition Table. (default: No) HistoryHeuristicInMoveOrder Enable History Heuristic in move order. (default: True) HistoryHeuristicStartValue (FromPST, Zero) Initialize History Heuristic with values from PST or reset it to 0. (default: FromPST) HistoryHeuristicScore (DepthAndDepth, DepthAndPly, PlyAndPly) Specify how score a move inserted in history heuristic. DepthAndDepth means score is influenced just by depth of search, DepthAndPly is a proportional score between depth of search and distance from root (great distance, poor score), PlyAndPly means score is influenced only by distance. (default: DepthAndPly) DifferentialHistoryHeuristic Enable consider source position of a move in an history heuristic evaluation of the move. This means that if the piece is moved from a "good" square the move can be evaluated not very good. (move_score = destination_square_score - source_square_score) (default: True) NullMove Enable nullmove pruning. (default: True) NullMoveMinDepth (0..64) Nullmove affects only nodes searched with depth equals or greater than NullMoveMinDepth. (default: 2) NullMoveReduction (SmashAdaptive, StandardAdaptive, R2, R3) This set the way smash reduce depth during a nullmove. R2 and R3 have fixed reduction by 2 and 3, StandardAdaptive is similiar to the one described by Heinz, SmashAdaptive is a simple linear function. (default: SmashAdaptive) NumThreads (1..4) Number of threads used in search. Put here the number of cores you have in your computer. (eg. if you have a dual core cpu put 2, if you have a PC with 4 processors put 4) (default: 1) (NOTE: if you use more threads than the number of cores smash will be slower than with the right number) 5. KNOWN BUGS -=-=-=-=-=-=-= - Pondering doesn't work - Sometimes smash loses for time in SMP version - Condition implemented in a bad way to let threads wait until next command without waste of cpu time.