/DiabloChessEngine

The Diablo Chess Engine

Primary LanguageCMIT LicenseMIT

What is Diablo?
    A chess engine

Legal Stuff

    Diablo 0.3  Copyright 2005, Marcus Prewarski

    This program is free software. It may be copied or modified under the terms
    of the GNU General Public License version 2 as published by the 
    Free Software Foundation.

    This program is distributed without any warranties whatsoever.

    See the file COPYING included with the distribution for details of the 
    GNU general public license.


A Brief History

    Diablo is my second attempt at chess programming.  The first DrunkenMaster started 
    in December 2002 when I had a little free time and was curious how computers played
    chess.  After finding some resources on the internet I hacked together the first
    version in a few weeks barely understanding the basic algorithms.  At first I was 
    happy to have created something that played chess.  But with all the chess engine 
    competitions happening, I wanted it to play better and better and it grew 
    from there.  By mid 2004 it had improved a lot but had also grown in a lot of ugly
    ways and I wasn't happy with the code or the data structures.  In January 2005 I 
    started working on Diablo which is an entirely new chess engine written from scratch.
    My design goals were to create a stronger engine and one that was easier to modify
    without creating more bugs than features and also one that I wouldn't be completely 
    embarrassed to share the source code.

Features
   - UCI interface only.  To use it with a Winboard GUI an adapter such as polygot
     is needed.  As of this writing I haven't tested it with Winboard + polygot but
     assume it will work.

   - Hash size may be set from 4 to 128 Mb.

   - Currently there is no support for an opening book. However in most UCI GUIs
     an external opening book is easy to use.

Internals

 - The basic chess board data structure is a combination mailbox and 0x88.
   The playing board occupies the middle of the left half of a 16x16 array.

 - The search is a standard alpha/beta PVS.

 - Null move is used with a reduction of 2.5 plies in the middle game
   and 2 plies in the endgame.

 - Futility pruning.

 - The evaluation although not very sophisticated is somewhat expensive since
   generates attack boards and the evaluation is called at all nodes.


Compiling

    I developed Diablo using the Cygwin environment and the MinGW gcc compiler. 
    Under a similar environment compiling should be easy, type "make" in the
    directory containing the source.  I don't have access to a Linux system 
    anymore but compiling under Linux should be nearly as easy. Edit the Makefile
    and take out the -D_WINDOWS_ part of the compilation string.

Muchos Gracias:

    Contributors
    	Dan Corbit - Various bug fixes to sloppy code.
    	Tord Romstad - Pointed out a few bugs in the search functions.
    	William Hoggarth -  Helped with compatibility issues on Mac platforms

    To people who have provided source code or details, many ideas came from them.

    Tord Romstad - He convinced me to use the combination mailbox/0x88 data structure, 
            I was planning to use just a 12x12 mailbox but I think the 16x16 
            board is better. Also the ideas behind the implementation of the 
            piece lists come from his engine Gluarung.  I implemented and 
            debugged the piece lists myself but named all the piece list macros
            the same as his to give tribute to his work.  I think his are 
            still better.  I also make use of a couple of tables generated by
            him for attacked board based SEE routines.  There are probably a few
            other areas where inspiration came from his code or messages not 
            mentioned. Also he has always been helpful for sharing ideas and 
            more recently source code to his engine Gluarung.

    Fabien Letouzey - Author of Fruit and polygot.  When Fabien released Fruit and
            I saw how relatively simple it was and how much stronger it was then
            DrunkenMaster I started thinking seriously about writing a new engine
            from scratch.  

    Dusan Dobes - Phallanx.  
    Robert Hyatt - Crafty.
    Ed Schroder - Rebel/Pro Deo.  His web page on chess programming has been
            extremely helpful.

    And others that are too many to list who have contributed to my
    chess programming education at the various chess programming message
    boards or web sites.

    Also thanks to people that test and run engine tournaments:
       Leo Dijksman, Guenther Simon, Olivier Deville, Igor Gorelikov,
       Lars Hallerstrom, Heinz van Kempen, Patrick Buchmann, Nicolas Normand.

       Let me know if I forgot anyone.

Contact:
   I can be reached by email at WillSurfForFood at gmail dot com.