New engine releases

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

Norbert Raimund Leisner
Posts: 1643
Joined: Tue May 20, 2008 4:57 pm
Location: Augsburg - Germany

Re: New engine releases

Post by Norbert Raimund Leisner »

Yesterday Skiull 0.4 x64 was available, but today this edition disappeared. I wrote an email to Tony, but can send to you this version of course.

Norbert
tttony
Posts: 268
Joined: Sun Apr 24, 2011 12:33 am

Re: New engine releases

Post by tttony »

Guenther wrote:not yet mentioned:

Code: Select all

Dumb 1.1
Trappist rev36 (new) => discovered and compiled by 'linuxchess'
Skiull 0.4
Don't use the 0.4, it has a bug in the move stage :oops:, right now I'm testing it with the fix, I will publish it when the bug it's gone
User avatar
Guenther
Posts: 4605
Joined: Wed Oct 01, 2008 6:33 am
Location: Regensburg, Germany
Full name: Guenther Simon

Re: New engine releases

Post by Guenther »

not yet mentioned:

Code: Select all

Monolith 0.4
Devel 2.0000
RuyDos 1.1.6 (*dev version)
Nemorino 4.09 (*dev version)
https://rwbc-chess.de

trollwatch:
Chessqueen + chessica + AlexChess + Eduard + Sylwy
Sergio Martinez
Posts: 1975
Joined: Fri Oct 05, 2012 2:35 pm
Location: Spain

Re: New engine releases

Post by Sergio Martinez »

Member of the CCRL Group. Write me if you want I test your engine.
User avatar
CMCanavessi
Posts: 1142
Joined: Thu Dec 28, 2017 4:06 pm
Location: Argentina

Re: New engine releases

Post by CMCanavessi »

SzG wrote:Abbess 2018.02.07

Zevra 1.8.3 r636
Zevra is already on 1.8.4 for a while
Follow my tournament and some Leela gauntlets live at http://twitch.tv/ccls
tpoppins
Posts: 919
Joined: Tue Nov 24, 2015 9:11 pm
Location: upstate

Re: New engine releases

Post by tpoppins »

Yes! It's like a litttle Christmas every time for the bored ppl running rating lists. Instead of testing same-old-same-old for months at a time there's something new and fresh every day. Simply wonderful.
tmokonen
Posts: 1296
Joined: Sun Mar 12, 2006 6:46 pm
Location: Kelowna
Full name: Tony Mokonen

Re: New engine releases

Post by tmokonen »

I don't think I have seen the newest version of Hedgehog (1.804) mentioned here.

http://sdchess.ru/download_engines.htm
User avatar
Guenther
Posts: 4605
Joined: Wed Oct 01, 2008 6:33 am
Location: Regensburg, Germany
Full name: Guenther Simon

Re: New engine releases

Post by Guenther »

Code: Select all

Detroid 0.9 released 10 days ago
https://github.com/ViktorC/DETROID/releases

A few infos:
- it has a working own GUI now, but with the command -u it still can play under any GUI (sth like this: 'java -jar Detroid09.jar -u')
- Here at least the java.exe uses around 750MB despite being set to 256MB in the uci options/GUI
- setting ownbook to false works correctly in the uci options
- it still spikes up to 75% cpu usage in the beginning (= 3 threads) of the game sometimes, but it does not happen often later in the game (when 1 thread is specified)

Last not least it was released as version 0.9, but it calls itself 1.0 and the jar file also is named 1.0.

a single test game vs. Aice_0992 (no books)
[pgn][Event "RWBC"]
[Site "CAPPUCCINO"]
[Date "2018.03.31"]
[Round "-"]
[White "Detroid_09"]
[Black "AICE 0.99.2 "]
[Result "1/2-1/2"]
[TimeControl "40/240"]
[Annotator "1. +0.37 1... -0.21"]

