Yet another chess engine.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


### Ziggy - v0.7


Yet another chess engine. Created with a *little* help and inspiration from other chess engines
such as CPW, Mediocre, TSCP, Glaurung, Stockfish, Fruit, and inspirations and guides from people
like Fritz Reul (Loop) and Ed Schröder (Rebel).

To be done
    # C++'d - I guess. :(
    ! Search extensions.
    ! Fix memory issues.
    ! Deterministic mode.
    ! Some actual parsing of UCI's options.
    # Better transposition entries.
    # Better transposition table (with generations, clusters of entries, etc)
    # Only generate 'good captures' in quiescence.
    # Dynamic R value in Null-Moves.
    ! Killer moves
    ? Contempt factor
    # Endgame tablebases.
    ! Evaluation. :(

Usage instructions

UCI mode:
    java -jar ziggy.jar

Benchmark mode:
    java -jar ziggy.jar <bench> <type=perft | depth | suite> <file=suite/fen file>
                        [time=time for each position (s)] [depth=fixed depth for each position]

Both modes:
    In both UCI and benchmark mode there are a number of settings which can be adjusted
    as requested.

    Setting                           Default  Description
    --------------------------------- -------- -----------------------------------------------------
    mc=<on | off>                     on       Turns Multi-Cut (MC) on or off.
        mc_cutoffs=int                3        Sets MCs C param.
        mc_expand=int                 10       Sets MCs E param.
        mc_reduction=int              2        Sets MCs R param.
        mc_piece=<on | off>           off      Turns MCs piece-check on or off.
        mc_reorder=<on | off>         off      Turns MCs reordering of cut nodes on or off.
        mc_usetrans=<on | off>        off      Will use the transposition table with MC.
        mc_apply=<cut | trans | or>   trans    Where to apply MC:
                                               - cut:   At expected cut nodes.
                                               - trans: When a shallower search indicates fail-high.
                                               - or:    If either condition holds.

    nm=<on | off>                     on       Turns NMs pruning on or off.
        nm_reduction=int              2        Sets NMs R param.

    lmr=<on | off>                    on       Turns LMR on or off.
        lmr_fdm=int                   4        Sets the no. of full depth moves in LMR.

    asp=int                           50       Sets the size of the aspiration window.

    java -jar ziggy.jar bench type=suite file=wac.txt time=10
    -- Will run the test-suite Win At Chess, with a time constraints of 10 seconds per position.

    java -jar ziggy.jar bench type=suite file=wac.txt depth=7
    -- Same, but with a fixed depth of 7 instead of time constraints.

    java -jar ziggy.jar bench type=suite file=wac.txt depth=7 lmr=off nm=off mc=off
    -- Same, but without LMR, NM- and MC pruning.