Skip to content
Home » News » Integrate a Third NNUE in Wordfish

Integrate a Third NNUE in Wordfish

Third NNUE Wordfish

Integrate a Third NNUE Network in Wordfish (FalconFile)

0) What you’ll need

  • A recent Wordfish binary built with NNUE support.
  • The NNUE weight file you want to use as the third network. In this guide we call it 3.net (you can use any filename; FalconFile lets you point to it).
  • File system access to place the network near the engine or anywhere readable.

Note: There is no 3.net in the Wordfish repository. You must obtain an NNUE weight from a trusted source (e.g., official Stockfish network releases). Then either keep its original filename or rename it to 3.net if you like the convention.


1) Obtain the network file

Windows (PowerShell)

# Example: download to current folder and name it 3.net
Invoke-WebRequest -Uri "<ACTUAL-NETWORK-URL>" -OutFile "3.net"

Windows (CMD)

curl -L "<ACTUAL-NETWORK-URL>" -o 3.net

Linux / macOS

wget "<ACTUAL-NETWORK-URL>" -O 3.net
# or
curl -L "<ACTUAL-NETWORK-URL>" -o 3.net
  • Replace <ACTUAL-NETWORK-URL> with the real link to the NNUE weight you want.
  • If the file doesn’t naturally end with .net or .nnue, it’s fine—Wordfish only needs the correct path. The name 3.net is just a practical label.

(Optional) Verify checksum
If the source publishes a checksum:

# Linux/macOS
sha256sum 3.net
# Windows PowerShell
Get-FileHash .\3.net -Algorithm SHA256

Compare the output with the published hash.


2) Place the network file

You have two common choices:

  • Same folder as the engine executable (simple, portable).
  • Anywhere on disk, and you’ll pass an absolute path to FalconFile.

Examples:

  • C:\Engines\Wordfish\wordfish.exe and C:\Engines\Wordfish\3.net
  • /home/user/engines/wordfish/wordfish and /home/user/engines/wordfish/3.net

3) Tell Wordfish to use the network (UCI FalconFile)

A) Plain console (quick sanity check)

Start the engine, switch to UCI mode, set the option, and verify readiness.

Windows (CMD / PowerShell):

wordfish.exe
uci
setoption name FalconFile value 3.net
isready

Linux / macOS:

./wordfish
uci
setoption name FalconFile value 3.net
isready
  • If 3.net isn’t in the same directory, pass a full path: setoption name FalconFile value C:\Engines\Wordfish\networks\3.net or setoption name FalconFile value /home/user/engines/wordfish/networks/3.net
  • After isready, the engine should respond with readyok. Many builds also print an info string indicating the network file it loaded. That’s a good sign you’re using the intended model.

B) CuteChess-CLI

cutechess-cli \
  -engine cmd="C:\Engines\Wordfish\wordfish.exe" option.FalconFile="C:\Engines\Wordfish\3.net" option.Hash=256 option.Threads=8 \
  -engine cmd="C:\Engines\Other\opponent.exe" option.Hash=256 option.Threads=8 \
  -each tc=10+0.1 -rounds 50 -concurrency 8

Tip: In CuteChess-CLI, engine options are specified as option.<UCIName>=<value>.

C) FastChess

fastchess.exe ^
  -engine cmd="C:\Engines\Wordfish\wordfish.exe" option.FalconFile="C:\Engines\Wordfish\3.net" option.Hash=256 option.Threads=8 ^
  -engine cmd="C:\Engines\Other\opponent.exe" option.Hash=256 option.Threads=8 ^
  -each tc=10+0.1 -rounds 50 -concurrency 8

Important: Use the option.<UCIName>=<value> form in FastChess (e.g., option.FalconFile=3.net). Don’t use initstr; FastChess does not accept that parameter.

D) Common desktop GUIs

  • BanksiaGUI / Arena / Cute Chess GUI / Fritz / ChessBase:
    Add Wordfish as a UCI engine → open Engine Options → find FalconFile → set to your 3.net (or browse to an absolute path).
    Save/apply and (re)start the engine.