1. Nf3 {+0.37/13} d5 {-0.21/11 10} 2. e3 {+0.59/14 5} Nf6 {-0.20/11 8} 3.
Bb5+ {+0.45/15 8} Bd7 {+0.00/10 6} 4. Qe2 {+0.23/15 9} e6 {+0.04/11 11} 5.
Bxd7+ {+0.09/14 3} Nbxd7 {+0.17/11 9} 6. a4 {+0.21/15 9} Bd6 {+0.53/10 11}
7. a5 {+0.37/15 5} e5 {+1.11/11 8} 8. O-O {+0.32/13 3} O-O {+0.91/11 8} 9.
g3 {+0.19/12 7} e4 {+1.25/10 6} 10. Ne1 {+0.15/13 2.4} Ne5 {+1.30/9 6} 11.
a6 {+0.57/13 6} b6 {+0.95/10 7} 12. d4 {+1.37/14 3} Ng6 {+1.09/11 4} 13.
Nc3 {+1.72/14 2.5} Qd7 {+1.06/11 6} 14. Nb5 {+1.68/14 2.9} Bb4 {+1.29/10 4}
15. Ra4 {+1.47/13 2.5} Be7 {+1.40/11 4} 16. Bd2 {+1.34/14 3} c6
{+1.13/10 3} 17. Nc3 {+1.58/16 5} Bd6 {+1.10/10 4} 18. f3 {+1.31/14 4} exf3
{+1.11/9 3} 19. Rxf3 {+1.31/14 3} Rae8 {+1.13/9 5} 20. Nd3 {+1.22/14 4} Ne4
{+1.17/9 5} 21. Rf1 {+0.85/13 2.8} c5 {+1.29/9 4} 22. dxc5 {+1.43/12 5}
Nxc3 {+1.12/9 2.4} 23. Bxc3 {+1.33/14 2.9} Qxa4 {+1.03/9 3} 24. cxd6
{+1.13/15 7} Qc6 {+0.94/9 5} 25. Qd2 {+1.64/12 3} Re6 {+1.17/9 5} 26. Nb4
{+2.39/14 4} Qxd6 {+1.18/10 5} 27. Nxd5 {+2.19/14 3} Qc6 {+1.16/9 4} 28.
Qd4 {+2.29/13 6} f6 {+1.29/9 5} 29. Rd1 {+2.12/12 3} Kh8 {+1.28/9 5} 30. h4
{+2.20/12 4} Rd8 {+1.55/9 5} 31. e4 {+2.01/14 7} Ne5 {+1.54/8 2.7} 32. Rf1
{+1.24/14 7} Qc8 {+1.62/9 6} 33. Qf2 {+1.11/14 11} Nd7 {+1.47/9 6} 34. Qf5
{+1.93/12 4} Rde8 {+1.38/9 8} 35. Rf4 {+1.27/12 8} b5 {+1.75/9 5} 36. Kg2
{+0.99/12 8} Rxa6 {+1.85/9 5} 37. h5 {+0.49/13 8} Rae6 {+1.86/9 5} 38. h6
{+0.47/13 10} g6 {+1.31/11 8} 39. Qg4 {+0.27/15 10} Qc6 {+1.36/10 6} 40.
Qf3 {+0.49/15 12} Kg8 {+1.36/8 0.7} 41. Kh1 {+0.49/13 2.9} f5 {+1.69/9 7}
42. exf5 {+0.61/12 2.5} Rd6 {+1.48/10 12} 43. fxg6 {+0.46/13 3} Qxd5
{+1.04/10 8} 44. Qxd5+ {+0.14/15 4} Rxd5 {+0.60/10 2.0} 45. Rf7
{+0.02/16 6} Re2 {+0.66/11 6} 46. Rg7+ {+0.00/15 7} Kf8 {+0.15/13 10} 47.
Bb4+ {-0.21/15 3} Nc5 {+0.00/13 8} 48. Bxc5+ {+0.00/14 7} Rxc5 {+0.03/13 9}
49. gxh7 {-0.36/15 4} Rh5+ {+0.00/15 6} 50. Kg1 {-0.36/1 0.2} Rxh6
{+0.42/15 8} 51. Rg8+ {-0.21/15 3} Kf7 {+0.42/13 4} 52. h8=Q {-0.46/18 5}
Rxh8 {+0.40/14 8} 53. Rxh8 {-0.48/19 4} Rxc2 {+0.38/12 4} 54. b4
{-0.46/18 5} Kg6 {+0.28/12 7} 55. Rh4 {-0.38/15 2.9} Rb2 {+0.40/13 5} 56.
Rf4 {-0.33/21 4} Kh6 {+0.42/13 4} 57. Re4 {-0.32/18 3} Kh5 {+0.37/13 5} 58.
Re5+ {-0.25/20 6} Kg4 {+0.26/13 12} 59. Rxb5 {-0.25/20 9} Ra2 {+0.18/13 6}
60. Kf1 {-0.26/19 8} Kxg3 {+0.18/13 4} 61. Ke1 {-0.08/18 5} Kf4
{+0.09/13 5} 62. Kd1 {-0.13/18 3} Ke3 {+0.09/12 3} 63. Rd5 {-0.13/19 4} Rg2
{+0.06/11 4} 64. Kc1 {-0.08/18 9} Rg4 {+0.13/12 5} 65. b5 {-0.07/18 5} Rg7
{+0.09/12 3} 66. Kb2 {+0.00/19 5} Ke4 {+0.01/12 5} 67. Rh5 {+0.00/23 7} Kd4
{+0.02/12 4} 68. Ka3 {+0.00/23 7} Kc4 {+0.03/11 3} 69. Ka4 {+0.00/23 6} Rb7
{+0.02/11 2.9} 70. Rh4+ {+0.54/18 4} Kc5 {+0.00/12 4} 71. Rh5+ {+0.44/18 9}
Kb6 {+0.00/13 5} 72. Rh6+ {+0.96/24 4} Kc5 {+0.00/15 4} 73. Rc6+
{+0.96/28 7} Kd5 {+0.00/13 6} 74. Ka5 {+0.96/26 6} Rf7 {+0.00/14 7} 75. Ka6
{+0.96/25 8} Re7 {+0.00/13 5} 76. Rc1 {+0.96/25 17} Kd4 {+0.00/13 8} 77.
Rc8 {+0.96/21 6}
{User adjudication} 1/2-1/2[/pgn]
https://rwbc-chess.de

