Author: Mike Byrne
Date: 04:44:22 07/31/02
With all new and revised predefined "krafty" levels whcih can be set using the
crafty.rc file. "krafty" levels are designed to make Crafty play weaker - thus
more enjoyable for lower rated players.
There are now 14 predefined "krafty" levels:
pawngrabber
beginner
novice
simpleton
woodpusher
knight
bishop
player
club
expert
master
im
gm
standard
Here are the results of the two lowest rated "krafty" levels - "pawngrabber" and
"beginner" in a Chessmaster 8000 tournament using the various "Josh"
personalities.
CM8K Personality Ratings
CM8K Performance Results for Crafty Beginner and PawnGrabber modes:
8 Man RR Tournament
CM8K Personality Ratings Points
Josh Age 6 1200 5.0
Josh Age 7 1365 3.5
Josh Age 8 1600 8.0
Josh Age 9 1800 9.5
Josh Age 12 2100 10.5
Muldoon 2300 14.0
Crafty (“krafty <level>”)
Beginner 3 wins 3 Draws 8 Losses 4.5
PawnGrabber 1 win 2 Draws 11 Losses 2.0
Mission Accomplished – Pawngrabber played at a level less than 1200 – which is
good.
Beginner played somewhere between 1200 and 1300 – which is perfect.
All other levels will play increasing better as their vision (search depth) and
evaluation assessment increases goes up.
Source code for krafty <level> option - require changes in other areas as well
/*
----------------------------------------------------------
| |
| "krafty" command sets the playing level by piece values |
! !
| |
----------------------------------------------------------
*/
else if (OptionMatch("krafty",*args))
{
if (nargs < 2)
{
Print(4095," Usage: krafty <level>\n");
Print(4095," Valid levels are:\n\n");
Print(4095," pawngrabber ->queen <500>, rook <400>, knights
<300>,\n");
Print(4095," ->bishops <300>,pawns <250>\n");
Print(4095," beginner ->queen <550>, rook <400>, knights
<300>,\n");
Print(4095," ->bishops <300>,pawns <225>\n");
Print(4095," novice ->queen <600>, rook <400>, knights
<275>,\n");
Print(4095," ->bishops <275>,pawns <200>\n");
Print(4095," simpleton ->queen <600>, rook <400>, knights
<275>,\n");
Print(4095," ->bishops <275>,pawns <175>\n");
Print(4095," woodpusher ->queen <600>, rook <400>, knights
<300>,\n");
Print(4095," ->bishops <300>, pawns <150>\n");
Print(4095," knight ->queen <650>, rook <400>, knights
<350>,\n");
Print(4095," ->bishops <250>, pawns <150>\n");
Print(4095," bishop ->queen <650>, rook <400>, bishops
<350>,\n");
Print(4095," ->knight <250>, pawns <150>\n");
Print(4095," player ->queen <650>, rook <400>, bishop &
knights <300>,\n");
Print(4095," ->pawns <150>\n");
Print(4095," club ->queen <750>, rook <450>, bishop & knights
<300>,\n");
Print(4095," ->pawns <125>\n");
printf("more...");
fflush(stdout);
(void) Read(1,buffer);
Print(4095," expert ->queen <1200>, rook <500>, knights
<300>,\n");
Print(4095," ->bishops <300>, pawns <125>\n");
Print(4095," master ->queen <1100>, rook <500>, bishop &
knights <300>,\n");
Print(4095," ->pawns <125>)\n");
Print(4095," im ->queen <1200>, rook <600>, bishop
<400>,\n");
Print(4095," ->knights <400> pawns <110>)\n");
Print(4095," gm ->queen <950>, rook <500>, bishop
<310>,\n");
Print(4095," ->knights <310> pawns <100>)\n");
Print(4095," standard ->queen <900>, rook <500>, bishop & knights
<300>,\n");
Print(4095," ->pawns <100>)\n\n\n");
}
else if (OptionMatch("pawngrabber",args[1]))
{
QUEEN_values=500;
ROOK_values=400;
BISHOP_values=300;
KNIGHT_values=300;
PAWN_values=250;
learning=0; /*learning off*/
search_depth=2; /*search depth = 2 ply*/
book_selection_width=5; /* wide book*/
book_random=1; /*book randomness on*/
}
else if (OptionMatch("beginner",args[1]))
{
QUEEN_values=550;
ROOK_values=400;
BISHOP_values=300;
KNIGHT_values=300;
PAWN_values=225;
learning=0;
search_depth=3;
book_selection_width=5;
book_random=1;
}
else if (OptionMatch("novice",args[1]))
{
QUEEN_values=600;
ROOK_values=400;
BISHOP_values=275;
KNIGHT_values=275;
PAWN_values=200;
learning=0;
king_safety_asymmetry=50; /*less king safety awareness - aggressive*/
king_safety_tropism=150; /*more agressive*/
passed_scale=150; /*passed pawn weighted 50% more*/
search_depth=4;
book_selection_width=5;
book_random=1;
}
else if (OptionMatch("simpleton",args[1]))
{
QUEEN_values=600;
ROOK_values=400;
BISHOP_values=275;
KNIGHT_values=275;
PAWN_values=175;
learning=0;
king_safety_asymmetry=-50; /*more king safety awareness - defensive*/
king_safety_tropism=80; /*less aggresive*/
search_depth=4;
book_selection_width=5;
book_random=1;
}
else if (OptionMatch("woodpusher",args[1]))
{
QUEEN_values=600;
ROOK_values=400;
BISHOP_values=300;
KNIGHT_values=300;
PAWN_values=150;
passed_scale=150;
search_depth=5;
book_selection_width=5;
book_random=1;
}
else if (OptionMatch("knight",args[1]))
{
QUEEN_values=650;
ROOK_values=400;
BISHOP_values=250;
KNIGHT_values=300;
PAWN_values=150;
king_safety_asymmetry=-50;
king_safety_tropism=80;
learning=0;
search_depth=5;
book_selection_width=5;
book_random=1;
}
else if (OptionMatch("bishop",args[1]))
{
QUEEN_values=650;
ROOK_values=400;
BISHOP_values=350;
KNIGHT_values=250;
PAWN_values=150;
learning=0;
king_safety_asymmetry=50;
king_safety_tropism=150;
search_depth=5;
book_selection_width=5;
book_random=1;
}
else if (OptionMatch("player",args[1]))
{
QUEEN_values=650;
ROOK_values=400;
BISHOP_values=300;
KNIGHT_values=300;
PAWN_values=150;
learning=0;
search_depth=6;
book_selection_width=5;
book_random=1;
}
else if (OptionMatch("club",args[1]))
{
QUEEN_values=750;
ROOK_values=450;
BISHOP_values=300;
KNIGHT_values=300;
PAWN_values=125;
learning=0;
king_safety_asymmetry=50;
king_safety_tropism=150;
search_depth=7;
book_selection_width=5;
book_random=1;
}
else if (OptionMatch("expert",args[1]))
{
QUEEN_values=1200;
ROOK_values=500;
BISHOP_values=300;
KNIGHT_values=300;
PAWN_values=125;
learning=0;
king_safety_asymmetry=50;
king_safety_tropism=150;
passed_scale=150;
search_depth=8;
book_selection_width=5;
book_random=1;
}
else if (OptionMatch("master",args[1]))
{
QUEEN_values=1100;
ROOK_values=500;
BISHOP_values=300;
KNIGHT_values=300;
PAWN_values=125;
learning=0;
king_safety_asymmetry=-50;
king_safety_tropism=80;
book_selection_width=5;
book_random=1;
}
else if (OptionMatch("im",args[1]))
{
QUEEN_values=1200;
ROOK_values=600;
BISHOP_values=400;
KNIGHT_values=400;
PAWN_values=110;
learning=0;
king_safety_asymmetry=-50;
king_safety_tropism=120;
book_selection_width=5;
book_random=1;
}
else if (OptionMatch("gm",args[1]))
{
QUEEN_values=950;
ROOK_values=500;
BISHOP_values=310;
KNIGHT_values=310;
PAWN_values=100;
book_selection_width=5;
book_random=1;
}
else if (OptionMatch("standard",args[1]))
{
QUEEN_values=900;
ROOK_values=500;
BISHOP_values=300;
KNIGHT_values=300;
PAWN_values=100;
king_safety_asymmetry=0;
king_safety_tropism=100;
passed_scale=100;
pawn_scale=100;
booster_base=60;
booster_level=300; /*booster level=300 is off*/
book_selection_width=3; /*narrow book*/
book_random=0; /*no randomness*/
}
Print(4095,"\n\n\n");
Print(4095," queen value..........................%d\n",QUEEN_values);
Print(4095," rook value...........................%d\n",ROOK_values);
Print(4095," bishop value.........................%d\n",BISHOP_values);
Print(4095," knight value.........................%d\n",KNIGHT_values);
Print(4095," pawn value...........................%d\n",PAWN_values);
Print(4095,"\n\n\n\n");
}
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.