Skip to content

Latest commit

 

History

History
379 lines (323 loc) · 13.5 KB

Version History.md

File metadata and controls

379 lines (323 loc) · 13.5 KB

#Kenny ClassIQ

  • Author: Kenshin Himura (Sudarsan Balaji)
  • License: GNU GPL v3 (see COPYING.txt)
  • Latest Application Version: 0.3 build 3238
  • Latest Stable Version: 0.2 (Versioning)
  • Version History Document Version: 1.6

##Version History

####Version 0.3 (3238)

  • Fixed a lot of issues.
  • Fixed improper PV.
  • Fixed invalid moves being made (white made moves twice consecutively).
  • Corrected problem with isChecked().
  • Corrected error in Quiescence Search where it would call itself repeatedly if score is greater than 300 centipawns after a capture, leading to engine crash.
  • Added proper PV collection, normal alphaBetaPVS and alphaBetaPVS with PV collection and corrected bugs in quiescence search.
  • Reduced fixed search depth to 2 half moves.
  • Added separate getMaterialScore() function to improve move-ordering immediately after generation.
  • AI still buggy when dealing with promotion-related moves, but bug relating to castling where rooks would not be moved in the internal board fixed.
  • Lots of stability improvements and bugfixes, which should have made separate versions (like 0.2.1) have been refined and finally ended up in 0.3

####Version 0.2 (2771)

  • Lots of bugfixes.
  • Added evaluation.
  • Added minimax search with alpha-beta pruning.
  • Corrected UCI output.
  • Corrected Executor errors.
  • Renamed threads.
  • Corrected issues #151, #152.
  • Engine now plays okay-okay moves with 3 depths (fixed for now, will be dynamic later).
  • No time-related implementation.
  • Made protocolType of Main public so output strings can be properly formatted according to the GUI.
  • Re-added the boolean newCommand in Command.
  • Corrected errors in makeMove() and unMakeMove() which did not implement proper castling.
  • Implemented Quicksort in move ordering.
  • Removed Windows executables and added jLaunch executable. (32-bit only)

#####Version 0.1.3 (2198)

  • Fixed issues #144 and #150.
  • Corrected errors in enPassantSquare generation.
  • Corrected errors in isChecked().
  • Added scores.
  • Added MakeBestMove ability..
  • Added MakeBestMoveTest, to test it.
  • Made various bugfixes and improvements.

#####Version 0.1.2 (2156)

  • Fixed issues #142, #146, and #147
  • Added proper UCI support.
  • Added enPassant Move Generation.
  • Updated debug messages.

#####Version 0.1.1 (2097)

  • Fixed #143.
  • Fixed buggy UCI driver, now both UCI and WinBoard drivers are at the same level.
  • Added and implemented support for d command, which can be used to display the stats of the Game.
  • Improved Game, Executor, UCIExecutor and XBoardExecutor.
  • Added printStats() to Game.
  • Optimized Move construction.
  • Corrected major issue with promotion moves' setting of moveString.

####Version 0.1 (2081) - First Playable Version (nickname Shinta)

  • Tested a thousand times. Playable, doesn't crash. First stable release.
  • Simply plays the first move it can find. Don't expect searches or evaluations in the first playable version.
  • Added legal-move-checking. Was a huge pain, but my efforts weren't in vain.
  • Improved Player, Game, Board, AI, Move, Executor, XBoardExecutor, UCIExecutor, and probably any class you can name.
  • Plays legal move it generates.
  • Can Play both sides.
  • Can play in both UCI and XBoard modes.
  • Fixed lots of major crashes.
  • Fixed lots of errors in the undocumented builds. Woah! Took me a hell of a time to clear all those.
  • Made installer and hosted it on sourceforge.

#####Version 0.0.17 (1698)

  • Improved Player.
  • Added promotion moves to Pawn.
  • Improved Move for promotion.
  • Improved XBoard, Uci.
  • Improved Player's makeMove() for promotion.
  • Changed version output.
  • Changed exe's and names.
  • Included jlaunch.

#####Version 0.0.16 (1677)

  • Yes, the updates are coming in a frenzy!
  • Added basic UCI support. Now engine supports both UCI and XBoard
  • Improved Player.
  • Improved AI.
  • Improved Game.
  • Improved FENTest.
  • Improved XBoardExecutor.
  • Tested a lot! Even Demo mode in "Arena" works now!

#####Version 0.0.15 (1453)

  • Made the engine playable.
  • Improved Player.
  • Improved Executor
  • Improved XBoardExecutor by adding implementations for new, usermove and setboard.
  • Improved Game.
  • Improved QueenMoveGenTest.
  • Added getMove() to AI.
  • Added GetMoveTest, a jUnit Test Case.

#####Version 0.0.14 (1236)

  • Removed Diagonal.
  • Removed instances of Diagonal from Board.
  • Improved Piece.
  • Added missing commentary for the newly implemented move generation functions, including those in Square and Piece.