trollwatch:
Chessqueen + chessica + AlexChess + Eduard + Sylwy
Sergio Martinez
Posts: 1975
Joined: Fri Oct 05, 2012 2:35 pm
Location: Spain

Re: New engine releases

Post by Sergio Martinez »

Member of the CCRL Group. Write me if you want I test your engine.
User avatar
Guenther
Posts: 4605
Joined: Wed Oct 01, 2008 6:33 am
Location: Regensburg, Germany
Full name: Guenther Simon

Re: New engine releases

Post by Guenther »

Sergio Martinez wrote:New engine, Pleco:

http://kirill-kryukov.com/chess/discuss ... 26e0bf5821
Well the readme says it is inspired by Stockfish, which is no problem in itself...
...but if one looks at the eval it seems almost just being copied over from SF w/o mentioning a word about the origin of the source.

IMHO that is not koscher.

just an example:

https://github.com/sfleischman105/Pleco ... ch/eval.rs

Code: Select all

const CENTER: BitBoard = BitBoard((FILE_D | FILE_E) & (RANK_4 | RANK_5));
const QUEEN_SIDE: BitBoard = BitBoard(FILE_A | FILE_B | FILE_C | FILE_D);
const CENTER_FILES: BitBoard = BitBoard(FILE_C | FILE_D | FILE_E | FILE_F);
const KING_SIDE: BitBoard = BitBoard(FILE_E | FILE_F | FILE_G | FILE_H);

const KING_FLANK: [BitBoard; FILE_CNT] = [QUEEN_SIDE, QUEEN_SIDE, QUEEN_SIDE, CENTER_FILES, CENTER_FILES, KING_SIDE, KING_SIDE, KING_SIDE];

const KING_ATTACKS_WEIGHT: [i32; PIECE_TYPE_CNT] = [0, 0, 78, 56, 45, 11, 0, 0];


