Stockfish/ - UCI chess engine

Last update: May 18, 2022

Overview

Build Status Build Status

Stockfish is a free, powerful UCI chess engine derived from Glaurung 2.1. Stockfish is not a complete chess program and requires a UCI-compatible graphical user interface (GUI) (e.g. XBoard with PolyGlot, Scid, Cute Chess, eboard, Arena, Sigma Chess, Shredder, Chess Partner or Fritz) in order to be used comfortably. Read the documentation for your GUI of choice for information about how to use Stockfish with it.

The Stockfish engine features two evaluation functions for chess, the classical evaluation based on handcrafted terms, and the NNUE evaluation based on efficiently updatable neural networks. The classical evaluation runs efficiently on almost all CPU architectures, while the NNUE evaluation benefits from the vector intrinsics available on most CPUs (sse2, avx2, neon, or similar).

Files

This distribution of Stockfish consists of the following files:

  • Readme.md, the file you are currently reading.

  • Copying.txt, a text file containing the GNU General Public License version 3.

  • AUTHORS, a text file with the list of authors for the project

  • src, a subdirectory containing the full source code, including a Makefile that can be used to compile Stockfish on Unix-like systems.

  • a file with the .nnue extension, storing the neural network for the NNUE evaluation. Binary distributions will have this file embedded.

The UCI protocol and available options

The Universal Chess Interface (UCI) is a standard protocol used to communicate with a chess engine, and is the recommended way to do so for typical graphical user interfaces (GUI) or chess tools. Stockfish implements the majority of it options as described in the UCI protocol.

Developers can see the default values for UCI options available in Stockfish by typing ./stockfish uci in a terminal, but the majority of users will typically see them and change them via a chess GUI. This is a list of available UCI options in Stockfish:

  • Threads

    The number of CPU threads used for searching a position. For best performance, set this equal to the number of CPU cores available.

  • Hash

    The size of the hash table in MB. It is recommended to set Hash after setting Threads.

  • Clear Hash

    Clear the hash table.

  • Ponder

    Let Stockfish ponder its next move while the opponent is thinking.

  • MultiPV

    Output the N best lines (principal variations, PVs) when searching. Leave at 1 for best performance.

  • Use NNUE

    Toggle between the NNUE and classical evaluation functions. If set to "true", the network parameters must be available to load from file (see also EvalFile), if they are not embedded in the binary.

  • EvalFile

    The name of the file of the NNUE evaluation parameters. Depending on the GUI the filename might have to include the full path to the folder/directory that contains the file. Other locations, such as the directory that contains the binary and the working directory, are also searched.

  • UCI_AnalyseMode

    An option handled by your GUI.

  • UCI_Chess960

    An option handled by your GUI. If true, Stockfish will play Chess960.

  • UCI_ShowWDL

    If enabled, show approximate WDL statistics as part of the engine output. These WDL numbers model expected game outcomes for a given evaluation and game ply for engine self-play at fishtest LTC conditions (60+0.6s per game).

  • UCI_LimitStrength

    Enable weaker play aiming for an Elo rating as set by UCI_Elo. This option overrides Skill Level.

  • UCI_Elo

    If enabled by UCI_LimitStrength, aim for an engine strength of the given Elo. This Elo rating has been calibrated at a time control of 60s+0.6s and anchored to CCRL 40/4.

  • Skill Level

    Lower the Skill Level in order to make Stockfish play weaker (see also UCI_LimitStrength). Internally, MultiPV is enabled, and with a certain probability depending on the Skill Level a weaker move will be played.

  • SyzygyPath

    Path to the folders/directories storing the Syzygy tablebase files. Multiple directories are to be separated by ";" on Windows and by ":" on Unix-based operating systems. Do not use spaces around the ";" or ":".

    Example: C:\tablebases\wdl345;C:\tablebases\wdl6;D:\tablebases\dtz345;D:\tablebases\dtz6

    It is recommended to store .rtbw files on an SSD. There is no loss in storing the .rtbz files on a regular HD. It is recommended to verify all md5 checksums of the downloaded tablebase files (md5sum -c checksum.md5) as corruption will lead to engine crashes.

  • SyzygyProbeDepth

    Minimum remaining search depth for which a position is probed. Set this option to a higher value to probe less aggressively if you experience too much slowdown (in terms of nps) due to tablebase probing.

  • Syzygy50MoveRule

    Disable to let fifty-move rule draws detected by Syzygy tablebase probes count as wins or losses. This is useful for ICCF correspondence games.

  • SyzygyProbeLimit

    Limit Syzygy tablebase probing to positions with at most this many pieces left (including kings and pawns).

  • Move Overhead

    Assume a time delay of x ms due to network and GUI overheads. This is useful to avoid losses on time in those cases.

  • Slow Mover

    Lower values will make Stockfish take less time in games, higher values will make it think longer.

  • nodestime

    Tells the engine to use nodes searched instead of wall time to account for elapsed time. Useful for engine testing.

  • Debug Log File

    Write all communication to and from the engine into a text file.

For developers the following non-standard commands might be of interest, mainly useful for debugging:

  • bench ttSize threads limit fenFile limitType evalType

    Performs a standard benchmark using various options. The signature of a version (standard node count) is obtained using all defaults. bench is currently bench 16 1 13 default depth mixed.

  • compiler

    Give information about the compiler and environment used for building a binary.

  • d

    Display the current position, with ascii art and fen.

  • eval

    Return the evaluation of the current position.

  • export_net [filename]

    Exports the currently loaded network to a file. If the currently loaded network is the embedded network and the filename is not specified then the network is saved to the file matching the name of the embedded network, as defined in evaluate.h. If the currently loaded network is not the embedded network (some net set through the UCI setoption) then the filename parameter is required and the network is saved into that file.

  • flip

    Flips the side to move.

A note on classical evaluation versus NNUE evaluation

Both approaches assign a value to a position that is used in alpha-beta (PVS) search to find the best move. The classical evaluation computes this value as a function of various chess concepts, handcrafted by experts, tested and tuned using fishtest. The NNUE evaluation computes this value with a neural network based on basic inputs (e.g. piece positions only). The network is optimized and trained on the evaluations of millions of positions at moderate search depth.

The NNUE evaluation was first introduced in shogi, and ported to Stockfish afterward. It can be evaluated efficiently on CPUs, and exploits the fact that only parts of the neural network need to be updated after a typical chess move. The nodchip repository provided the first version of the needed tools to train and develop the NNUE networks. Today, more advanced training tools are available in the nnue-pytorch repository, while data generation tools are available in a dedicated branch.

On CPUs supporting modern vector instructions (avx2 and similar), the NNUE evaluation results in much stronger playing strength, even if the nodes per second computed by the engine is somewhat lower (roughly 80% of nps is typical).

Notes:

  1. the NNUE evaluation depends on the Stockfish binary and the network parameter file (see the EvalFile UCI option). Not every parameter file is compatible with a given Stockfish binary, but the default value of the EvalFile UCI option is the name of a network that is guaranteed to be compatible with that binary.

  2. to use the NNUE evaluation, the additional data file with neural network parameters needs to be available. Normally, this file is already embedded in the binary or it can be downloaded. The filename for the default (recommended) net can be found as the default value of the EvalFile UCI option, with the format nn-[SHA256 first 12 digits].nnue (for instance, nn-c157e0a5755b.nnue). This file can be downloaded from

https://tests.stockfishchess.org/api/nn/[filename]

replacing [filename] as needed.

What to expect from the Syzygy tablebases?

If the engine is searching a position that is not in the tablebases (e.g. a position with 8 pieces), it will access the tablebases during the search. If the engine reports a very large score (typically 153.xx), this means it has found a winning line into a tablebase position.

If the engine is given a position to search that is in the tablebases, it will use the tablebases at the beginning of the search to preselect all good moves, i.e. all moves that preserve the win or preserve the draw while taking into account the 50-move rule. It will then perform a search only on those moves. The engine will not move immediately, unless there is only a single good move. The engine likely will not report a mate score, even if the position is known to be won.

It is therefore clear that this behaviour is not identical to what one might be used to with Nalimov tablebases. There are technical reasons for this difference, the main technical reason being that Nalimov tablebases use the DTM metric (distance-to-mate), while the Syzygy tablebases use a variation of the DTZ metric (distance-to-zero, zero meaning any move that resets the 50-move counter). This special metric is one of the reasons that the Syzygy tablebases are more compact than Nalimov tablebases, while still storing all information needed for optimal play and in addition being able to take into account the 50-move rule.

Large Pages

Stockfish supports large pages on Linux and Windows. Large pages make the hash access more efficient, improving the engine speed, especially on large hash sizes. Typical increases are 5..10% in terms of nodes per second, but speed increases up to 30% have been measured. The support is automatic. Stockfish attempts to use large pages when available and will fall back to regular memory allocation when this is not the case.

Support on Linux

Large page support on Linux is obtained by the Linux kernel transparent huge pages functionality. Typically, transparent huge pages are already enabled, and no configuration is needed.

Support on Windows

The use of large pages requires "Lock Pages in Memory" privilege. See Enable the Lock Pages in Memory Option (Windows) on how to enable this privilege, then run RAMMap to double-check that large pages are used. We suggest that you reboot your computer after you have enabled large pages, because long Windows sessions suffer from memory fragmentation, which may prevent Stockfish from getting large pages: a fresh session is better in this regard.

Compiling Stockfish yourself from the sources

Stockfish has support for 32 or 64-bit CPUs, certain hardware instructions, big-endian machines such as Power PC, and other platforms.

On Unix-like systems, it should be easy to compile Stockfish directly from the source code with the included Makefile in the folder src. In general it is recommended to run make help to see a list of make targets with corresponding descriptions.

    cd src
    make help
    make net
    make build ARCH=x86-64-modern

When not using the Makefile to compile (for instance, with Microsoft MSVC) you need to manually set/unset some switches in the compiler command line; see file types.h for a quick reference.

When reporting an issue or a bug, please tell us which Stockfish version and which compiler you used to create your executable. This information can be found by typing the following command in a console:

    ./stockfish compiler

Understanding the code base and participating in the project

Stockfish's improvement over the last decade has been a great community effort. There are a few ways to help contribute to its growth.

Donating hardware

Improving Stockfish requires a massive amount of testing. You can donate your hardware resources by installing the Fishtest Worker and view the current tests on Fishtest.

Improving the code