######Version 0.0.13.5 (1221)

  • Added move generation for Queen.
  • Added QueenMoveGenTest, a jUnit Test Case to test if the move generator works properly.

######Version 0.0.13.4 (1203)

  • Added move generation for Rook.
  • Added RookMoveGenTest, a jUnit Test Case to test if the move generator works properly.

######Version 0.0.13.3 (1187)

  • Optimized certain functions of Piece.
  • Added move generation for Bishop.
  • Improved Knight.
  • Added BishoPMoveGenTest, a jUnit Test Case.

######Version 0.0.13.2 (1145)

  • Improved and optimized move generation of King and Pawn.
  • Added Knight move generation.
  • Improved Piece.
  • Added KnightMoveGenTest, a jUnit Test Case.

######Version 0.0.13.1 (1123)

  • Improved Move.
  • Improved Piece,Pawn.
  • Added move generation for King.
  • Added KingMoveGenTest, a jUnit Test Case.

#####Version 0.0.13 (1099)

  • Improved Square.
  • Improved Move, Game and Piece.
  • Changed moveOutput.
  • Corrected certain function definitions.
  • Corrected certain comment blocks.
  • Added PawnMoveGenTest, a jUnit Test Case.

######Version 0.0.12.4 (1086)

  • Modified Square.
  • Improved Board.
  • Corrected minor errors in Move.
  • Improved Rank, File.
  • Added a lot of new methods.
  • Added OccupiedSquaresTest and CanMoveToTest, jUnit Test Cases.

######Version 0.0.12.3 (1061)

  • Added all missing javadoc commentary.
  • Fixed issue #116.
  • Improved Square, Move and Player.

######Version 0.0.12.2 (1056)

  • Fixed issue #113.
  • Made makeMove() and unMakeMove to set and reset enPassantSquare of Game.
  • Modified identification of Pawn in various places.
  • Improved MakeMoveTest to include enPassantSquare implementation test.

######Version 0.0.12.1 (1004)

  • Fixed issue #112.
  • makeMove() and unMakeMove() now set and reset castlingRights of Game.
  • Improved Move, Player and Game.
  • Improved MakeMoveTest jUnit Test Case.

#####Version 0.0.12 (990)

  • Yep, a major jump! Added FEN implementation, fixed issue #51.
  • Updated Game construction to use FEN strings.
  • Removed defualt Game constructor.
  • Removed setupBoard() from Game.
  • Removed halfMoveNumber from Game.
  • Added moveNumber, enPassantSquare, and castlingRights to Game.
  • Added startPositionFEN to Definitions.
  • Updated Player to support moveNumber instead of halfMoveNumber.
  • Added FENTest jUnit Test Case, to showcase FEN implementation.

#####Version 0.0.11 (930)

  • Added halfMoveClock for FEN and 50-Moves Rule.
  • Improved Move.
  • Improved makeMove() and unMakeMove() to work with the change.
  • Added HalfMoveTest.

######Version 0.0.10.3 (911)

  • Improved halfMoveNumber of Game.
  • Fixed issue #104.
  • Added ability of players to change the halfMoveNumber when they make a Move.
  • Improved MakeMoveTest, the jUnit Test Case.
  • Added printMainLine to Game.

######Version 0.0.10.2 (892)

  • Corrected setFeatures output.
  • Removed redundant "feature" output.
  • Changed when Executor executes.

######Version 0.0.10.1 (876)

  • Improved moveList of Game, made it an ArrayList.
  • Implemented updation of moveList in Game with every makeMove() and unMakeMove() of Player.
  • Made jUnit Test Case MakeMoveTest capable of testing this updation.

#####Version 0.0.10 (853)

  • Added makeMove().
  • Added unMakeMove().
  • Improved Game.
  • Improved Board.
  • Fixed issue #62.

######Version 0.0.9.2 (797)

  • Updated UCI.
  • Updated UCIExecutor.
  • Updated XBoard, removed uciConsole.
  • Fixed issue #58

######Version 0.0.9.1 (773)

  • Fixed issue #91.
  • Deleted newCommand and added commandArray.
  • Greatly improved XBoard driver implementation.
  • Added debug messages when unimplemented commands are met with.

#####Version 0.0.9 (748)

  • Reopened issue #64.
  • Removed legalMove, only legal moves should be generated, so not required.
  • Added capturingMove.
  • Added proper Move commentary.
  • Added improved MoveTest (jUnit Test Case).

######Version 0.0.8.4 (722)

  • Added checkingMove.
  • Added matingMove.
  • Added legalMove.
  • Improved Player, Move, XBoardExecutor.
  • Fixed issue #64.

######Version 0.0.8.1 (697) - 0.0.8.3 (712)

  • Added Executor commentary.
  • Added UCIExecutor commentary.
  • Added XBoardExecutor commentary.
  • Added Listener commentary.
  • Added InputThread commentary.
  • Added GUIConsole commentary.
  • Improved XBoard and UCI.
  • Fixed issue #4.