4) Make it persistent

Most GUIs remember engine options after you set them once. For CLI usage, keep the option.FalconFile=... clause in your scripts so future runs automatically load the same network.


5) Verify the network is actually in use

  • On engine start (after uci), set FalconFile, then run: isready ucinewgame position startpos go depth 1 Engines commonly print an info string on load or fail loudly if the file is missing.
  • If you maintain multiple networks, deliberately point to a nonexistent file once to ensure the engine throws an error—this confirms the option is active and not ignored.

6) Typical directory layout (portable)

Wordfish/
├─ wordfish.exe
├─ 3.net
├─ books/
│  └─ mybook.bin
└─ logs/

This keeps the network alongside the binary so FalconFile value 3.net works without absolute paths.


7) Troubleshooting

Q: FalconFile is not listed in UCI options.
A: Update to a Wordfish build that includes the option and NNUE support, then check again with uci. (Some forks expose EvalFile or similar; Wordfish exposes FalconFile per this guide.)

Q: The engine ignores my file or falls back to another net.

  • Ensure the path is correct. Quote paths with spaces: option.FalconFile="C:\Users\Me\Desktop\nets\my third net.nnue"
  • Prefer an absolute path for testing.
  • Confirm file permissions (readable by your user).

Q: “File not found” or “cannot open.”

  • Double-check the filename and extension.
  • Place the file next to the executable and try just 3.net to rule out path issues.

Q: Crash or “invalid network” errors.

  • The file may be corrupt or not a supported NNUE format for your build—download again from a trusted source and verify hash.

Q: Performance seems unchanged.

  • Confirm the engine actually loaded the requested file (watch for load messages, or point to an obviously wrong name to provoke an error).
  • Some GUIs cache options—close the GUI, delete its engine profile, re-add Wordfish, then set FalconFile again.

8) Ready-to-use command snippets

Windows – test quickly in place

cd /d C:\Engines\Wordfish
wordfish.exe
uci
setoption name FalconFile value 3.net
isready
ucinewgame
position startpos
go depth 10

CuteChess-CLI – 1v1 match (Windows)

cutechess-cli -engine cmd="C:\Engines\Wordfish\wordfish.exe" option.FalconFile="C:\Engines\Wordfish\3.net" -engine cmd="C:\Engines\Other\opponent.exe" -each tc=10+0.1 -rounds 50 -concurrency 8

FastChess – 1v1 match (Windows)

fastchess.exe -engine cmd="C:\Engines\Wordfish\wordfish.exe" option.FalconFile="C:\Engines\Wordfish\3.net" -engine cmd="C:\Engines\Other\opponent.exe" -each tc=10+0.1 -rounds 50 -concurrency 8

Linux/macOS – quick check

cd ~/engines/wordfish
./wordfish
uci
setoption name FalconFile value ./3.net
isready

9) (Optional) Keep multiple nets and switch on demand

You can store several nets and point FalconFile to the one you want:

nets/
  ├─ 1.net
  ├─ 2.net
  └─ 3.net

Then:

setoption name FalconFile value /absolute/path/to/nets/3.net

If your GUI supports engine profiles, create one profile per network for one-click switching.


10) Safety & provenance

  • Only use trusted NNUE weights (verify checksums when provided).
  • If you distribute your engine bundle, do not assume you’re allowed to re-host third-party nets—link to the source and include licensing/attribution as required by the network’s publisher.

TL;DR

  1. Download your desired NNUE → save/rename as 3.net.
  2. Put it next to wordfish.exe (or note its absolute path).
  3. Set FalconFile to that file:
setoption name FalconFile value 3.net
  1. Verify with isready and a quick go depth 1.
  2. In CLI tools, pass it as option.FalconFile=....

You’re done—Wordfish will now evaluate with your third network.


Jorge Ruiz

Jorge Ruiz

connoisseur of both chess and anthropology, a combination that reflects his deep intellectual curiosity and passion for understanding both the art of strategic chess books

