PicoChess 3.4 ("Transformer-Release")

287 views
Skip to first unread message

Dirk

unread,
Aug 17, 2025, 4:54:22 AMAug 17
to PicoChess

Small update to my GitHub repository:


ChatGPT Image 17. Aug. 2025, 01_10_41.jpeg


I think the new options we now have — especially the ability to tweak playing strength via our PicoChess level settings in the UCI file for engines that don’t support the standard UCI_LimitStrength or Level parameters (looking at you, new Lc0 networks) — are worth giving this release a shiny new sub-version: PicoChess 3.4.


My GitHub repository: https://github.com/tosca07/picochess


Big thanks to Randy for lots of bug fixes and for pushing the idea of combining time control settings with node/depth restrictions (particularly handy for Lc0 level setups).


004.49 4 004.56.jpeg

Aside from a few fixes and Gerhard’s new eBoard support (Tabutronic Spectrum  - already in Randy’s current images), the main change in 3.4 is the added flexibility for restricting depth or nodes while keeping — or adapting — time control settings.


This is made possible via three new dummy UCI parameters (dummy because they’re not real engine parameters, but rather triggers for special PicoChess behavior):


  1. PicoTime – for our retro/MAME engines.
  2. Manual depth/node restriction via the time control menu – as before, you can set a specific depth or node limit manually. When you do this, PicoChess changes the time display to 111111 counting down (ideally it would count up to show actual time used, but that’s not supported yet).
  3. Indirect depth/node/time control via the dummy UCI parameters
    • PicoTime adjusts PicoChess’s time control to match internal Retro engine time settings.
    • PicoDepth or PicoNode restrict strength (e.g. for neural network engines) while keeping the current time setting in place.
    • Even though the engine ignores the time setting in this case, you can still play according to it.


Some background information
The key difference is that UCI engine parameters only apply to the specific engine during its current run, while GO parameters (time, nodes, depth) are global across all engines in PicoChess. So if you set one, it applies everywhere.

This creates a small trap: if you set Node/Depth limits without changing the time control, that limit sticks around globally — easy to forget when switching engines, especially if the level name doesn’t make it obvious.


How we handle it now:

  1. Explicit Node/Depth via time control (same as before)
    • Time control is set to movetime 111111 (easy to spot).
    • Setting is stored in picochess.ini.
    • Works with any engine that supports it, without needing a pre-made UCI file.
    • Persists until you change time control.
  2. Implicit Node/Depth via dummy UCI parameters
    • If the UCI level file contains PicoTime (Retro), PicoNode, or PicoDepth, PicoChess adjusts the GO command automatically.
      • PicoTime → creates a new time control setting.
      • PicoNode / PicoDepth → keeps the current time setting but adds node/depth restriction.
    • No entry is written to picochess.ini (because these values are restored from UCI parameters at startup).
    • Switching to a “normal” engine without these parameters will:
      • For PicoTime: restore the previous time control.
      • For Node/Depth: remove them from the current time control so they only apply to that engine session.


Important remark:

The last chosen setting for time/node/depth (either manual via menu or implicitly via uci file and PicoTime/PicoNode/PicoDepth) will win and be valid for the uci GO command which is sent to the engine.


With these new dummy UCI level settings, we can finally tame engines that normally can’t be strength-limited for us PicoChess players — so now you can enjoy playing them without feeling like you’re facing a chess god every game ♟️😎


Enjoy (coming soon to Randys images I think…)

Dirk


IMG_8233.jpeg

Henri

unread,
Aug 17, 2025, 1:52:55 PMAug 17
to PicoChess
Picochess 3.4, beta 4.1.3, we're really moving fast ;)
Maybe we should wait for Pi Os Trixie before producing a new version/image....

Just a thought,

Henri

Johan Sjöblom

unread,
Aug 19, 2025, 11:08:24 AMAug 19
to PicoChess
Very impressive work. I wonder first minimum step I would need to do in the Pico beta v4 to support LC0 personality variants like you have done. Of course I need to fix issue #85 so that the default section is sent correctly, but I guess I would also need to add the support for PicoNode and PicoDepth so that it gets sent to the engine.

Ideally I would be able to copy changes you have done in picochess.py into the V4 picochess.py but I dont know if I can identify the parts to copy… Although I have tried to keep the main picochess.py with a minimum amount of changes there has been changes that might make it difficult to repeat this in V4.  There are several commits in your V3 repository that I could try to cherrypick… but not sure if I can just do that… I probably need to create a diff file and edit the changes manually.

OR … I could just try to add support for PicoNode and PicoDepth (and fix #85) in uci communication… Would that be a first step? Any hints or advice, or priorities on what I should do next on the V4 to take steps in the same direction?

— Johan

Dirk

unread,
Aug 20, 2025, 3:58:43 AMAug 20
to PicoChess
Johan I will give some input via your GitHub repo ...
Dirk 

Johan Sjöblom

unread,
Aug 24, 2025, 1:19:15 PMAug 24
to PicoChess
Thanks. I have fixed the options sending via the new library, but I am not yet sending Node and Depth in the go command... I will work on that next.
Reply all
Reply to author
Forward
0 new messages