#####Version 0.0.8 (693)

  • Fixed issues #84,#85,#87
  • Rewrote large volumes of code to implement new console interaction.
  • Added InputThread, Listener, Executor, GUIConsole.
  • Added UCIExecutor, XBoardExecutor.

######Version 0.0.7.1 (482) - 0.0.7.3 (511)

  • Modified start() of XBoard to allow for listening.
  • Various optimizations.
  • Inputs from console still buggy.
  • Stilll missing certain commands from console, raised issue.

#####Version 0.0.7 (476)

  • Changed System.console().readLine() to BuffereedReader reading.
  • Major code revisions on implementation of input reading from the console.
  • Added validate() to validate input commands from the console.
  • Improved listen() of XBoard.
  • Re-organized com.kenny.classiq.protocols
  • Wrote GUIConsole
  • Wrote InputThread

######Versions 0.0.6.2 (342) - 0.0.6.5 (397)

  • Modified Xboard to properly read protover 2.
  • Changed Scanner.nextLine() to System.console().readLine().
  • Fixed various memory leaks and redundant input-console-read issues.

######Version 0.0.6.1 (323)

  • Made Scanner a member of Xboard.
  • Made commandString and cmdString members of XBoard.
  • Modified init() of Xboard.

#####Version 0.0.6 (317)

  • Greatly enhanced Move.
  • Added full commentary to Move.
  • Implemented a lot of ways to construct a Move.
  • Fixed issue #77
  • Added jUnit test for Move. Worked great!
  • Improved Game.
  • Greatly improved Board.

######Version 0.0.5.3 (266)

  • Added messages before start.

######Version 0.0.5.2 (264)

  • Removed KennyClassIQ.exe
  • Added x86 exe.
  • Added x64 exe.

######Version 0.0.5.1 (256)

  • Fixed issue #69
  • Corrected GUI, User registering as AI.
  • Modified Versioning and Version History Document.

#####Version 0.0.5 (253)

  • Added AI from Player.
  • Added User from Player.
  • Added GUI from Player.
  • Reorganized com.kenny.classiq.players
  • Reorganized com.kenny.classiq.game

######Version 0.0.4.4 (225)

  • Added halfMoveNumber to take care of turns in Game.

######Version 0.0.4.3 (221)

  • Fixed issues #44, #45.
  • Added Game commentary.
  • Added showBoard() to Game.
  • Modified toString() of Move.
  • Modified getShortAlgebraicNotation() of Piece.

######Version 0.0.4.2 (192)

  • Added printBoard()
  • Added Board, Square commentary.
  • Fixed issues #43, #46.
  • Tested Branch-Merge.

######Version 0.0.4.1 (174)

  • Complete PieceSet, with full commentary.
  • Improved Diagonals, Ranks, Files, Board.
  • Added commentary and re-organized Main.
  • Solved issues #20, #21, #22.

#####Version 0.0.4 (156)

  • Removed nesting of Square in Board.
  • Re-organized the com.kenny.classiq.board package.
  • Improved Board, pending comments.
  • Improved Square, pending comments.
  • Added PieceSet, with comments.
  • Re-organized Move.
  • Added Player, with full commentary.

#####Version 0.0.3 (140)

  • Started coding for Game.
  • Added Move, fully commented.
  • Improved Piece, pending comments.
  • Improved Board.Square, pending comments.

######Version 0.0.2.2 (121)

  • Added Piece commentary.
  • Re-organized the source into different packages.
  • Added derived classes from Piece representing each piece.
  • Playable versions to start from version 0.1

######Version 0.0.2.1 (89)

  • Added setFeatures() function in the XBoard class.
  • Added javadoc commentary for Definitions.
  • Created uciConsole inside XBoard to facilitate switching in case of auto-detection.
  • Added execute function definitions in XBoard.

#####Version 0.0.2 (71)

  • Started defining Piece, Board, and Square.
  • Included Definitions.
  • Modified CommunicationProtocol interface, again(!).
  • Modified XBoard communication and included error messages.
  • All code from this version will by default carry javadoc commentary.

######Version 0.0.1.1 (51)

  • Modified the CommunicationProtocol interface.
  • Worked on accepting XBoard commands, now the minimum commands to run the engine are properly read and identified.
  • Added javadoc commentary to make sure people (myself included) understand what's going on.
  • Got to know today that this engine can be 10-100 times slower than my CPP engine Kenny. Have to write better evaluation functions than in Kenny, to overcome this disadvantage.

#####Version 0.0.1 (34)

  • XBoard, UCI (classes, if names are in PascalCase hereafter) started to be defined.
  • init() functions created for both protocols.
  • Unplayable, but gaining confidence that I'll learn both protocols soon.
  • Added binary files for testing purposes (included executable jars and a win-32 exe to add as an engine in GUIs!)

###Version 0 (17)

  • Started to code.
  • Nothing there yet.
  • First Commit.