const MOBILITY_BONUS: [[Score; 32]; PIECE_TYPE_CNT] = [
[   Score::ZERO; 32], // No Piece
[   Score::ZERO; 32], // Pawns
[   Score(-75,-76), Score(-57,-54), Score( -9,-28), Score( -2,-10), Score(  6,  5), Score( 14, 12), // Knights
    Score( 22, 26), Score( 29, 29), Score( 36, 29), Score::ZERO,    Score::ZERO,    Score::ZERO,
    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,
    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,
    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,
    Score::ZERO,    Score::ZERO
],
[   Score(-48,-59), Score(-20,-23), Score( 16, -3), Score( 26, 13), Score( 38, 24), Score( 51, 42), // Bishops
    Score( 55, 54), Score( 63, 57), Score( 63, 65), Score( 68, 73), Score( 81, 78), Score( 81, 86),
    Score( 91, 88), Score( 98, 97), Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,
    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,
    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,
    Score::ZERO,    Score::ZERO
],
[   Score(-58,-76), Score(-27,-18), Score(-15, 28), Score(-10, 55), Score( -5, 69), Score( -2, 82), // Rooks
    Score(  9,112), Score( 16,118), Score( 30,132), Score( 29,142), Score( 32,155), Score( 38,165),
    Score( 46,166), Score( 48,169), Score( 58,171), Score::ZERO,    Score::ZERO,    Score::ZERO,
    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,
    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,    Score::ZERO,
    Score::ZERO,    Score::ZERO
],
[   Score(-39,-36), Score(-21,-15), Score(  3,  8), Score(  3, 18), Score( 14, 34), Score( 22, 54), // Queens
    Score( 28, 61), Score( 41, 73), Score( 43, 79), Score( 48, 92), Score( 56, 94), Score( 60,104),
    Score( 60,113), Score( 66,120), Score( 67,123), Score( 70,126), Score( 71,133), Score( 73,136),
    Score( 79,140), Score( 88,143), Score( 88,148), Score( 99,166), Score(102,170), Score(102,175),
    Score(106,184), Score(109,191), Score(113,206), Score(116,212), Score::ZERO,    Score::ZERO,
    Score::ZERO,    Score::ZERO
],
[   Score::ZERO; 32], // King
[   Score::ZERO; 32]  // All piece
];

const KING_PROTECTOR: [Score; PIECE_TYPE_CNT] = [Score(0,0), Score(0,0), Score(-3, -5), Score(-4, -3), Score(-3, 0), Score(-1, 1), Score(0,0), Score(0,0)];

// Outpost[knight/bishop][supported by pawn] contains bonuses for minor
// pieces if they can reach an outpost square, bigger if that square is
// supported by a pawn. If the minor piece occupies an outpost square
// then score is doubled.
const OUTPOST: [[Score; 2]; 2] = [
[ Score(22, 6), Score(36,12) ], // Knight
[ Score( 9, 2), Score(15, 5) ]  // Bishop
];


const ROOK_ON_FILE: [Score; 2] = [Score(20, 7), Score(45, 20)];

// ThreatByMinor/ByRook[attacked PieceType] contains bonuses according to
// which piece type attacks which one. Attacks on lesser pieces which are
// pawn-defended are not considered.
const THREAT_BY_MINOR: [Score; PIECE_TYPE_CNT] = [
    Score(0, 0), Score(0, 0), Score(0, 33), Score(45, 43), Score(46, 47), Score(72, 107), Score(48, 118), Score(0, 0)
];

const THREAT_BY_ROOK: [Score; PIECE_TYPE_CNT] = [
    Score(0, 0), Score(0, 0), Score(0, 25), Score(40, 62), Score(40, 59), Score(0, 34), Score(35, 48), Score(0, 0),
];

// ThreatByKing[on one/on many] contains bonuses for king attacks on
// pawns or pieces which are not pawn-defended.
const THREAT_BY_KING: [Score; 2] = [Score(3, 62), Score(9, 138) ];

// Passed[mg/eg][Rank] contains midgame and endgame bonuses for passed pawns.
// We don't use a Score because we process the two components independently.
const PASSED: [[Value; RANK_CNT]; 2] = [
    [ 0, 5,  5, 31, 73, 166, 252, 0 ],
    [ 0, 7, 14, 38, 73, 166, 252, 0 ]
];

// PassedFile[File] contains a bonus according to the file of a passed pawn
const PASSED_FILE: [Score; FILE_CNT] = [
Score(  9, 10), Score( 2, 10), Score( 1, -8), Score(-20,-12),
Score(-20,-12), Score( 1, -8), Score( 2, 10), Score(  9, 10)
];