If you want to help improve the code, there are several valuable resources:

  • In this wiki, many techniques used in Stockfish are explained with a lot of background information.

  • The section on Stockfish describes many features and techniques used by Stockfish. However, it is generic rather than being focused on Stockfish's precise implementation. Nevertheless, a helpful resource.

  • The latest source can always be found on GitHub. Discussions about Stockfish take place these days mainly in the FishCooking group and on the Stockfish Discord channel. The engine testing is done on Fishtest. If you want to help improve Stockfish, please read this guideline first, where the basics of Stockfish development are explained.

Terms of use

Stockfish is free, and distributed under the GNU General Public License version 3 (GPL v3). Essentially, this means you are free to do almost exactly what you want with the program, including distributing it among your friends, making it available for download from your website, selling it (either by itself or as part of some bigger software package), or using it as the starting point for a software project of your own.

The only real limitation is that whenever you distribute Stockfish in some way, you MUST always include the full source code, or a pointer to where the source code can be found, to generate the exact binary you are distributing. If you make any changes to the source code, these changes must also be made available under the GPL.

For full details, read the copy of the GPL v3 found in the file named Copying.txt.

GitHub

https://github.com/official-stockfish/Stockfish/
Comments
  • 1. Stockfish hang in TCEC S16 Division P Game 51

    In the TCEC Archive here

    Reproduces with a few seconds to move for me:

    Engine master(1) failed to respond to ping
    Terminating process of engine master(1)
    Warning: Unexpected result claim from master: 1/2-1/2 {Draw by stalled connection}
    Engine master(0) failed to respond to ping
    Terminating process of engine master(0)
    
    
    Reviewed by xoto10 at 2019-09-09 12:44
  • 2. Contempt 7

    STC: LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 50665 W: 9813 L: 9745 D: 31107

    LTC: LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 13045 W: 1834 L: 1703 D: 9508

    Contempt 4 tests were also good: http://tests.stockfishchess.org/tests/view/5a512eea0ebc590ccbb8c723 http://tests.stockfishchess.org/tests/view/5a5205000ebc590ccbb8c762

    Contempt 10 tests were also good: http://tests.stockfishchess.org/tests/view/5a5227410ebc590ccbb8c76f http://tests.stockfishchess.org/tests/view/5a550fac0ebc590296938a24

    For safety reasons, it seems the best to use the medium value (7), where tests anyway showed the greatest gain.

    There is no an obvious Elo gain here, but it should be helpful against weaker engines.

    Bench 5494441

    Reviewed by IIvec at 2018-01-11 16:19
  • 3. SF NNUE

    There has been much discussion on SF NNUE, which apparently is already on par with SF10 (so about 70-80 elo behind current sf dev). People have been saying it can become 100elo stronger than SF, which would basically come from the eval. Since the net is apparently not very big, maybe someone can study the activations of each layer and see if we can extract some eval info from it? In any case, it's probably worth looking into this since it shows so much promise.

    Reviewed by adentong at 2020-06-10 15:05
  • 4. New discussion regarding testing bounds, testing book, etc.

    There has been some discussion in https://github.com/official-stockfish/Stockfish/pull/2260 about the test bounds, how to optimize for resource usage and how to verify scaling and whatnot. So I opened a new issue for people to discuss. Also relevant is potentially switching to pentanomial statistics, which increases throughput by 10 to 15%, or so I've read in one of the discussions here.

    Reviewed by adentong at 2019-08-26 13:35
  • 5. NNUE merge

    The NNUE branch maintained by @nodchip has demonstrated strong results and offers great potential, and we will proceed to merge it into master. This will assure that Stockfish remains a reference engine based on the top computer chess technology for the foreseeable future. This merge will introduce machine learning based coding to the engine, thus enlarging the community of developers, bringing in new skills. We are eager to keep everybody on board, including all developers and users of diverse hardware, aiming to be an inclusive community. We will keep and evolve the handcrafted evaluation, not only for the beauty and insight it offers, but for additional reasons, including its value on diverse hardware platforms, and for the potential of hybridization with NNUE, and use in search. The initial goal for the merge is the NNUE playing capability only, this focus makes sense given the complexity of the project, and the aim of Stockfish as a production quality chess engine. We will try to make changes such that the @nodchip repo and ours can be kept in sync as easily as possible. Written by knowledgeable people, NNUE is already of good quality, we will make small modifications needed to make it pass our standard CI, and integrate nicely in the existing engine. Rigorous testing will continue to be a cornerstone of our development, and accordingly integration in fishtest needs to be properly implemented. Afterwards, we will guarantee continuous progression in playing strength testing core engine and networks with our usual SPRT process. Some initial steps of the merge will be outlined below, the precise steps needed will become clearer as we proceed, I look forward to working with the community to make this happen!

    Reviewed by vondele at 2020-07-25 08:03
  • 6. SPRT parameters improvement

    After a very long and interesting discussion https://github.com/official-stockfish/Stockfish/pull/1804#issuecomment-445429885 I think it's time to summarize in quantitative way what people have found and proceed in a practical / executive fashion.

    The topic is the improvement of SPRT parameters aimed at:

    • Improve precision, i.e. discard zero or negative patches and accept positive ones with higher margin

    • Manage resource consumption.

    It is immediately clear that the 2 goals go in opposite directions, anyhow from the discussion it seems there is some consensus to allow a reasonable increase of test resources in exchange for stricter parameters.

    To allow the discussion to be quantitative and on the point, I'd like people post here only simulation results in a simple and standardized format:

    | Limits | SPRT[0, 5] STC + SPRT[0, 5] LTC | | --- | --- | | 0 ELO pass prob | xxx | | 1 ELO pass prob | xxx | | <= 0 ELO pass prob | xxx | | >= 1 ELO fail prob | xxx | | Avg. STC cost | xxx | | Avg. STC + LTC Cost | xxx |

    The first 2 records give a taste of the sensibility of the scheme, the 3 and 4 give a taste of the failure rate of the scheme and the last 2 of the cost of the scheme.

    Now, on the cost. Patch's ELO is not uniformly distributed, namely the biggest part of tested patches are within [-2, 0] ELO (neutral or slightly negative). We have to consider this to compute a standardized cost.

    I propose the following. Given:

    ag(x) = Average number of games for pacthes with x ELO

    We define the cost as:

    STC Cost = 10 * ag(-2) + 35 * ag(-1) + 40 * ag(0) + 25 * ag(1) + 5 * ag(2)

    For the STC + LTC cost we have to consider that:

    LTC Cost = STC Cost * 6

    Given that all the above is not trivial to implement, I would split this project in 2 phases;

    1. First find a standard tool to reliably compute all the above. Publish it and let people refer to the same measuring tool.

    2. Once we have an open, shared and validated tool then compute the different schemes.

    The standard tool should be sound. I would prefer a tool based on simulations more than on formulas, it sounds to me simpler and easier to review for a wider audience of people, and also more flexible. Everybody is encouraged to submit their script / simulator. Once the process has stabilized on a shared and validated single tool, then we will proceed to the second phase.

    It won't be quick, but this is an engineering approach to the problem: solid, slow and boring :-)

    Reviewed by mcostalba at 2018-12-09 07:55
  • 7. Tune search constants

    This is the result of a 200k tuning run at LTC: http://tests.stockfishchess.org/tests/view/5d3576b70ebc5925cf0e9e1e

    which passed quickly at LTC: LLR: 2.95 (-2.94,2.94) [0.50,4.50] Total: 12954 W: 2280 L: 2074 D: 8600 http://tests.stockfishchess.org/tests/view/5d3ff3f70ebc5925cf0f87a2

    STC failed, but second LTC at [0,4] passed easily: LLR: 2.96 (-2.94,2.94) [0.00,4.00] Total: 8004 W: 1432 L: 1252 D: 5320

    Further work: No doubt some of these changes produce most of the gain and some are neutral or even bad, so further testing on individual/groups of parameters changed here might show more gains. It does look like these tests might need to be at LTC though, so maybe not too practical to do. This is a further indication that LTC is different from STC, we should debate whether we can increase STC slightly to make test results closer to LTC, say to 20+0.2 instead of 10+0.1.

    Reviewed by xoto10 at 2019-07-30 10:33
  • 8. Fix race where it may cause a hang

    In case of the notifier thread doesn't find a waiter, and a subsequent wait consumes the notify in the same thread, it will give one back, if the predicate success, no more notify should fire, if it fails, this will essentially turn the offending thread into a spin loop waiting on the other threads to enter wait.

    This patch also disallow default copy operators for Mutex(as per C++11 implementations), although that doesn't really affect us. Using compiler default mutexes had issues described in the original comment, as tested recently they still cause minor slowdowns on MINGW compiles.

    No functional change

    Reviewed by noobpwnftw at 2019-09-15 22:07
  • 9. Analysis Contempt combo box

    This patch introduces an Analysis Contempt UCI combo box to control the behaviour of contempt during analysis. The possible values are Off, White, Black.

    The engine is in analysis mode if UCI_AnalyseMode is set by the GUI or if the user has chosen infinite analysis mode ("go infinite"). (I'm not sure how many GUIs automatically set UCI_AnalyseMode in infinite analysis mode.)

    The idea for the combo box is entirely @vdbergh 's.

    No functional change outside analysis mode.

    Reviewed by syzygy1 at 2018-02-01 22:45
  • 10. [NNUE] Android building issue

    Hello SF team! I have an issue with Android compilations. I'm using NDK's Clang 9.0.8 (last available), on Windows 64 bit. During the compilation i'm getting this error.. error After I changed the line 331 (in misc.cpp) to "std_aligned_alloc", i managed to make android engine. Regarding the NETs - where should i put the NN.bin file (eg separate folder, "eval/nn.bin)? And what is the correct name of the net, is it nn.bin or nn.nnue? Thank you!!

    Reviewed by AlexB123 at 2020-07-28 18:50
  • 11. Natural TB

    Rewrite TB probing code to ovecome the main traditional TB artifacts:

    1. Don't hide forever mate line in a winning position

    2. Don't stick to odd sacrifices to simplify in a TB position

    This version mostly fixes the above 2 issues. In particular it keeps searching even in a winning position so that sooner or later a mate is found and reported to user. Moreover, although in rare cases odd sacrifice moves could still be selected for a temporary and transitory time, keeping searching the engine always moves off form them.

    In both cases these phenomenons are greatly reduced compared to current version.

    DTZ tables are used only when strictly needed: to differentiate, when the root position is in TB, between a cursed win/blessed loss and an actual win/loss. This applies only if rule50 is used and also in this case the returned value is used to set as a draw a cursed/blessed result, it is NOT used to alter search result.

    The approach of this work is that a search result is never altered: TB is used to detect a draw (clear or hidden behind a 50 moves rule) and to steer the search toward winning path.

    Not altering search result is the main reason why behaviour is different from current version.

    Efficeny is preserved in 2 ways:

    • Always returning a draw score as soon as detected
    • Always returning from a deep tree WDL win/loss score

    Same bench as master, because bench does not use TB.

    Reviewed by mcostalba at 2017-09-05 09:35
  • 12. Small speedup in futility_move_count

    The speedup is around 0.25% using gcc 11.3.1 (bmi2, nnue bench, depth 16 and 23) while it is neutral using clang (same conditions). According to perf that integer division was one of the most time-consuming instructions in search (gcc disassembly).

    Passed STC: https://tests.stockfishchess.org/tests/view/628a17fe24a074e5cd59b3aa LLR: 2.94 (-2.94,2.94) <0.00,2.50> Total: 22232 W: 5992 L: 5751 D: 10489 Ptnml(0-2): 88, 2235, 6218, 2498, 77

    LTC: https://tests.stockfishchess.org/tests/view/628a35d7ccae0450e35106f7

    Further development: Local tests shows a 4% overperformance by clang, so probably there is a lot more to extract, since gcc is the default compiler. This patch also suggests that UHO is sensible to small speedups (< 0.50%).

    No functional change

    Reviewed by G-Lorenz at 2022-05-23 10:17
  • 13. Detach the fork

    Reviewed by kevinji at 2022-05-22 05:22
  • 14. Purposely repeating moves

    I was looking at Navs stream (https://www.twitch.tv/videos/1488780810?t=18h26m47s) and I saw Stockfish doing some very very weird things. It did 7 useless moves to just take a pawn that it could've taken in 1, wasting a lot of time in the process. So I decided to check with homefish and see what it would do and the results were even more weird. Stockfish wanted to purposely repeat moves for absolutely no reason. Repeating the same position throughout the game is not an issue, but wanting to repeat moves when you have a clear advantage and when it's just making you waste time makes no sense.

    Stockfish https://github.com/official-stockfish/Stockfish/commit/22b7909809c731aea691184dd7c1a2b02c5946af

    Stockfish 150522 by the Stockfish developers (see AUTHORS file)
    uci
    id name Stockfish 150522
    id author the Stockfish developers (see AUTHORS file)
    
    option name Debug Log File type string default
    option name Threads type spin default 1 min 1 max 512
    option name Hash type spin default 16 min 1 max 33554432
    option name Clear Hash type button
    option name Ponder type check default false
    option name MultiPV type spin default 1 min 1 max 500
    option name Skill Level type spin default 20 min 0 max 20
    option name Move Overhead type spin default 10 min 0 max 5000
    option name Slow Mover type spin default 100 min 10 max 1000
    option name nodestime type spin default 0 min 0 max 10000
    option name UCI_Chess960 type check default false
    option name UCI_AnalyseMode type check default false
    option name UCI_LimitStrength type check default false
    option name UCI_Elo type spin default 1350 min 1350 max 2850
    option name UCI_ShowWDL type check default false
    option name SyzygyPath type string default <empty>
    option name SyzygyProbeDepth type spin default 1 min 1 max 100
    option name Syzygy50MoveRule type check default true
    option name SyzygyProbeLimit type spin default 7 min 0 max 7
    option name Use NNUE type check default true
    option name EvalFile type string default nn-3c0aa92af1da.nnue
    uciok
    setoption name Hash value 128
    ucinewgame
    position fen rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 moves d2d4 g8f6 c2c4 g7g6 b1c3 f8g7 e2e4 d7d6 f2f3 e8g8 c1g5 b8c6 g1e2 a7a6 d1d2 f8e8 h2h4 h7h5 e1c1 a8b8 g2g4 h5g4 h4h5 f6h5 c3d5 f7f6 g5h6 g4f3 e2g3 h5g3 h6g7 g6g5 d2h2 g3h1 h2h8 g8f7 h8h7 e8g8 g7h6 f7e6 h7f5 e6f7 f5h7 f7e6 d5f4 e6d7 f1h3 g5g4 h7f5 d7e8 f5h5 e8d7 h3g4 g8g4 h5g4 d7e8
    d
    
     +---+---+---+---+---+---+---+---+
     |   | r | b | q | k |   |   |   | 8
     +---+---+---+---+---+---+---+---+
     |   | p | p |   | p |   |   |   | 7
     +---+---+---+---+---+---+---+---+
     | p |   | n | p |   | p |   | B | 6
     +---+---+---+---+---+---+---+---+
     |   |   |   |   |   |   |   |   | 5
     +---+---+---+---+---+---+---+---+
     |   |   | P | P | P | N | Q |   | 4
     +---+---+---+---+---+---+---+---+
     |   |   |   |   |   | p |   |   | 3
     +---+---+---+---+---+---+---+---+
     | P | P |   |   |   |   |   |   | 2
     +---+---+---+---+---+---+---+---+
     |   |   | K | R |   |   |   | n | 1
     +---+---+---+---+---+---+---+---+
       a   b   c   d   e   f   g   h
    
    Fen: 1rbqk3/1pp1p3/p1np1p1B/8/2PPPNQ1/5p2/PP6/2KR3n w - - 1 29
    Key: D1C84C7B7836A670
    Checkers:
    

    image

    In this position black is basically forced to go back and forth with the king from d7 to e8 waiting for white to do something and this is what Stockfish wants to do:

    go depth 30
    info string NNUE evaluation using nn-3c0aa92af1da.nnue enabled
    info depth 1 seldepth 1 multipv 1 score cp 285 nodes 57 nps 57000 tbhits 0 time 1 pv g4g8 e8d7
    info depth 2 seldepth 2 multipv 1 score cp 353 nodes 114 nps 114000 tbhits 0 time 1 pv g4f3 e8d7
    info depth 3 seldepth 3 multipv 1 score cp 398 nodes 221 nps 110500 tbhits 0 time 2 pv g4g8 e8d7 g8g4 f6f5 g4f5 d7e8
    info depth 4 seldepth 4 multipv 1 score cp 398 nodes 281 nps 140500 tbhits 0 time 2 pv g4g8 e8d7 g8g4 f6f5
    info depth 5 seldepth 5 multipv 1 score cp 515 nodes 629 nps 314500 tbhits 0 time 2 pv g4f3 e7e5 f4d5 c6d4
    info depth 6 seldepth 6 multipv 1 score cp 475 nodes 788 nps 394000 tbhits 0 time 2 pv g4f3 e8d7 f3g4 d7e8 g4g8 e8d7
    info depth 7 seldepth 9 multipv 1 score cp 521 nodes 2756 nps 551200 tbhits 0 time 5 pv g4f3 e8d7 f3h3 d7e8 h3h1 c8g4
    info depth 8 seldepth 8 multipv 1 score cp 318 nodes 4474 nps 745666 tbhits 0 time 6 pv g4f3 c6d4 d1d4 e7e5 d4d1 e5f4 d1g1 e8d7
    info depth 9 seldepth 13 multipv 1 score cp 293 nodes 10981 nps 915083 tbhits 0 time 12 pv g4f3 c6d4 d1d4 e8d7 e4e5 f6e5 f3h3 d7e8 h3h5 e8d7
    info depth 10 seldepth 15 multipv 1 score cp 205 nodes 27601 nps 951758 tbhits 0 time 29 pv g4g8 e8d7 g8g4 d7e8 g4h5 e8d7 h5h3 d7e8 h3h1 c8g4 d1g1 e8d7 g1g4 d8h8 f4g6
    info depth 11 seldepth 21 multipv 1 score cp 285 nodes 46525 nps 949489 tbhits 0 time 49 pv g4g8 e8d7 g8g4 d7e8 g4h5 e8d7
    info depth 12 seldepth 23 multipv 1 score cp 250 nodes 77687 nps 959098 tbhits 0 time 81 pv g4g8 e8d7 g8g4 d7e8 g4h5 e8d7 h5h3 d7e8 h3f3 h1f2 f3f2 e8d7 d1g1 b7b5 g1g7 b5c4 d4d5 c6e5 f2h4 d8f8 f4g6 e5g6 h4g4 d7d8
    info depth 13 seldepth 25 multipv 1 score cp 254 nodes 127310 nps 915899 tbhits 0 time 139 pv g4g6 e8d7 g6f5 d7e8 f5h5 e8d7 h5h3 d7e8 h3f3 h1f2 f3f2 e8d7 d1g1 b7b5 g1g7 b5c4 f4d5
    info depth 14 seldepth 28 multipv 1 score cp 257 nodes 227464 nps 899067 tbhits 0 time 253 pv g4g8 e8d7 g8g4 d7e8 g4f3 h1f2 f3f2 c8g4 d1g1 d8d7 h6g7 c6b4 a2a3 e7e5 d4e5 d7g7
    info depth 15 seldepth 30 multipv 1 score cp 277 nodes 485694 nps 921620 tbhits 0 time 527 pv g4g8 e8d7 g8g4 d7e8 g4f3 h1f2 f3f2 e8d7 d1g1 b7b5 g1g7 b5c4 f2g3 d8e8 f4d5 c6d4 g3g2 e8h8 h6e3 d4e6 d5f6 d7c6
    info depth 16 seldepth 34 multipv 1 score cp 284 nodes 869395 nps 973566 tbhits 0 time 893 pv g4f3 c6d4 d1d4 e7e5 f4d5 e5d4 d5f6 e8e7 f3h1 d8h8 h1h4 c8g4 h6f8 b8f8 f6g8 e7f7 h4h8 f8g8 h8d4 g4e6 d4a7 e6c4
    info depth 17 seldepth 33 multipv 1 score cp 306 nodes 979428 nps 977473 hashfull 41 tbhits 0 time 1002 pv g4g6 e8d7 g6g4 d7e8 g4h5 e8d7 h5h3 d7e8 h3f3 h1f2 f3f2 c8g4 d1g1 d8d7 f4d5 e8f7 d5e3 b8g8 f2g2 f7e8 e3g4 e8d8 h6e3 c6b4 a2a3 b4d3 c1c2 f6f5 c2d3 g8g4 g2h2 g4g1 h2g1
    info depth 18 seldepth 36 multipv 1 score cp 293 nodes 1210378 nps 963676 hashfull 50 tbhits 0 time 1256 pv g4g6 e8d7 g6g4 d7e8 g4f3 c6d4 d1d4 e7e5 f4d5 e5d4 d5f6 e8e7 f3h1 d8h8 h1h4 c8g4 h6f8 b8f8 f6g8 e7f7 h4h8 f8g8 h8d4 g4e6 d4a7 e6c4 a7b7 c4a2 b2b3 g8g1 c1b2 g1g2 b2a1 a2b3 b7b3 f7e8
    info depth 19 seldepth 43 multipv 1 score cp 256 nodes 2035053 nps 951848 hashfull 80 tbhits 0 time 2138 pv g4f3 h1f2 f3f2 c8g4 d1g1 d8d7 f4d5 e8d8 f2h4 g4e6 g1g7 c6d4 h6e3 e6d5 e4d5 c7c5 d5c6 d4e2 c1d2 b7c6 b2b3 d7e6 d2e2 d8d7 h4h5 e6e4 h5h7 e4h7 g7h7 b8g8 a2a4
    info depth 20 seldepth 41 multipv 1 score cp 265 nodes 2237302 nps 944806 hashfull 90 tbhits 0 time 2368 pv g4g6 e8d7 g6g4 d7e8 g4f3 h1f2 f3f2 c8g4 d1g1 d8d7 f4d5 e8d8 f2h4 g4e6 g1g7 c6d4 h6e3 e6d5 e4d5 c7c5 d5c6 d4e2 c1d2 b7c6 b2b3 d7e6 d2e2 d8d7 h4h7 c6c5 e2d3 b8e8
    info depth 21 seldepth 42 multipv 1 score cp 244 lowerbound nodes 2865341 nps 937304 hashfull 118 tbhits 0 time 3057 pv g4g6
    info depth 20 currmove g4g6 currmovenumber 1
    info depth 21 seldepth 42 multipv 1 score cp 269 lowerbound nodes 2957234 nps 935537 hashfull 123 tbhits 0 time 3161 pv g4g6
    info depth 19 currmove g4g6 currmovenumber 1
    info depth 19 currmove g4f3 currmovenumber 2
    info depth 19 currmove d1h1 currmovenumber 3
    info depth 19 currmove g4g8 currmovenumber 4
    info depth 19 currmove g4g7 currmovenumber 5
    info depth 19 currmove g4h5 currmovenumber 6
    info depth 19 currmove g4g1 currmovenumber 7
    info depth 19 currmove g4h4 currmovenumber 8
    info depth 19 currmove g4h3 currmovenumber 9
    info depth 19 currmove g4f5 currmovenumber 10
    info depth 19 currmove g4g3 currmovenumber 11
    info depth 19 currmove g4d7 currmovenumber 12
    info depth 19 currmove g4e6 currmovenumber 13
    info depth 19 currmove f4e6 currmovenumber 14
    info depth 19 currmove d1g1 currmovenumber 15
    info depth 19 currmove f4d5 currmovenumber 16
    info depth 19 currmove c1b1 currmovenumber 17
    info depth 19 currmove f4h5 currmovenumber 18
    info depth 19 currmove h6g7 currmovenumber 19
    info depth 19 currmove a2a3 currmovenumber 20
    info depth 19 currmove e4e5 currmovenumber 21
    info depth 19 currmove d4d5 currmovenumber 22
    info depth 19 currmove c4c5 currmovenumber 23
    info depth 19 currmove b2b3 currmovenumber 24
    info depth 19 currmove h6g5 currmovenumber 25
    info depth 19 currmove b2b4 currmovenumber 26
    info depth 19 currmove a2a4 currmovenumber 27
    info depth 19 currmove g4g2 currmovenumber 28
    info depth 19 currmove f4d3 currmovenumber 29
    info depth 19 currmove d1f1 currmovenumber 30
    info depth 19 currmove g4g5 currmovenumber 31
    info depth 19 currmove h6f8 currmovenumber 32
    info depth 19 currmove d1e1 currmovenumber 33
    info depth 19 currmove c1d2 currmovenumber 34
    info depth 19 currmove c1c2 currmovenumber 35
    info depth 19 currmove d1d3 currmovenumber 36
    info depth 19 currmove f4g6 currmovenumber 37
    info depth 19 currmove d1d2 currmovenumber 38
    info depth 19 currmove f4e2 currmovenumber 39
    info depth 19 currmove f4g2 currmovenumber 40
    info depth 19 currmove f4h3 currmovenumber 41
    info depth 19 currmove g4c8 currmovenumber 42
    info depth 21 seldepth 42 multipv 1 score cp 271 nodes 3004964 nps 918949 hashfull 126 tbhits 0 time 3270 pv g4g6 e8d7 g6g4 d7e8 g4f3 h1f2 f3f2 c8g4 d1g1 d8d7 h6g7 c6b4 a2a3 e7e5 d4e5 f6e5 a3b4 e5f4 g7c3 f4f3 f2h4 f3f2 h4h8 e8e7 h8f6 e7e8 f6f2 g4e6 f2h4 d7f7 c3f6
    info depth 22 currmove g4g6 currmovenumber 1
    info depth 22 seldepth 36 multipv 1 score cp 282 lowerbound nodes 3329207 nps 905167 hashfull 145 tbhits 0 time 3678 pv g4g6
    info depth 21 currmove g4g6 currmovenumber 1
    info depth 21 currmove g4f3 currmovenumber 2
    info depth 22 seldepth 46 multipv 1 score cp 298 lowerbound nodes 3884934 nps 898874 hashfull 172 tbhits 0 time 4322 pv g4f3
    info depth 20 currmove g4f3 currmovenumber 1
    info depth 20 currmove d1h1 currmovenumber 2
    info depth 20 currmove g4g6 currmovenumber 3
    info depth 20 currmove g4g8 currmovenumber 4
    info depth 20 currmove g4g7 currmovenumber 5
    info depth 20 currmove g4h5 currmovenumber 6
    info depth 20 currmove g4g1 currmovenumber 7
    info depth 20 currmove g4h3 currmovenumber 8
    info depth 20 currmove g4h4 currmovenumber 9
    info depth 20 currmove g4g3 currmovenumber 10
    info depth 20 currmove g4f5 currmovenumber 11
    info depth 20 currmove g4e6 currmovenumber 12
    info depth 20 currmove g4d7 currmovenumber 13
    info depth 20 currmove d1g1 currmovenumber 14
    info depth 20 currmove d4d5 currmovenumber 15
    info depth 20 currmove f4e6 currmovenumber 16
    info depth 20 currmove f4d5 currmovenumber 17
    info depth 20 currmove e4e5 currmovenumber 18
    info depth 20 currmove h6g7 currmovenumber 19
    info depth 20 currmove d1e1 currmovenumber 20
    info depth 20 currmove g4g5 currmovenumber 21
    info depth 20 currmove h6f8 currmovenumber 22
    info depth 20 currmove d1d2 currmovenumber 23
    info depth 20 currmove f4g6 currmovenumber 24
    info depth 20 currmove a2a3 currmovenumber 25
    info depth 20 currmove c1d2 currmovenumber 26
    info depth 20 currmove b2b3 currmovenumber 27
    info depth 20 currmove c4c5 currmovenumber 28
    info depth 20 currmove g4g2 currmovenumber 29
    info depth 20 currmove c1c2 currmovenumber 30
    info depth 20 currmove b2b4 currmovenumber 31
    info depth 20 currmove h6g5 currmovenumber 32
    info depth 20 currmove c1b1 currmovenumber 33
    info depth 20 currmove d1d3 currmovenumber 34
    info depth 20 currmove f4e2 currmovenumber 35
    info depth 20 currmove a2a4 currmovenumber 36
    info depth 20 currmove f4g2 currmovenumber 37
    info depth 20 currmove f4d3 currmovenumber 38
    info depth 20 currmove f4h3 currmovenumber 39
    info depth 20 currmove f4h5 currmovenumber 40
    info depth 20 currmove d1f1 currmovenumber 41
    info depth 20 currmove g4c8 currmovenumber 42
    info depth 22 seldepth 46 multipv 1 score cp 290 nodes 3978564 nps 885502 hashfull 174 tbhits 0 time 4493 pv g4f3 h1f2 f3f2 c8g4 d1g1 d8d7 h6g7 e8d8 f2h4 d8c8 g1g4 b7b6 f4e2 c8b7 c1d2 b8g8 g4g3 d7e8 h4h7 c6b4 a2a3 b4c6 h7f5 e8f7 f5g6 f7g6 g3g6 e7e5 g6g3 c6d4 e2d4 e5d4 b2b3
    info depth 23 currmove g4f3 currmovenumber 1
    info depth 23 currmove d1h1 currmovenumber 2
    info depth 23 currmove g4g6 currmovenumber 3
    info depth 23 currmove g4g8 currmovenumber 4
    info depth 23 currmove g4h5 currmovenumber 5
    info depth 23 currmove g4g1 currmovenumber 6
    info depth 23 currmove g4g7 currmovenumber 7
    info depth 23 currmove g4h4 currmovenumber 8
    info depth 23 currmove g4h3 currmovenumber 9
    info depth 23 currmove g4g3 currmovenumber 10
    info depth 23 currmove g4d7 currmovenumber 11
    info depth 23 currmove g4f5 currmovenumber 12
    info depth 23 currmove g4e6 currmovenumber 13
    info depth 23 currmove d1g1 currmovenumber 14
    info depth 23 currmove h6g5 currmovenumber 15
    info depth 23 currmove e4e5 currmovenumber 16
    info depth 23 currmove h6g7 currmovenumber 17
    info depth 23 currmove f4d5 currmovenumber 18
    info depth 23 currmove f4e6 currmovenumber 19
    info depth 23 currmove c1b1 currmovenumber 20
    info depth 23 currmove a2a3 currmovenumber 21
    info depth 23 currmove b2b4 currmovenumber 22
    info depth 23 currmove d4d5 currmovenumber 23
    info depth 23 currmove c4c5 currmovenumber 24
    info depth 23 currmove a2a4 currmovenumber 25
    info depth 23 currmove f4g6 currmovenumber 26
    info depth 23 currmove b2b3 currmovenumber 27
    info depth 23 currmove h6f8 currmovenumber 28
    info depth 23 currmove c1c2 currmovenumber 29
    info depth 23 currmove c1d2 currmovenumber 30
    info depth 23 currmove f4e2 currmovenumber 31
    info depth 23 currmove g4g5 currmovenumber 32
    info depth 23 currmove f4d3 currmovenumber 33
    info depth 23 currmove f4h5 currmovenumber 34
    info depth 23 currmove f4h3 currmovenumber 35
    info depth 23 currmove f4g2 currmovenumber 36
    info depth 23 currmove d1e1 currmovenumber 37
    info depth 23 currmove d1f1 currmovenumber 38
    info depth 23 currmove d1d3 currmovenumber 39
    info depth 23 currmove g4g2 currmovenumber 40
    info depth 23 currmove d1d2 currmovenumber 41
    info depth 23 currmove g4c8 currmovenumber 42
    info depth 23 seldepth 36 multipv 1 score cp 272 upperbound nodes 4116735 nps 874970 hashfull 179 tbhits 0 time 4705 pv g4f3 h1f2
    info depth 23 currmove g4f3 currmovenumber 1
    info depth 23 currmove d1h1 currmovenumber 2
    info depth 23 currmove g4g6 currmovenumber 3
    info depth 23 currmove g4g8 currmovenumber 4
    info depth 23 currmove g4h5 currmovenumber 5
    info depth 23 currmove g4g7 currmovenumber 6
    info depth 23 currmove g4h4 currmovenumber 7
    info depth 23 currmove g4g1 currmovenumber 8
    info depth 23 currmove g4h3 currmovenumber 9
    info depth 23 currmove g4f5 currmovenumber 10
    info depth 23 currmove g4d7 currmovenumber 11
    info depth 23 currmove g4e6 currmovenumber 12
    info depth 23 currmove g4g3 currmovenumber 13
    info depth 23 currmove g4g5 currmovenumber 14
    info depth 23 currmove f4g6 currmovenumber 15
    info depth 23 currmove g4g2 currmovenumber 16
    info depth 23 currmove d1g1 currmovenumber 17
    info depth 23 currmove f4e6 currmovenumber 18
    info depth 23 currmove d4d5 currmovenumber 19
    info depth 23 currmove e4e5 currmovenumber 20
    info depth 23 currmove f4d5 currmovenumber 21
    info depth 23 currmove h6f8 currmovenumber 22
    info depth 23 currmove d1d2 currmovenumber 23
    info depth 23 currmove h6g7 currmovenumber 24
    info depth 23 currmove c1c2 currmovenumber 25
    info depth 23 currmove f4e2 currmovenumber 26
    info depth 23 currmove c4c5 currmovenumber 27
    info depth 23 currmove a2a4 currmovenumber 28
    info depth 23 currmove d1f1 currmovenumber 29
    info depth 23 currmove h6g5 currmovenumber 30
    info depth 23 currmove c1b1 currmovenumber 31
    info depth 23 currmove f4d3 currmovenumber 32
    info depth 23 currmove b2b3 currmovenumber 33
    info depth 23 currmove f4h5 currmovenumber 34
    info depth 23 currmove d1e1 currmovenumber 35
    info depth 23 currmove c1d2 currmovenumber 36
    info depth 23 currmove d1d3 currmovenumber 37
    info depth 23 currmove a2a3 currmovenumber 38
    info depth 23 currmove b2b4 currmovenumber 39
    info depth 23 currmove f4g2 currmovenumber 40
    info depth 23 currmove f4h3 currmovenumber 41
    info depth 23 currmove g4c8 currmovenumber 42
    info depth 23 seldepth 40 multipv 1 score cp 273 nodes 4428409 nps 862733 hashfull 197 tbhits 0 time 5133 pv g4g6 e8d7 g6f5 d7e8 f5h5 e8d7 h5h3 d7e8 h3f3 h1f2 f3f2 c8g4 d1g1 d8d7 h6g7 e8d8 f2h4 d8c8 g1g4 b7b5 d4d5 c6e5 g4g3 b5c4 h4h3 c8b7 h3d7 e5d7 b2b3 b8g8 b3c4 d7c5 f4e6 b7b6 e6d4 c5e4 g3e3 g8g7 e3e4
    info depth 24 currmove g4g6 currmovenumber 1
    info depth 24 seldepth 40 multipv 1 score cp 286 lowerbound nodes 4671860 nps 863400 hashfull 208 tbhits 0 time 5411 pv g4g6
    info depth 23 currmove g4g6 currmovenumber 1
    info depth 24 seldepth 40 multipv 1 score cp 301 lowerbound nodes 4932073 nps 863307 hashfull 218 tbhits 0 time 5713 pv g4g6
    info depth 22 currmove g4g6 currmovenumber 1
    info depth 24 seldepth 40 multipv 1 score cp 321 lowerbound nodes 5226026 nps 862665 hashfull 229 tbhits 0 time 6058 pv g4g6
    info depth 21 currmove g4g6 currmovenumber 1
    info depth 21 currmove g4f3 currmovenumber 2
    info depth 21 currmove d1h1 currmovenumber 3
    info depth 21 currmove g4g8 currmovenumber 4
    info depth 21 currmove g4g7 currmovenumber 5
    info depth 21 currmove g4h5 currmovenumber 6
    info depth 21 currmove g4h4 currmovenumber 7
    info depth 21 currmove g4h3 currmovenumber 8
    info depth 21 currmove g4g1 currmovenumber 9
    info depth 21 currmove g4f5 currmovenumber 10
    info depth 21 currmove g4d7 currmovenumber 11
    info depth 21 currmove g4e6 currmovenumber 12
    info depth 21 currmove g4g3 currmovenumber 13
    info depth 21 currmove e4e5 currmovenumber 14
    info depth 21 currmove f4h5 currmovenumber 15
    info depth 21 currmove d4d5 currmovenumber 16
    info depth 21 currmove g4g5 currmovenumber 17
    info depth 21 currmove f4g6 currmovenumber 18
    info depth 21 currmove g4g2 currmovenumber 19
    info depth 21 currmove f4d5 currmovenumber 20
    info depth 21 currmove d1g1 currmovenumber 21
    info depth 21 currmove h6g7 currmovenumber 22
    info depth 21 currmove c1d2 currmovenumber 23
    info depth 21 currmove h6g5 currmovenumber 24
    info depth 21 currmove f4e6 currmovenumber 25
    info depth 21 currmove f4e2 currmovenumber 26
    info depth 21 currmove d1d3 currmovenumber 27
    info depth 21 currmove a2a3 currmovenumber 28
    info depth 21 currmove h6f8 currmovenumber 29
    info depth 21 currmove d1e1 currmovenumber 30
    info depth 21 currmove d1f1 currmovenumber 31
    info depth 21 currmove c1b1 currmovenumber 32
    info depth 21 currmove d1d2 currmovenumber 33
    info depth 21 currmove c1c2 currmovenumber 34
    info depth 21 currmove f4d3 currmovenumber 35
    info depth 21 currmove b2b4 currmovenumber 36
    info depth 21 currmove b2b3 currmovenumber 37
    info depth 21 currmove c4c5 currmovenumber 38
    info depth 21 currmove a2a4 currmovenumber 39
    info depth 21 currmove f4g2 currmovenumber 40
    info depth 21 currmove f4h3 currmovenumber 41
    info depth 21 currmove g4c8 currmovenumber 42
    info depth 24 seldepth 40 multipv 1 score cp 317 nodes 5500457 nps 855037 hashfull 242 tbhits 0 time 6433 pv g4g6 e8d7 g6g4 d7e8 g4f3 h1f2 f3f2 c8g4 d1g1 d8d7 h6g7 c6b4 a2a3 e8f7 a3b4 b8g8 g7h6 d7a4 f2c2 a4a1 c2b1 g4f5 g1g8 a1b1 c1b1 f5e4 b1c1 f7g8 f4e6 g8h7 h6d2 c7c6 c4c5 e4f5 e6d8
    info depth 25 currmove g4g6 currmovenumber 1
    info depth 25 currmove g4f3 currmovenumber 2
    info depth 25 currmove d1h1 currmovenumber 3
    info depth 25 currmove g4g8 currmovenumber 4
    info depth 25 currmove g4h5 currmovenumber 5
    info depth 25 currmove g4g7 currmovenumber 6
    info depth 25 currmove g4g1 currmovenumber 7
    info depth 25 currmove g4h4 currmovenumber 8
    info depth 25 currmove g4h3 currmovenumber 9
    info depth 25 currmove g4d7 currmovenumber 10
    info depth 25 currmove d4d5 currmovenumber 11
    info depth 25 currmove g4e6 currmovenumber 12
    info depth 25 currmove g4f5 currmovenumber 13
    info depth 25 currmove g4g3 currmovenumber 14
    info depth 25 currmove d1g1 currmovenumber 15
    info depth 25 currmove f4g6 currmovenumber 16
    info depth 25 currmove f4e6 currmovenumber 17
    info depth 25 currmove c1d2 currmovenumber 18
    info depth 25 currmove b2b3 currmovenumber 19
    info depth 25 currmove c1b1 currmovenumber 20
    info depth 25 currmove e4e5 currmovenumber 21
    info depth 25 currmove f4d3 currmovenumber 22
    info depth 25 currmove c1c2 currmovenumber 23
    info depth 25 currmove c4c5 currmovenumber 24
    info depth 25 currmove f4d5 currmovenumber 25
    info depth 25 currmove h6g5 currmovenumber 26
    info depth 25 currmove h6f8 currmovenumber 27
    info depth 25 currmove f4e2 currmovenumber 28
    info depth 25 currmove f4h5 currmovenumber 29
    info depth 25 currmove b2b4 currmovenumber 30
    info depth 25 currmove h6g7 currmovenumber 31
    info depth 25 currmove a2a4 currmovenumber 32
    info depth 25 currmove f4g2 currmovenumber 33
    info depth 25 currmove f4h3 currmovenumber 34
    info depth 25 currmove g4g5 currmovenumber 35
    info depth 25 currmove d1f1 currmovenumber 36
    info depth 25 currmove d1d2 currmovenumber 37
    info depth 25 currmove d1d3 currmovenumber 38
    info depth 25 currmove d1e1 currmovenumber 39
    info depth 25 currmove a2a3 currmovenumber 40
    info depth 25 currmove g4g2 currmovenumber 41
    info depth 25 currmove g4c8 currmovenumber 42
    info depth 25 seldepth 49 multipv 1 score cp 297 upperbound nodes 5980806 nps 847379 hashfull 264 tbhits 0 time 7058 pv g4g6 e8d7
    info depth 25 currmove g4g6 currmovenumber 1
    info depth 25 seldepth 49 multipv 1 score cp 315 lowerbound nodes 6693718 nps 835670 hashfull 302 tbhits 0 time 8010 pv g4g6
    info depth 24 currmove g4g6 currmovenumber 1
    info depth 24 currmove g4f3 currmovenumber 2
    info depth 24 currmove d1h1 currmovenumber 3
    info depth 24 currmove g4g8 currmovenumber 4
    info depth 24 currmove g4h5 currmovenumber 5
    info depth 24 currmove g4g7 currmovenumber 6
    info depth 24 currmove g4g1 currmovenumber 7
    info depth 24 currmove g4h3 currmovenumber 8
    info depth 24 currmove g4h4 currmovenumber 9
    info depth 24 currmove g4f5 currmovenumber 10
    info depth 24 currmove g4d7 currmovenumber 11
    info depth 24 currmove g4e6 currmovenumber 12
    info depth 24 currmove g4g3 currmovenumber 13
    info depth 24 currmove f4g6 currmovenumber 14
    info depth 24 currmove f4d5 currmovenumber 15
    info depth 24 currmove d1g1 currmovenumber 16
    info depth 24 currmove e4e5 currmovenumber 17
    info depth 24 currmove h6g5 currmovenumber 18
    info depth 24 currmove g4g5 currmovenumber 19
    info depth 24 currmove d4d5 currmovenumber 20
    info depth 24 currmove c1b1 currmovenumber 21
    info depth 24 currmove f4e6 currmovenumber 22
    info depth 24 currmove c4c5 currmovenumber 23
    info depth 24 currmove c1d2 currmovenumber 24
    info depth 24 currmove d1f1 currmovenumber 25
    info depth 24 currmove h6g7 currmovenumber 26
    info depth 24 currmove c1c2 currmovenumber 27
    info depth 24 currmove d1d2 currmovenumber 28
    info depth 24 currmove d1e1 currmovenumber 29
    info depth 24 currmove a2a3 currmovenumber 30
    info depth 24 currmove h6f8 currmovenumber 31
    info depth 24 currmove a2a4 currmovenumber 32
    info depth 24 currmove b2b3 currmovenumber 33
    info depth 24 currmove g4g2 currmovenumber 34
    info depth 24 currmove f4d3 currmovenumber 35
    info depth 24 currmove b2b4 currmovenumber 36
    info depth 24 currmove f4e2 currmovenumber 37
    info depth 24 currmove f4g2 currmovenumber 38
    info depth 24 currmove f4h3 currmovenumber 39
    info depth 24 currmove f4h5 currmovenumber 40
    info depth 24 currmove d1d3 currmovenumber 41
    info depth 24 currmove g4c8 currmovenumber 42
    info depth 25 seldepth 49 multipv 1 score cp 326 nodes 7046600 nps 832439 hashfull 318 tbhits 0 time 8465 pv g4g6 e8d7 g6g4 d7e8 g4f3 h1f2 f3f2 c8g4 d1g1 d8d7 h6g7 c6b4 a2a3 e8f7 a3b4 b8g8 g7h6 d7a4 f2c2 a4a1 c2b1 a1b1 c1b1 g4f3 g1g8 f3e4 b1c1 f7g8 f4e6 g8h7 h6d2 c7c6 e6d8 b7b6 d8e6 h7g8 e6c7 g8f7 c4c5 d6c5 b4c5 b6c5 d4c5
    info depth 26 currmove g4g6 currmovenumber 1
    info depth 26 currmove g4f3 currmovenumber 2
    info depth 26 currmove d1h1 currmovenumber 3
    info depth 26 currmove g4g8 currmovenumber 4
    info depth 26 currmove g4h5 currmovenumber 5
    info depth 26 currmove g4g7 currmovenumber 6
    info depth 26 currmove g4g1 currmovenumber 7
    info depth 26 currmove g4h3 currmovenumber 8
    info depth 26 currmove g4h4 currmovenumber 9
    info depth 26 currmove g4d7 currmovenumber 10
    info depth 26 currmove g4f5 currmovenumber 11
    info depth 26 currmove g4g3 currmovenumber 12
    info depth 26 currmove g4e6 currmovenumber 13
    info depth 26 currmove h6g5 currmovenumber 14
    info depth 26 currmove f4e6 currmovenumber 15
    info depth 26 currmove g4g2 currmovenumber 16
    info depth 26 currmove c1c2 currmovenumber 17
    info depth 26 currmove g4g5 currmovenumber 18
    info depth 26 currmove c1b1 currmovenumber 19
    info depth 26 currmove h6g7 currmovenumber 20
    info depth 26 currmove f4d5 currmovenumber 21
    info depth 26 currmove f4d3 currmovenumber 22
    info depth 26 currmove d1g1 currmovenumber 23
    info depth 26 currmove d1d3 currmovenumber 24
    info depth 26 currmove d1e1 currmovenumber 25
    info depth 26 currmove d1f1 currmovenumber 26
    info depth 26 currmove d1d2 currmovenumber 27
    info depth 26 currmove b2b3 currmovenumber 28
    info depth 26 currmove h6f8 currmovenumber 29
    info depth 26 currmove e4e5 currmovenumber 30
    info depth 26 currmove d4d5 currmovenumber 31
    info depth 26 currmove c1d2 currmovenumber 32
    info depth 26 currmove f4e2 currmovenumber 33
    info depth 26 currmove c4c5 currmovenumber 34
    info depth 26 currmove f4g6 currmovenumber 35
    info depth 26 currmove f4h3 currmovenumber 36
    info depth 26 currmove f4g2 currmovenumber 37
    info depth 26 currmove a2a3 currmovenumber 38
    info depth 26 currmove a2a4 currmovenumber 39
    info depth 26 currmove f4h5 currmovenumber 40
    info depth 26 currmove b2b4 currmovenumber 41
    info depth 26 currmove g4c8 currmovenumber 42
    info depth 26 seldepth 50 multipv 1 score cp 302 upperbound nodes 7961614 nps 834988 hashfull 354 tbhits 0 time 9535 pv g4g6 e8d7
    info depth 26 currmove g4g6 currmovenumber 1
    info depth 26 currmove g4f3 currmovenumber 2
    info depth 26 currmove d1h1 currmovenumber 3
    info depth 26 currmove g4g8 currmovenumber 4
    info depth 26 currmove g4h5 currmovenumber 5
    info depth 26 currmove g4g7 currmovenumber 6
    info depth 26 currmove g4h3 currmovenumber 7
    info depth 26 currmove g4g1 currmovenumber 8
    info depth 26 currmove g4h4 currmovenumber 9
    info depth 26 currmove g4f5 currmovenumber 10
    info depth 26 currmove g4e6 currmovenumber 11
    info depth 26 currmove g4d7 currmovenumber 12
    info depth 26 currmove g4g3 currmovenumber 13
    info depth 26 currmove d1g1 currmovenumber 14
    info depth 26 currmove e4e5 currmovenumber 15
    info depth 26 currmove f4e6 currmovenumber 16
    info depth 26 currmove c1c2 currmovenumber 17
    info depth 26 currmove d4d5 currmovenumber 18
    info depth 26 currmove b2b3 currmovenumber 19
    info depth 26 currmove c1b1 currmovenumber 20
    info depth 26 currmove h6g5 currmovenumber 21
    info depth 26 currmove c1d2 currmovenumber 22
    info depth 26 currmove g4g5 currmovenumber 23
    info depth 26 currmove h6g7 currmovenumber 24
    info depth 26 currmove f4d5 currmovenumber 25
    info depth 26 currmove f4h5 currmovenumber 26
    info depth 26 currmove f4d3 currmovenumber 27
    info depth 26 currmove c4c5 currmovenumber 28
    info depth 26 currmove d1d3 currmovenumber 29
    info depth 26 currmove g4g2 currmovenumber 30
    info depth 26 currmove a2a3 currmovenumber 31
    info depth 26 currmove f4g6 currmovenumber 32
    info depth 26 currmove h6f8 currmovenumber 33
    info depth 26 currmove d1e1 currmovenumber 34
    info depth 26 currmove b2b4 currmovenumber 35
    info depth 26 currmove d1f1 currmovenumber 36
    info depth 26 currmove a2a4 currmovenumber 37
    info depth 26 currmove f4e2 currmovenumber 38
    info depth 26 currmove f4g2 currmovenumber 39
    info depth 26 currmove f4h3 currmovenumber 40
    info depth 26 currmove d1d2 currmovenumber 41
    info depth 26 currmove g4c8 currmovenumber 42
    info depth 26 seldepth 53 multipv 1 score cp 313 nodes 10152064 nps 835698 hashfull 451 tbhits 0 time 12148 pv g4g6 e8d7 g6g4 d7e8 g4f3 c6d4 d1d4 h1f2 f3f2 e7e5 f4d5 e5d4 d5f6 e8f7 f6h7 f7g6 h6g5 d8d7 h7f8 g6g5 f8d7 c8d7 f2d4 d7c6 d4g7 g5f4 g7c7 b8e8 c4c5 e8e4 c5d6 f4e3 c7b6 e4d4 d6d7 c6d7 c1c2 d7c6 c2c3
    info depth 27 currmove g4g6 currmovenumber 1
    info depth 27 currmove g4f3 currmovenumber 2
    info depth 27 currmove d1h1 currmovenumber 3
    info depth 27 currmove g4g8 currmovenumber 4
    info depth 27 currmove g4h5 currmovenumber 5
    info depth 27 currmove g4g7 currmovenumber 6
    info depth 27 currmove g4g1 currmovenumber 7
    info depth 27 currmove g4h4 currmovenumber 8
    info depth 27 currmove g4h3 currmovenumber 9
    info depth 27 currmove g4d7 currmovenumber 10
    info depth 27 currmove g4e6 currmovenumber 11
    info depth 27 currmove g4f5 currmovenumber 12
    info depth 27 currmove g4g3 currmovenumber 13
    info depth 27 currmove h6g5 currmovenumber 14
    info depth 27 currmove h6g7 currmovenumber 15
    info depth 27 currmove g4g2 currmovenumber 16
    info depth 27 currmove d1g1 currmovenumber 17
    info depth 27 currmove d1f1 currmovenumber 18
    info depth 27 currmove e4e5 currmovenumber 19
    info depth 27 currmove d1e1 currmovenumber 20
    info depth 27 currmove f4d5 currmovenumber 21
    info depth 27 currmove d1d2 currmovenumber 22
    info depth 27 currmove d1d3 currmovenumber 23
    info depth 27 currmove c1c2 currmovenumber 24
    info depth 27 currmove d4d5 currmovenumber 25
    info depth 27 currmove c1d2 currmovenumber 26
    info depth 27 currmove h6f8 currmovenumber 27
    info depth 27 currmove f4g6 currmovenumber 28
    info depth 27 currmove c4c5 currmovenumber 29
    info depth 27 currmove c1b1 currmovenumber 30
    info depth 27 currmove f4e6 currmovenumber 31
    info depth 27 currmove f4d3 currmovenumber 32
    info depth 27 currmove b2b3 currmovenumber 33
    info depth 27 currmove a2a3 currmovenumber 34
    info depth 27 currmove g4g5 currmovenumber 35
    info depth 27 currmove b2b4 currmovenumber 36
    info depth 27 currmove a2a4 currmovenumber 37
    info depth 27 currmove f4h3 currmovenumber 38
    info depth 27 currmove f4e2 currmovenumber 39
    info depth 27 currmove f4g2 currmovenumber 40
    info depth 27 currmove f4h5 currmovenumber 41
    info depth 27 currmove g4c8 currmovenumber 42
    info depth 27 seldepth 44 multipv 1 score cp 321 nodes 11283996 nps 834800 hashfull 498 tbhits 0 time 13517 pv g4g6 e8d7 g6g4 d7e8 g4f3 h1f2 f3f2 c8g4 d1g1 d8d7 h6g7 c6b4 a2a3 e8f7 a3b4 b8g8 g7h6 d7a4 f2c2 a4a1 c2b1 g4f3 g1g8 a1b1 c1b1 f3e4 b1c1 f7g8 f4e6 g8h7 h6d2 c7c6 e6d8 b7b6 d8e6 h7g6 e6c7 g6f7 b2b3 b6b5 c4c5 e4d5 c1b2 d5e4
    info depth 28 currmove g4g6 currmovenumber 1
    info depth 28 currmove d1h1 currmovenumber 2
    info depth 28 currmove g4g8 currmovenumber 3
    info depth 28 currmove g4h5 currmovenumber 4
    info depth 28 currmove g4h3 currmovenumber 5
    info depth 28 currmove g4g7 currmovenumber 6
    info depth 28 currmove g4g1 currmovenumber 7
    info depth 28 currmove g4h4 currmovenumber 8
    info depth 28 currmove g4d7 currmovenumber 9
    info depth 28 currmove g4f5 currmovenumber 10
    info depth 28 currmove g4g3 currmovenumber 11
    info depth 28 currmove h6g5 currmovenumber 12
    info depth 28 currmove g4e6 currmovenumber 13
    info depth 28 currmove g4g2 currmovenumber 14
    info depth 28 currmove c1b1 currmovenumber 15
    info depth 28 currmove h6g7 currmovenumber 16
    info depth 28 currmove d1d3 currmovenumber 17
    info depth 28 currmove d1f1 currmovenumber 18
    info depth 28 currmove d1e1 currmovenumber 19
    info depth 28 currmove c1c2 currmovenumber 20
    info depth 28 currmove g4g5 currmovenumber 21
    info depth 28 currmove b2b3 currmovenumber 22
    info depth 28 currmove d1d2 currmovenumber 23
    info depth 28 currmove c1d2 currmovenumber 24
    info depth 28 currmove h6f8 currmovenumber 25
    info depth 28 currmove e4e5 currmovenumber 26
    info depth 28 currmove c4c5 currmovenumber 27
    info depth 28 currmove d1g1 currmovenumber 28
    info depth 28 currmove f4e6 currmovenumber 29
    info depth 28 currmove f4d5 currmovenumber 30
    info depth 28 currmove a2a3 currmovenumber 31
    info depth 28 currmove b2b4 currmovenumber 32
    info depth 28 currmove d4d5 currmovenumber 33
    info depth 28 currmove f4d3 currmovenumber 34
    info depth 28 currmove a2a4 currmovenumber 35
    info depth 28 currmove f4e2 currmovenumber 36
    info depth 28 currmove f4h5 currmovenumber 37
    info depth 28 currmove f4h3 currmovenumber 38
    info depth 28 currmove f4g2 currmovenumber 39
    info depth 28 currmove f4g6 currmovenumber 40
    info depth 28 currmove g4c8 currmovenumber 41
    info depth 28 currmove g4f3 currmovenumber 42
    info depth 28 seldepth 51 multipv 1 score cp 326 nodes 13635736 nps 836394 hashfull 587 tbhits 0 time 16303 pv g4g6 e8d7 g6g4 d7e8 g4f3 h1f2 f3f2 c8g4 d1g1 d8d7 h6g7 c6b4 a2a3 e8f7 a3b4 b8g8 g7h6 d7a4 f2c2 a4a1 c2b1 g4f3 g1g8 a1b1 c1b1 f3e4 b1c1 f7g8 f4e6 g8h7 h6d2 c7c6 e6d8 b7b6 d8e6 h7g8 e6c7 g8f7 c7a6 e4d3 b2b3 b6b5 c4c5 d3e4 a6c7 d6c5 b4c5 e7e5 d4e5 f6e5
    info depth 29 currmove g4g6 currmovenumber 1
    info depth 29 currmove g4f3 currmovenumber 2
    info depth 29 currmove d1h1 currmovenumber 3
    info depth 29 currmove g4g8 currmovenumber 4
    info depth 29 currmove g4h5 currmovenumber 5
    info depth 29 currmove g4h3 currmovenumber 6
    info depth 29 currmove g4h4 currmovenumber 7
    info depth 29 currmove g4g7 currmovenumber 8
    info depth 29 currmove g4g1 currmovenumber 9
    info depth 29 currmove g4f5 currmovenumber 10
    info depth 29 currmove g4g3 currmovenumber 11
    info depth 29 currmove g4e6 currmovenumber 12
    info depth 29 currmove h6g5 currmovenumber 13
    info depth 29 currmove g4d7 currmovenumber 14
    info depth 29 currmove e4e5 currmovenumber 15
    info depth 29 currmove h6g7 currmovenumber 16
    info depth 29 currmove d1d2 currmovenumber 17
    info depth 29 currmove c1b1 currmovenumber 18
    info depth 29 currmove f4e6 currmovenumber 19
    info depth 29 currmove d1d3 currmovenumber 20
    info depth 29 currmove c1c2 currmovenumber 21
    info depth 29 currmove d1f1 currmovenumber 22
    info depth 29 currmove g4g2 currmovenumber 23
    info depth 29 currmove f4d5 currmovenumber 24
    info depth 29 currmove d1e1 currmovenumber 25
    info depth 29 currmove h6f8 currmovenumber 26
    info depth 29 currmove b2b3 currmovenumber 27
    info depth 29 currmove d4d5 currmovenumber 28
    info depth 29 currmove d1g1 currmovenumber 29
    info depth 29 currmove g4g5 currmovenumber 30
    info depth 29 currmove c4c5 currmovenumber 31
    info depth 29 currmove a2a3 currmovenumber 32
    info depth 29 currmove b2b4 currmovenumber 33
    info depth 29 currmove a2a4 currmovenumber 34
    info depth 29 currmove c1d2 currmovenumber 35
    info depth 29 currmove f4e2 currmovenumber 36
    info depth 29 currmove f4d3 currmovenumber 37
    info depth 29 currmove f4h5 currmovenumber 38
    info depth 29 currmove f4g2 currmovenumber 39
    info depth 29 currmove f4h3 currmovenumber 40
    info depth 29 currmove f4g6 currmovenumber 41
    info depth 29 currmove g4c8 currmovenumber 42
    info depth 29 seldepth 56 multipv 1 score cp 304 upperbound nodes 14319744 nps 837411 hashfull 611 tbhits 0 time 17100 pv g4g6 e8d7
    info depth 29 currmove g4g6 currmovenumber 1
    info depth 29 currmove g4f3 currmovenumber 2
    info depth 29 currmove d1h1 currmovenumber 3
    info depth 29 currmove g4g8 currmovenumber 4
    info depth 29 currmove g4g7 currmovenumber 5
    info depth 29 currmove g4h4 currmovenumber 6
    info depth 29 currmove g4h5 currmovenumber 7
    info depth 29 currmove g4g1 currmovenumber 8
    info depth 29 currmove g4h3 currmovenumber 9
    info depth 29 currmove g4d7 currmovenumber 10
    info depth 29 currmove g4f5 currmovenumber 11
    info depth 29 currmove g4e6 currmovenumber 12
    info depth 29 currmove g4g3 currmovenumber 13
    info depth 29 currmove d1g1 currmovenumber 14
    info depth 29 currmove e4e5 currmovenumber 15
    info depth 29 currmove f4e6 currmovenumber 16
    info depth 29 currmove c4c5 currmovenumber 17
    info depth 29 currmove a2a3 currmovenumber 18
    info depth 29 currmove f4d5 currmovenumber 19
    info depth 29 currmove g4g5 currmovenumber 20
    info depth 29 currmove b2b3 currmovenumber 21
    info depth 29 currmove h6g5 currmovenumber 22
    info depth 29 currmove h6g7 currmovenumber 23
    info depth 29 currmove h6f8 currmovenumber 24
    info depth 29 currmove c1b1 currmovenumber 25
    info depth 29 currmove d1e1 currmovenumber 26
    info depth 29 currmove d4d5 currmovenumber 27
    info depth 29 currmove d1d2 currmovenumber 28
    info depth 29 currmove d1d3 currmovenumber 29
    info depth 29 currmove f4e2 currmovenumber 30
    info depth 29 currmove d1f1 currmovenumber 31
    info depth 29 currmove f4d3 currmovenumber 32
    info depth 29 currmove b2b4 currmovenumber 33
    info depth 29 currmove c1d2 currmovenumber 34
    info depth 29 currmove a2a4 currmovenumber 35
    info depth 29 currmove f4g6 currmovenumber 36
    info depth 29 currmove c1c2 currmovenumber 37
    info depth 29 currmove f4g2 currmovenumber 38
    info depth 29 currmove f4h3 currmovenumber 39
    info depth 29 currmove f4h5 currmovenumber 40
    info depth 29 currmove g4g2 currmovenumber 41
    info depth 29 currmove g4c8 currmovenumber 42
    info depth 29 seldepth 58 multipv 1 score cp 306 nodes 16688985 nps 835828 hashfull 687 tbhits 0 time 19967 pv g4g6 e8d7 g6g4 d7e8 g4f3 h1f2 f3f2 c8g4 d1g1 d8d7 h6g7 c6b4 a2a3 e8f7 a3b4 b8g8 g7h6 d7a4 f2c2 a4a1 c2b1 g4f3 g1g8 a1b1 c1b1 f3e4 b1c1 f7g8 f4e6 g8h7 h6e3 c7c6 e6d8 b7b6 d8e6 h7g6 e6c7 b6b5 c7a6 b5c4 c1d2 g6f5 a6c7 e4h1 d2c3 f5e4 e3f2 e4f3 f2h4
    info depth 30 currmove g4g6 currmovenumber 1
    info depth 30 currmove d1h1 currmovenumber 2
    info depth 30 currmove g4g8 currmovenumber 3
    info depth 30 currmove g4h5 currmovenumber 4
    info depth 30 currmove g4g7 currmovenumber 5
    info depth 30 currmove g4h3 currmovenumber 6
    info depth 30 currmove g4g1 currmovenumber 7
    info depth 30 currmove g4h4 currmovenumber 8
    info depth 30 currmove g4d7 currmovenumber 9
    info depth 30 currmove g4f5 currmovenumber 10
    info depth 30 currmove g4g3 currmovenumber 11
    info depth 30 currmove g4e6 currmovenumber 12
    info depth 30 currmove h6g5 currmovenumber 13
    info depth 30 currmove h6g7 currmovenumber 14
    info depth 30 currmove f4d5 currmovenumber 15
    info depth 30 currmove c1b1 currmovenumber 16
    info depth 30 currmove f4e6 currmovenumber 17
    info depth 30 currmove d1d2 currmovenumber 18
    info depth 30 currmove d1d3 currmovenumber 19
    info depth 30 currmove e4e5 currmovenumber 20
    info depth 30 currmove d1e1 currmovenumber 21
    info depth 30 currmove d1f1 currmovenumber 22
    info depth 30 currmove c1c2 currmovenumber 23
    info depth 30 currmove d1g1 currmovenumber 24
    info depth 30 currmove c4c5 currmovenumber 25
    info depth 30 currmove a2a3 currmovenumber 26
    info depth 30 currmove h6f8 currmovenumber 27
    info depth 30 currmove b2b3 currmovenumber 28
    info depth 30 currmove d4d5 currmovenumber 29
    info depth 30 currmove f4d3 currmovenumber 30
    info depth 30 currmove b2b4 currmovenumber 31
    info depth 30 currmove g4g2 currmovenumber 32
    info depth 30 currmove a2a4 currmovenumber 33
    info depth 30 currmove c1d2 currmovenumber 34
    info depth 30 currmove f4h5 currmovenumber 35
    info depth 30 currmove g4g5 currmovenumber 36
    info depth 30 currmove f4e2 currmovenumber 37
    info depth 30 currmove f4h3 currmovenumber 38
    info depth 30 currmove f4g2 currmovenumber 39
    info depth 30 currmove f4g6 currmovenumber 40
    info depth 30 currmove g4c8 currmovenumber 41
    info depth 30 currmove g4f3 currmovenumber 42
    
    info depth 30 seldepth 56 multipv 1 score cp 304 nodes 18908492 nps 839966 hashfull 745 tbhits 0 time 22511 pv g4g6 e8d7 g6g4 d7e8 g4f3 h1f2 f3f2 c8g4 d1g1 d8d7 h6g7 c6b4 a2a3 e8f7 a3b4 b8g8 g7h6 d7a4 f2c2 a4a1 c2b1 g4f3 g1g8 a1b1 c1b1 f3e4 b1c1 f7g8 f4e6 g8h7 h6e3 c7c6 e6d8 b7b6 b2b3 h7g8 d8e6 b6b5 c1b2 e4g2 e6c7 g8f7 c7a6 g2f1 a6c7 b5c4 d4d5 c6d5 b4b5
    bestmove g4g6 ponder e8d7
    

    Stockfish basically wants to go to g6 to check the king expecting it to go back to d7 and then go back to g4?!?! WHY? It literally makes no sense, just take the pawn (g4f3) now!

    This "bug" makes Stockfish look dumb during analysis and during games

    Reviewed by dav1312 at 2022-05-21 11:30
  • 15. Add command line flags to link to information

    This patch provides command line flags --help and --license as well as the corresponding help and license commands.

    $ ./stockfish --help
    Stockfish 200522 by the Stockfish developers (see AUTHORS file)
    
    Stockfish is a powerful chess engine and free software licensed under the GNU GPLv3.
    Stockfish is normally used with a separate graphical user interface (GUI).
    For further information see https://github.com/official-stockfish/Stockfish#readme
    or the corresponding README.md and Copying.txt files distributed with this program.
    
    

    The idea is to provide a minimal help that links to the README.md file, not replicating information that is already available elsewhere.

    We use this opportunity to explicitly report the license as well.

    No functional change.

    Reviewed by vondele at 2022-05-20 05:49
  • 16. SF 15 Linux Install Issues

    I've been running SF on cloud linux machines for the past couple years, and have never had this issue before with an SF download. However, when I try to install Stockfish 15 (unzipping the download from the website, making the binary executable, and trying to run it), I get the following issue:

    ./stockfish_15_x64: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by ./stockfish_15_x64)
    ./stockfish_15_x64: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by ./stockfish_15_x64)
    ./stockfish_15_x64: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by ./stockfish_15_x64)
    ./stockfish_15_x64: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./stockfish_15_x64)
    

    Any guidance? As I've said, I dont have this issue with SF 14 or 13.

    Reviewed by rselwyn at 2022-05-15 22:12
