VER 2.96 -some code cleanup -some speed tweaks -slight search tweaks (to search a few less useless nodes.) -includes code to use some 4 piece W/D/L bitbases, where 2.94 only used the KPK.sbb VER 2.94 -Source Code clarity increased somewhat, assembly language removed -Various Speed Tweaks (~8% faster on my computer, I'm not sure if this holds for other computers.) -Eval Changes, for code clarity and maybe more pleasing play. -A few time control changes, mainly for aesthetic reasons. ie. sometimes recaps quicker, or at strange times (something to do with fail-lows) it will think for a longer time. -Fixed a couple bugs VER 2.93a - UCI support, not sure if it completely works, but it seems to. VER 2.93 - Various GUI fixes. Also Analyze button now goes in/out of analyze mode instead of doing a single analysis. 'Net play can have takebacks, and "/list" as a command that can be typed in the chat window. Added to/formatted the displayed info a bit , play null move develop option added, ... - Weak Single-Session Defensive Book learning under winboard. This will endeavour to not play exactly the same line from the book if it resulted in a loss, but never saves its changes. This should make it harder for an engine (or person) to repeat the same wins against Slow in a single match. - Many various small bugfixes in evaluation mainly, done in very tiny updates over the months. - Better evaluation of some late endgames (Pawn endgames, opposite bishops, knights, etc.) General liquidation bonuses are toned down. (The idea is to try to give bonuses to specific endgames instead, but haven't gotten very far on that.) - Some new Kingsafety Extensions to find a few specific types of attacks a ply earlier. Also added a few missing cases of mate threats, would probably be best to generalize threats further. - In the Quiescence Search: Now searches single or 2 responses to checks, and doesn't futility prune checks. Still doesn't do real checks, but just using incidental capture checks finds a few moves much quicker, with minimal slowdown overall. So recogonizing mates in the Qsearch is starting to make sense, I'd still want to do much more here if I find time. - Adaptive null move reduction, R=3 if depth > 6 && Material > 1 Queen, otherwise R=2. I tried this a long time ago, and it made things clearly worse over always R=2 for some reason, but this time it seems to be an improvement. - Did something weird with nullmove that resulted a few less nodes searched, forgot what. Also now checks/updates the Transposition Table directly before and after a nullmove search. (Why? I don't know) - Quantized evaluation except deep endgame or values < .04. This seems to result in a few less nodes searched. The evaluation isn't very accurate anyway, so I don't think this purposeful loss of precision will hurt. - Book updated a bit more. (Removed a few losing lines, added a few lines to avoid going into some early losses once out of the book.) Note: Book was updated twice, while the version was at 2.89b VER 2.89b (Bug Fixes to 2.89a) - 2.89a would fail to recognize promotions causing check in the Q-search, in some situations causing search insanity and really wrong evals (possibly even crashing??). This has been fixed. As serious as this sounds I don't think it happens enough to alter playing strength noticeably. - It only considered underpromotion to a bishop to block check. Not likely to hurt, but this mistake could possibly cause a really wrong eval. This small bug has now been fixed. VER 2.89a -Now searches underpromotions to a knight. (It actually can search any underpromotion, but I turned the others off since it is very very unlikely that they could change a game result. Still, sometime I should allow them to be turned on, or test/tune them to make sure they don't change node count noticable then leave them on.) VER 2.89 (I'm writing this from memory, I probably forgot a lot, or haven't explained some things well. These are only the engine changes, there were many GUI changes too.) - Opening Book has been updated some. (I only update to try to avoid being nearly lost directly out of the opening book.) - Passed pawn squares for each side are now stored in pawn hash entry. - Bonus for King supporting passed pawns in the endgame. This seems to help often. The bonus isn't given (or maybe just lessened?) when the enemy king is close enough to stop the pawn. The Bonus is based on how close to promoting the pawn is, and is increased when there's only 1 enemy piece on the board (is biggest when the enemy piece is a rook, since the rook has to trade itself to stop the pawn.) - Endgame Pawn Races are evaluated when one or both sides have only a king. If an enemy king can't possibly reach a passed pawn in time to stop it from promoting, and that pawn can promote before any unstoppable enemy passed pawns, a rather large bonus is given. If there are split passers and the horizontal distance is far enough that if the king took one the other could promote, it's considered as an unstoppable pawn too. Also if a king is close enough to defend the pawn and the queening square from the enemy king, that pawn is considered unstoppable, (I only test this when the pawn is on at least the 6th rank to keep the logic simple.) - In Pawn endgames if a side has an outside passed pawn it gets a bonus. (Also when having the enemy king outside of all pawns with your king next to the pawns.) - added Rook behind passed pawn bonus. (It was didn't work right in older versions.) - Large bonus for connected pawns on 6th or more rank when the enemy has only a rook. And the enemy king isn't close enough to stop them. - Various endgame value tweaks - Various midgame value tweaks - King pawn cover code changed slightly. - Bonus given to attacking queen when a king has low/no pawn cover - Piece tropism bonus increased slightly when king as low/no pawn cover. - For king safety there are now 3 stages (based on material on the board) instead of just normal and endgame. - Primitive Knight outpost bonus (uses a Sq table), for knights supported by pawns. - Primitive Rook outpost bonus for rooks supported by pawns on 6th, 7th or 8th rank. - Penalty for Bishops diagonally right behind friendly pawns. (Someday I'll actually do bishops right.) - Penalty for Bishops possibly trapped behind enemy pawns at A7/H7, etc. - Penalty for a king trapping a rook at A1/H1, etc. - Weak pawns (isolated, backward, etc.) are penalized more when on half-open files than closed files. - Bonus for rook attacking weak pawns on half open files - Connected passed pawns are given a bonus based on rank (even if the connected pawn isn't also a passed pawn.) - Blocked passed pawns are penalized. - Pawn sq values are changed on opposite castling... so there's at least a small chance Slow might do a pawn rush. - Added recapture to pawn endgame extension. - Added Mate Threat extension. - Recognizes mating-touch-checks with a queen when the enemy king is at the edge of the board. This finds these mates 1-ply sooner because it checks for these before the Q-search, and these are also used to extend for mate threats. (4rk2/2p1n1bQ/1p2Bpp1/1q2B1N1/p1b1PP2/6P1/P1P5/3r1RK1 w - - 0 2; Mate) - Recognizes some Rook on H file mating patterns, but these aren't even mirrored. (2r1r1k1/5p2/p3pbpB/1p1pP3/3p2P1/n1q2B2/2P2PK1/4R2R w - - 0 2; Mate) - Doesn't stop search when Queen is pinned to the King by a bishop or rook. (5rk1/p2rbp1p/8/7q/2p1N1b1/P3Q1P1/1P1N1R1P/R5K1 b - -; bm f5, found in 6 ply) - Wrote an In Check move generation function, this actually helped a lot, when there are a lot of checks could be up to 15% faster (in overall Knps!) than generating every move and discarding illegal ones. - Mysteriously slower Knps, I used to try to keep track but I stopped caring. Much of the speed loss is accounted for (mainly eval, some for mate threats) but not all. - Now recognizes mates in the Q-Search, but left the search the way it was so this mainly just slows it down a very tiny bit. This was preperation for a search change I never did. VER 2.82a - Problem with losing on time with ponder on actually solved this time. - En Passant captures weren't done for Black (or was it White?) in the Q-Search, this is fixed now. VER 2.82 - Better move ordering. (Killer moves + 2 other changes.) Usually only helps very slightly, but in some situations, especially mates, it may be quite a bit faster. For instance on one of the same positions mentioned below in 2.79: r1bqr1k1/p2p1pp1/1p5p/2pP3Q/1n2p3/1P2P1P1/PB1P1PP1/R3KB1R w KQ - 0 14 bm Bxg7; Mate in 10 or less - A couple minor speed tweaks, to make up for the speed loss from previous updates and the move ordering in this update. - Now can load and save .pgns with a FEN start position. - couple GUI fixes VER 2.81b - Problem with sometimes losing on time and not moving with ponder on might be solved? VER 2.81a - Maybe helped a losing on time in winboard bug? Only with ponder on? I wasn't able to reproduce the problem. Added Develop->winboard debug option, to send some info about starting thinking and time to winboard in case this bug shows up again. VER 2.81 -Created a KPK endgame bitbase, so Slow knows who will endgames with just a pawn. This may result in some odd moves sometimes, like maybe preferring KPPK to KPK when on the losing side, but this doesn't effect strength since either endgame is just as lost. -Added a bit of endgame knowledge, it now knows rookpawn & wrong bishop draws, and also reduces evals in opposite bishop endings. I figure if I gradually add endgame knowledge Slow will eventually play a reasonable endgame. -Now hashes enpassant and castle flags. (so it shouldn't declare any bogus 3 move repetions when positions are the same except for these flags.) -GUI now keeps track of time in 100ths of a second instead of by whole seconds. -Added search option to limit search by setting max kilonodes. (Menu->Search Options->userdefined level) I think it limits strength more consistently than by using max depth. -Added search option to always wait before playing a move as if using the time control when depth or nodes are limited. -Displays player names on side bar when playing against the computer. -Added the "Display TT Entry" to display the transposition table entry if present for the position on the board. -Some tiny bugfixes I forgot. VER 2.80 -It now NullMove prunes less than 2 pieces on the board for a side. (but at least 1 rook.) I had wanted to do my own endgame pruning, but I haven't had time, so I hope this is better than nothing. At least it searches further and solved a few test positions faster. -Fixed a transposition table bug, thanks to Rahman Paidar for pointing out something was wrong. It now searches much further when there are many repeated positions (such as some King&Pawns endgames,) but I didn't notice a difference in other situations. (I'm also still getting some weird TT behaviour sometimes...) -Added the "Play PV" menu->develop option, to be able to play out the PV on the board after a search. -Opening Book is slightly larger VER 2.79 -2 small changes allow it to find some mates quicker...probably no overall increase in playing strength. -Added another (rare) pawn push extension... probably no increase playing strength. -More create book options added. (in GUI under Add PGN to Book.) PGN->Book also might work better. -Displays move it is currently searching. (in GUI and in analysis mode in winboard). -Menu->Option added to display evals as + for the computer, instead of always + for white. The Opening book still won't handle very large numbers of positions or may overflow the short counter when adding large PGNs. Easy fixes if I decide it's needed sometime. I think it does seem to work now though from simple tests. Also here are a couple of the mate positions Slow now solves quicker. 6r1/2rp1kpp/2qQp3/p3Pp1P/1pP2P2/1P2KP2/P5R1/6R1 w - - 0 1 bm Rxg7+; Mate in 15 or less r1bqr1k1/p2p1pp1/1p5p/2pP3Q/1n2p3/1P2P1P1/PB1P1PP1/R3KB1R w KQ - 0 14 bm Bxg7; Mate in 10 or less VER 2.78 Update -Sends thinking to winboard immediately before sending its move, instead of immediately after. -Ignores book moves in analysis, so will analyze from positions in the book. VER 2.78 -Didn't keep a log of changes before this.