const RANK_FACTOR: [i32; RANK_CNT] = [ 0, 0, 0, 2, 6, 11, 16, 0];

// Assorted bonuses and penalties used by evaluation
const MINOR_BEHIND_PAWN: Score = Score( 16,  0);
const BISHOP_PAWNS          : Score = Score(  8, 12);
const LONG_RANGED_BISHOP     : Score = Score( 22,  0);
const ROOK_ON_PAWN           : Score = Score(  8, 24);
const TRAPPED_ROOK          : Score = Score( 92,  0);
const WEAK_QUEEN            : Score = Score( 50, 10);
const CLOSE_ENEMIES         : Score = Score(  7,  0);
const PAWNLESS_FLANK        : Score = Score( 20, 80);
const THREAT_BY_SAFE_PAWN     : Score = Score(192,175);
const THREAT_BY_RANK         : Score = Score( 16,  3);
const HANGING              : Score = Score( 48, 27);
const WEAK_UNOPOSSED_PAWN    : Score = Score(  5, 25);
const THREAT_BY_PAWN_PUSH     : Score = Score( 38, 22);
const THREAT_BY_ATTACK_ON_QUEEN : Score = Score( 38, 22);
const HINDER_PASSED_PAWN     : Score = Score(  7,  0);
const TRAPPED_BISHOP_A1H1    : Score = Score( 50, 50);


// Penalties for enemy's safe checks
const QUEEN_SAFE_CHECK: i32  = 780;
const ROOK_SAFE_CHECK: i32   = 880;
const BISHOP_SAFE_CHECK: i32 = 435;
const KNIGHT_SAFE_CHECK: i32 = 790;
https://github.com/official-stockfish/S ... aluate.cpp

Code: Select all

constexpr Bitboard QueenSide   = FileABB | FileBBB | FileCBB | FileDBB;
  constexpr Bitboard CenterFiles = FileCBB | FileDBB | FileEBB | FileFBB;
  constexpr Bitboard KingSide    = FileEBB | FileFBB | FileGBB | FileHBB;
  constexpr Bitboard Center      = (FileDBB | FileEBB) & (Rank4BB | Rank5BB);

  constexpr Bitboard KingFlank[FILE_NB] = {
    QueenSide,   QueenSide, QueenSide,
    CenterFiles, CenterFiles,
    KingSide,    KingSide,  KingSide
  };

  // Threshold for lazy and space evaluation
  constexpr Value LazyThreshold  = Value(1500);
  constexpr Value SpaceThreshold = Value(12222);

  // KingAttackWeights[PieceType] contains king attack weights by piece type
  constexpr int KingAttackWeights[PIECE_TYPE_NB] = { 0, 0, 78, 56, 45, 11 };

  // Penalties for enemy's safe checks
  constexpr int QueenSafeCheck  = 780;
  constexpr int RookSafeCheck   = 880;
  constexpr int BishopSafeCheck = 435;
  constexpr int KnightSafeCheck = 790;

