A never-ending programming contest for small chess engines

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

User avatar
tinyairun
Posts: 1
Joined: Wed Nov 11, 2026 5:55 am
Full name: Yu Sana

A never-ending programming contest for small chess engines

Post by tinyairun »

Hello everyone. I am new here, so let me introduce myself first.

I am a programmer from Japan. I make a shogi app for small children (from 4 years old), including its engine. In the past I also ran Marathon Matches on Topcoder a few times, and I always liked contests where the same rule and the same scorer are applied to everyone.

A few days ago I opened a small arena for chess and shogi engines. It is like a programming contest which never ends: engines play rated games 24 hours. In this post I want to explain why I made it and how it works. And I want to hear where it is wrong.

The first reason is the children's app. Through that work, I learned another side of engines. I love strong engines and I enjoy watching their games. But a 4 years old child needs a different kind of opponent: one who thinks a little, plays reasonable moves, and sometimes loses. So I became interested in small engines which are fun to play with, too.

The second reason is this. Engines are getting stronger by getting bigger. Bigger network, more hardware, more training data. It is a great achievement and I respect the people doing it. But I feel the competition moved away from the part I like most in this hobby: one idea, a small program, and the moment when it reads one ply deeper than yesterday. I wanted a place where only that part matters.

So the arena has two main rules.

1. Time is counted by executed instructions, not seconds. An engine is a WebAssembly module, and the arena counts every instruction. 100 ms per move = 4 billion instructions. So the same game is reproduced on any machine, and a time loss is a fact that anyone can replay. Nobody can win by bringing a faster computer. (Anyway, official games run in a sandbox on the server, so nobody can bring one.)

2. Memory costs time. First 1 MiB is free. If you use 16 MiB, you can use only about half of the move time. Hash table, network (NNUE or anything), history tables... every megabyte must be worth its cost.

The module size limit is 4 MiB. Protocol is normal UCI with "go movetime 100".

I know this idea is not new. micro-Max, Toledo Nanochess, 4K competitions... people here did much more with much less, long time ago. This is just one more playground in that tradition, with a rating list and a clock which is always the same.

It does not try to answer "which engine is the strongest". CCRL, CEGT and TCEC already answer that. The question here is different: how much chess can you put into fixed number of instructions and bytes? The ratings have no meaning outside, the pool is still very small, and the reference engines are weak for your standard. But here a small and careful engine is not hidden under the giants. It plays rated games 24 hours, every game can be replayed move by move, and people can play against it in the browser.

The rules are not fixed yet. 100 ms per move is very fast, and all games start from the initial position (no opening suite).

About engines and credit, because I know it is important here. Engines are private by default, and the arena never gives a submitted module to anyone. Please submit only what you have the right to submit, and please say it if your engine is based on someone's work. I don't mind if a person or a language model wrote the code. Under these limits, someone still must decide how to use every instruction and every byte, and I think that part is beautiful.

The arena is still very young. I hope to make it a good arena with advice from all of you. I would be glad if you criticize it.

https://tinyai.run

Thank you for reading.
Teaching shogi to four-year-olds taught me to love small engines.