A dependency-free chess engine library built to run anywhere.
A dependency-free chess engine library built to run anywhere.

♔chess-engine♚ A dependency-free chess engine library built to run anywhere. Demo | Docs | Contact Me Written in Rust ?? ?? Why write a Chess engine?

May 10, 2022
Walleye is a chess engine written completely in rust.
Walleye is a chess engine written completely in rust.

Walleye is a UCI-compatible engine written using the classical alpha-beta style AI. It supports loading board positions from arbitrary FEN strings, Unicode pretty printing to the console, and UCI communication logs to help with debugging.

May 13, 2022
Blackmarlin is a chess engine fully written in Rust.

Blackmarlin WIP UCI Chess Engine Blackmarlin is a chess engine fully written in Rust. Make sure to compile the chess engine with cargo build --release

Apr 29, 2022
A basic web assembly chess engine written in rust.

This library is a basic implementation of a chess min-max algorithm with alpha-beta pruning (Algorithm Info). It is designed to be compiled down to WebAssembly and used for web applications.

Feb 3, 2022
Opening randomizer for Chess
Opening randomizer for Chess

chess-randomizer chess-randomizer is a simple opening randomizer written in Rust using WASM and the Lichess API. To build the project, you need Rust a

Jan 31, 2022
Yet another shape chess game in Rust.