4 thoughts on “Integrate a Third NNUE in Wordfish”

  1. It would be more interesting if in the next versions they included this third nue already integrated into the engine like the two they already have.

  2. I would like to point out that I test all new engines in PlayChess in the engine room. This version must have some error, as it has lost several games and has the same configuration as the previous version. Please check.
    I hope this has helped. Best regards!

    1. hello Chacal, thank you for you words. Today after revise the code and test in playchess, fixed the bug of evaluation and integration of third nnue correct:Wordfish v. 2.40 120925 avx by Jorge Ruiz Centelles and the Stockfish developers (see AUTHORS file)

      Compiled by : clang++ 20.1.8 on MinGW64
      Compilation architecture : x86-64-avx
      Compilation settings : 64bit SSE41 SSSE3 SSE2 POPCNT
      Compiler __VERSION__ macro : Clang 20.1.8

      uci
      id name Wordfish v. 2.40 120925 avx
      id author Jorge Ruiz Centelles and the Stockfish developers (see AUTHORS file)

      option name Debug Log File type string default
      option name NumaPolicy type string default auto
      option name Threads type spin default 1 min 1 max 1024
      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 256
      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 Minimum Thinking Time type spin default 20 min 0 max 5000
      option name UCI_Chess960 type check default false
      option name UCI_LimitStrength type check default false
      option name UCI_Elo type spin default 1320 min 1320 max 3190
      option name UCI_ShowWDL type check default false
      option name SyzygyPath type string default

      option name SyzygyPremap type check default false
      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 Book1 type check default false
      option name Book1 File type string default

      option name Book1 BestBookMove type check default false
      option name Book1 Depth type spin default 255 min 1 max 350
      option name Book1 Width type spin default 1 min 1 max 10
      option name Book2 type check default false
      option name Book2 File type string default

      option name Book2 BestBookMove type check default false
      option name Book2 Depth type spin default 255 min 1 max 350
      option name Book2 Width type spin default 1 min 1 max 10
      option name Experience Enabled type check default true
      option name Experience File type string default experience.exp
      option name Experience Readonly type check default false
      option name Experience Prior type check default true
      option name Experience Width type spin default 1 min 1 max 20
      option name Experience Eval Weight type spin default 5 min 0 max 10
      option name Experience Min Depth type spin default 27 min 4 max 64
      option name Experience Max Moves type spin default 16 min 1 max 100
      option name Experience Book type check default false
      option name Experience Book Max Moves type spin default 100 min 1 max 100
      option name Experience Book Min Depth type spin default 4 min 1 max 255
      option name Experience Concurrent type check default false
      option name MCTS by Shashin type check default false
      option name MCTSThreads type spin default 0 min 0 max 512
      option name MCTS Multi Strategy type spin default 20 min 0 max 100
      option name MCTS Multi MinVisits type spin default 5 min 0 max 1000
      option name MCTS Explore type check default false
      option name Adaptive Style type check default false
      option name EvalFile type string default nn-1c0000000000.nnue
      option name EvalFileSmall type string default nn-baff1ede1f90.nnue
      option name FalconFile type string default nn-c01dc0ffeede.nnue
      uciok
      info string experience.exp -> Total moves: 0. Total positions: 0. Duplicate moves: 0. Fragmentation: 0.00%)
      go depth 1
      info string Available processors: 0-23:24-47
      info string Using 1 thread
      info string NNUE evaluation using nn-1c0000000000.nnue (133MiB, (22528, 3072, 15, 32, 1))
      info string NNUE evaluation using nn-baff1ede1f90.nnue (6MiB, (22528, 128, 15, 32, 1))
      info string NNUE evaluation using nn-c01dc0ffeede.nnue (6MiB, (22528, 128, 15, 32, 1))
      bestmove a2a3 ( new release is avaible into the last post) Best regards, Jorge Ruiz.

Leave a Reply

Your email address will not be published. Required fields are marked *