Difference between revisions of "ChessCore"

From Chessprogramming wiki
Jump to: navigation, search
(Created page with "'''Home * Engines * ChessCore''' FILE:OnlineChessSmall.jpg|border|right|thumb|link=https://web.archive.org/web/20120105083121/http://www.chessbin.com/| Ch...")
 
 
(2 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
'''ChessCore''', (ChessBin.com)<br/>
 
'''ChessCore''', (ChessBin.com)<br/>
 
a chess engine by [[Adam Berent]], written in [[C sharp|C#]].  
 
a chess engine by [[Adam Berent]], written in [[C sharp|C#]].  
The ''ChessBin.com'' chess engine was documented in a blog format, and has been converted to cross-platform [https://en.wikipedia.org/wiki/.NET_Core .NET Core] dubbed '''ChessCore''', [[:Category:Open Source|open source]] under the [[Massachusetts Institute of Technology#License|MIT License]] published on [https://en.wikipedia.org/wiki/GitHub GitHub] <ref>[https://github.com/3583Bytes/ChessCore GitHub - 3583Bytes/ChessCore: Chess Engine Implemented in .net core]</ref>.
+
The ''ChessBin.com'' chess engine was documented in a blog format <ref>[[Adam Berent]] ('''2014'''). ''Guide to Programming a Chess Engine''. [https://www.adamberent.com/wp-content/uploads/2019/02/GuideToProgrammingChessEngine.pdf pdf]</ref>, and has been converted to cross-platform [https://en.wikipedia.org/wiki/.NET_Core .NET Core] dubbed '''ChessCore''', [[:Category:Open Source|open source]] under the [[Massachusetts Institute of Technology#License|MIT License]] published on [https://en.wikipedia.org/wiki/GitHub GitHub] <ref>[https://github.com/3583Bytes/ChessCore GitHub - 3583Bytes/ChessCore: Chess Engine Implemented in .net core]</ref>.
 
The program makes heavy use of the .NET Core [https://en.wikipedia.org/wiki/Garbage_collection_(computer_science) garbage collector] (GC)
 
The program makes heavy use of the .NET Core [https://en.wikipedia.org/wiki/Garbage_collection_(computer_science) garbage collector] (GC)
 
<ref>[https://www.tutorialspoint.com/dotnet_core/dotnet_core_garbage_collection.htm .NET Core - Garbage Collection - Tutorialspoint]</ref> and is mentioned as buggy in  [[Ron Murawski|Ron Murawski's]] engine list <ref>[http://computer-chess.org/doku.php?id=computer_chess:wiki:lists:chess_engine_list Chess Engine List] from [[Ron Murawski|Ron Murawski's]] [http://computer-chess.org/doku.php?id=home Computer-Chess Wiki]</ref>.
 
<ref>[https://www.tutorialspoint.com/dotnet_core/dotnet_core_garbage_collection.htm .NET Core - Garbage Collection - Tutorialspoint]</ref> and is mentioned as buggy in  [[Ron Murawski|Ron Murawski's]] engine list <ref>[http://computer-chess.org/doku.php?id=computer_chess:wiki:lists:chess_engine_list Chess Engine List] from [[Ron Murawski|Ron Murawski's]] [http://computer-chess.org/doku.php?id=home Computer-Chess Wiki]</ref>.
  
 
=Evaluate Moves=
 
=Evaluate Moves=
One sample of ChessCore's extensive GC usage demonstrates its [[Alpha-Beta]] search - at each [[Node|node]], it allocates the [[Move List|move list]] and each generated [[Moves|move]] on the [[Data#Dynamic Data|heap]] <ref>[https://github.com/3583Bytes/ChessCore/blob/master/ChessCoreEngine/Search.cs#L406 ChessCore/Search.cs at master · 3583Bytes/ChessCore · GitHub - private static List<Position> EvaluateMoves(Board examineBoard, byte depth)]</ref>:
+
One sample of ChessCore's extensive GC usage demonstrates its [[Alpha-Beta]] search - at each [[Node|node]] it [[Move Generation|generates]] and sorts all moves (or [[Captures|captures]] in [[Quiescence Search|quiescence]]) <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=7&t=30265&start=4 Re: I need help, performance wall!] by [[Sven Schüle]], [[CCC]], October 21, 2009</ref>, and allocates the [[Move List|move list]] and each generated [[Moves|move]] on the [[Data#Dynamic Data|heap]] <ref>[https://github.com/3583Bytes/ChessCore/blob/master/ChessCoreEngine/Search.cs#L406 ChessCore/Search.cs at master · 3583Bytes/ChessCore · GitHub - private static List<Position> EvaluateMoves(Board examineBoard, byte depth)]</ref>:
 
For some reason, internal class ''position'' encapsulates the move.   
 
For some reason, internal class ''position'' encapsulates the move.   
 
<pre>
 
<pre>
Line 28: Line 28:
 
}
 
}
 
</pre>
 
</pre>
 +
=Publications=
 +
* [[Adam Berent]] ('''2014'''). ''Guide to Programming a Chess Engine''. [https://www.adamberent.com/wp-content/uploads/2019/02/GuideToProgrammingChessEngine.pdf pdf]
 +
 
=Forum Posts=
 
=Forum Posts=
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=29027 New Member Introduction] by [[Adam Berent]], [[CCC]], July 19, 2009
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=30265 I need help, performance wall!] by [[Adam Berent]], [[CCC]], October 21, 2009
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=6&t=31312 ChessBin 00.59] by [[Harun Taner]], [[CCC]], December 28, 2009  
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=6&t=31312 ChessBin 00.59] by [[Harun Taner]], [[CCC]], December 28, 2009  
  
Line 41: Line 46:
 
'''[[Engines|Up one level]]'''
 
'''[[Engines|Up one level]]'''
 
[[Category:Open Source]]
 
[[Category:Open Source]]
 +
[[Category:MIT]]
 
[[Category:C sharp]]
 
[[Category:C sharp]]
 
[[Category:WinBoard]]
 
[[Category:WinBoard]]

Latest revision as of 20:35, 25 August 2020

Home * Engines * ChessCore

ChessBin.com chess [1]

ChessCore, (ChessBin.com)
a chess engine by Adam Berent, written in C#. The ChessBin.com chess engine was documented in a blog format [2], and has been converted to cross-platform .NET Core dubbed ChessCore, open source under the MIT License published on GitHub [3]. The program makes heavy use of the .NET Core garbage collector (GC) [4] and is mentioned as buggy in Ron Murawski's engine list [5].

Evaluate Moves

One sample of ChessCore's extensive GC usage demonstrates its Alpha-Beta search - at each node it generates and sorts all moves (or captures in quiescence) [6], and allocates the move list and each generated move on the heap [7]: For some reason, internal class position encapsulates the move.

private static List<Position> EvaluateMoves(Board examineBoard, byte depth) {
  ...
  List<Position> positions = new List<Position>();
  for (byte x = 0; x < 64; x++) { ...
    Piece piece = examineBoard.Squares[x].Piece;
    ... continue if empty or opponent piece
    foreach (byte dst in piece.ValidMoves) { ...
      Position move = new Position(x, dst);
      ... Score move, killers, etc ..
      positions.Add(move); 
    }
  }
  return positions;
}

Publications

Forum Posts

External Links

References

Up one level