shape_chesss_in_rust Yet another shape chess game in Rust. Why the implementation is so slow? The main reason is performance of Vector iteration is ve

Apr 10, 2022
Minecraft-esque voxel engine prototype made with the bevy game engine. Pending bevy 0.6 release to undergo a full rewrite.
Minecraft-esque voxel engine prototype made with the bevy game engine. Pending bevy 0.6 release to undergo a full rewrite.

vx_bevy A voxel engine prototype made using the Bevy game engine. Goals and features Very basic worldgen Animated chunk loading (ala cube world) Optim

May 10, 2022
A refreshingly simple data-driven game engine built in Rust

What is Bevy? Bevy is a refreshingly simple data-driven game engine built in Rust. It is free and open-source forever! WARNING Bevy is still in the ve

May 27, 2022
A modern 3D/2D game engine that uses wgpu.
A modern 3D/2D game engine that uses wgpu.

Harmony A modern 3D/2D game engine that uses wgpu and is designed to work out of the box with minimal effort. It uses legion for handling game/renderi

Mar 27, 2022
RTS game/engine in Rust and WebGPU
RTS game/engine in Rust and WebGPU

What is this? A real time strategy game/engine written with Rust and WebGPU. Eventually it will be able to run in a web browser thanks to WebGPU. This

