DeepBlunder - UCI chess engine written from scratch in C++.
Author: Brandon Boettcher
New version of the new chess engine. Small file size, after packing with the source code only 112 kb!
For now, we have the first tournament with the previous version of this engine behind us, we will post the results today.
Version 1.2.0:
In v1.2.0, DeepBlunder finally gets a decent evaluation function. This function is based on:
The material of each side.
The value of a piece on a certain square, given by PieceSquare tables.
Pawn structure:
Bonus for passed and protected pawns.
Penalty for backwards, doubled, isolated, and blocked pawns.
Knights:
Bonus for proximity to the enemy king
Bonus for every friendly blocked pawn (favor closed positions)
Bishops:
Bonus for having both bishops (bishop pair).
Bonus for being on the same diagonal as enemy king/queens/rooks.
Bonus for friendly pawns on the opposite color
Penalty for friendly pawns on the same color
Penalty for being blocked by a friendly pawn.
Rooks:
Bonus for being connected to another rook.
Bonus for being on an open file.
Bonus for being on the same rank/file as the enemy king/queens.
Queens:
Bonus for being on the same file/rank/diagonal as enemy king/rooks.
Bonus for proximity to the enemy king.
King Safety:
Penalty for enemy pieces attacking squares around the king.
Penalty for king being on an open file.
Penalty for pushing pawns in front of the king.
Penalty for open diagonals around the king (length of diagonal matters).
Penalty for not being castled.
King safety concerns lesson as remaining enemy material decreases.
Control / Mobility:
Bonus for controlling central squares.
Penalty for pieces being very immobile (<= 2 moves available).
Based on self-testing, v1.2.0 is around 200 ELO stronger than the previous release (v1.1.9) and around 300 ELO stronger than the initial release (v1.0.0).
Additional Changes:
Increase material values for knights and bishops (to discourage giving up a piece for 3 pawns)
Add endgame-specific PieceSquare table for kings
Move debug functions to debug.cpp
Add member variable 'hasCastled[2]' to the Board class
Improve history heuristic
Comments
Post a Comment