#define S(mg, eg) make_score(mg, eg)

  // MobilityBonus[PieceType-2][attacked] contains bonuses for middle and end game,
  // indexed by piece type and number of attacked squares in the mobility area.
  constexpr Score MobilityBonus[][32] = {
    { S(-75,-76), S(-57,-54), S( -9,-28), S( -2,-10), S(  6,  5), S( 14, 12), // Knights
      S( 22, 26), S( 29, 29), S( 36, 29) },
    { S(-48,-59), S(-20,-23), S( 16, -3), S( 26, 13), S( 38, 24), S( 51, 42), // Bishops
      S( 55, 54), S( 63, 57), S( 63, 65), S( 68, 73), S( 81, 78), S( 81, 86),
      S( 91, 88), S( 98, 97) },
    { S(-58,-76), S(-27,-18), S(-15, 28), S(-10, 55), S( -5, 69), S( -2, 82), // Rooks
      S(  9,112), S( 16,118), S( 30,132), S( 29,142), S( 32,155), S( 38,165),
      S( 46,166), S( 48,169), S( 58,171) },
    { S(-39,-36), S(-21,-15), S(  3,  8), S(  3, 18), S( 14, 34), S( 22, 54), // Queens
      S( 28, 61), S( 41, 73), S( 43, 79), S( 48, 92), S( 56, 94), S( 60,104),
      S( 60,113), S( 66,120), S( 67,123), S( 70,126), S( 71,133), S( 73,136),
      S( 79,140), S( 88,143), S( 88,148), S( 99,166), S(102,170), S(102,175),
      S(106,184), S(109,191), S(113,206), S(116,212) }
  };

  // Outpost[knight/bishop][supported by pawn] contains bonuses for minor
  // pieces if they occupy or can reach an outpost square, bigger if that
  // square is supported by a pawn.
  constexpr Score Outpost[][2] = {
    { S(22, 6), S(36,12) }, // Knight
    { S( 9, 2), S(15, 5) }  // Bishop
  };

  // RookOnFile[semiopen/open] contains bonuses for each rook when there is
  // no (friendly) pawn on the rook file.
  constexpr Score RookOnFile[] = { S(20, 7), S(45, 20) };

  // ThreatByMinor/ByRook[attacked PieceType] contains bonuses according to
  // which piece type attacks which one. Attacks on lesser pieces which are
  // pawn-defended are not considered.
  constexpr Score ThreatByMinor[PIECE_TYPE_NB] = {
    S(0, 0), S(0, 31), S(39, 42), S(57, 44), S(68, 112), S(47, 120)
  };

  constexpr Score ThreatByRook[PIECE_TYPE_NB] = {
    S(0, 0), S(0, 24), S(38, 71), S(38, 61), S(0, 38), S(36, 38)
  };

  // ThreatByKing[on one/on many] contains bonuses for king attacks on
  // pawns or pieces which are not pawn-defended.
  constexpr Score ThreatByKing[] = { S(3, 65), S(9, 145) };

  // PassedRank[Rank] contains a bonus according to the rank of a passed pawn
  constexpr Score PassedRank[RANK_NB] = {
    S(0, 0), S(5, 7), S(5, 13), S(32, 42), S(70, 70), S(172, 170), S(217, 269)
  };

  // PassedFile[File] contains a bonus according to the file of a passed pawn
  constexpr Score PassedFile[FILE_NB] = {
    S(  9, 10), S(2, 10), S(1, -8), S(-20,-12),
    S(-20,-12), S(1, -8), S(2, 10), S(  9, 10)
  };

  // PassedDanger[Rank] contains a term to weight the passed score
  constexpr int PassedDanger[RANK_NB] = { 0, 0, 0, 2, 7, 12, 19 };

  // KingProtector[PieceType-2] contains a penalty according to distance from king
  constexpr Score KingProtector[] = { S(3, 5), S(4, 3), S(3, 0), S(1, -1) };

  // Assorted bonuses and penalties
  constexpr Score BishopPawns        = S(  8, 12);
  constexpr Score CloseEnemies       = S(  7,  0);
  constexpr Score Connectivity       = S(  3,  1);
  constexpr Score CorneredBishop     = S( 50, 50);
  constexpr Score Hanging            = S( 52, 30);
  constexpr Score HinderPassedPawn   = S(  8,  1);
  constexpr Score KnightOnQueen      = S( 21, 11);
  constexpr Score LongDiagonalBishop = S( 22,  0);
  constexpr Score MinorBehindPawn    = S( 16,  0);
  constexpr Score PawnlessFlank      = S( 20, 80);
  constexpr Score RookOnPawn         = S(  8, 24);
  constexpr Score SliderOnQueen      = S( 42, 21);
  constexpr Score ThreatByPawnPush   = S( 47, 26);
  constexpr Score ThreatByRank       = S( 16,  3);
  constexpr Score ThreatBySafePawn   = S(175,168);
  constexpr Score TrappedRook        = S( 92,  0);
  constexpr Score WeakQueen          = S( 50, 10);
  constexpr Score WeakUnopposedPawn  = S(  5, 25);

https://rwbc-chess.de

trollwatch:
Chessqueen + chessica + AlexChess + Eduard + Sylwy