May 19, 2022
unrust - A pure rust based (webgl 2.0 / native) game engine

unrust A pure rust based (webgl 2.0 / native) game engine Current Version : 0.1.1 This project is under heavily development, all api are very unstable

May 22, 2022
Basic first-person fly camera for the Bevy game engine

bevy_flycam A basic first-person fly camera for Bevy 0.4 Controls WASD to move horizontally SPACE to ascend LSHIFT to descend ESC to grab/release curs

May 17, 2022
A no-frills Tetris implementation written in Rust with the Piston game engine, and Rodio for music.
A no-frills Tetris implementation written in Rust with the Piston game engine, and Rodio for music.

rustris A no-frills Tetris implementation written in Rust with the Piston game engine, and Rodio for music. (C) 2020 Ben Cantrick. This code is distri

May 4, 2022
Inspector plugin for the bevy game engine
Inspector plugin for the bevy game engine

bevy-inspector-egui This crate provides the ability to annotate structs with a #[derive(Inspectable)], which opens a debug interface using egui where

May 21, 2022
Crossterm plugin for the bevy game engine
Crossterm plugin for the bevy game engine

What is bevy_crossterm? bevy_crossterm is a Bevy plugin that uses crossterm as a renderer. It provides custom components and events which allow users

Mar 30, 2022
Concise Reference Book for the Bevy Game Engine

Unofficial Bevy Cheat Book Click here to read the book! Concise reference to programming in the Bevy game engine. Covers useful syntax, features, prog

May 20, 2022
COSI Engine

engine ======= This project is an implementation of the COSI specification written in Rust. This engine is effectively a systemd (pid 1) alternative w

Oct 27, 2021
Rustcraft is a simple Minecraft engine written in rust using wgpu.
Rustcraft is a simple Minecraft engine written in rust using wgpu.

Rustcraft is a simple Minecraft engine written in rust using wgpu.

Apr 4, 2022
Easy to use game engine
Easy to use game engine

arcana Arcana is a game engine built with focus on ease of use without compromising on level of control. Getting started Starting writing a game is as

Feb 11, 2022