Interview with Richard Vida (Slovakia)
Programmer of Critter
February 20th, 2010
by Richard Vida & Frank Quisinsky
Richard Vida (Slovakia)
A new star was born!
Currently the chess program Critter is mostly unknown for several user of us. The new version of Critter (0.52b) seems to be an ELO giant. From version to version the program gets better. Everyone is thinking, where is the end of that high ELO jumping's. Critter will soon start in our SWCR ratinglist, without any information for me and the community about the programmer and his program. This can't be right! So I asked Richard for a short interview and got his permission directly.
Many thanks for your strong and free chess engine. I replayed some games today, but so far, I don't saw enough for an own and clear opinion about playing-style. It seems that Critter is a very tactical engine, … later more.
Richard, could you write a little bit about yourself. How old are you? How long are you working on Critter? What's your job? The community don't have any information about your Person. Perhaps is it a secret?
There are no secrets about my person, just nobody cared to ask so far :-)
I was born in 1977. I have studied computer science and now I'm working as software developer/consultant. My first encounter with computer chess was back in 80's microcomputer era, playing against Colossus 4.0 on a Sinclair ZX Spectrum. Since then for many years I wasn't interested in chess at all (except for occasional games in our local pub) until I started working on Critter in late 2008. Since then I became addicted to chess programming.
How do you found your motivation in chess programming? Do you have a model in chess programming?
I am a very weak chess player. It was a sort of satisfaction when my program was good enough to win consistently against my stronger playing friends.
Could you describe the playing style of Critter? Perhaps you can write a little bit about strengths and weaknesses!
I will add your answer on the "page of playing styles of the TOP 20".
http://www.nk-qy.info/bericht-swcr-engines.htm (in German language)
Critter is not yet mature enough to have a distinctive playing style and relies more on tactics. Its evaluation weights are pretty conservative in the hope of balanced positional play and that any particular feature does not overshadow others. Maybe the only area where Critter is somewhat speculative is knight vs bishop trade - often preferring the knight, even in positions where other engines clearly favor the bishop.
And on which ideas are you working so far? Can we await again high ELO jumping's in the next available versions?
Next version will be mainly about multiprocessing support. In single CPU mode I don't expect more than 20-30 ELO gain at most, if any. For the future I have a very long list of ideas to try. I think the most promising one is the singular extension. Recently it gave a very nice boost to Stockfish.
Do you have commercial intentions with Critter in the near future?
Perhaps with other chess projects?
I don't think I could make a living from computer chess. For me it is only a hobby and Critter will be always free of charge.
A lot of short questions, sorry. But for the moment I try to get main information's about you. Furthermore, you wrote that English isn't your native language. I hope my questions will be easy to understand. I like such interviews with short questions because my English isn't the best too :-)
Will Critter support multiprocessing in the future?
Yes, the next version will be MP capable. If everything goes well it should be ready sometime around April/May this year.
And endgame table bases like Nalimov? Most of the amateur engines have problems in endgames. Do you added special endgame knowledge's in Critter?
Critter understands basic endgame mates, has perfect KPK knowledge (from built-in bitbase) and recognizes most obvious drawish positions. I am planning to add support for Gaviota table bases in the future. I think GTB is a better choice for developers than Nalimov, because it has a more liberal license.
Critter don't have any uci options / features. It could be interesting to have some parameters for different experiments. I like parameters for king attacks :-). I’m sure you will do some things in the feature?
Sure, it might be a good idea to allow altering evaluation weights or search parameters. So far no one asked for it, but if there is a demand I will surely include some adjustable options.
Do you optimize Critter for each of the available multi-engine-interfaces? What's your favorite GUI?
I have not done any GUI-specific tweaks. I am using mainly Arena for normal games. For ultra fast engine-engine matches I developed a custom auto tester.
How do you test new versions of Critter? With which eng-eng matches, positions or other things? Which engines of other programmers do you prefer in testing your own?
The only objective way to test the strength is to play games. This is extremely time consuming since confirming a small ELO increase requires a _lot_ of games to get low enough error margins. To not waste time on obviously weak or flawed versions, first I usually do a quick "sanity" test, running through some easy tactical positions. Most WAC positions should be solved in under a second. If something is seriously broken it shows up quickly. Then I proceed to positional tests (Swaminathan's Strategic Test Suite). If the new version does not perform significantly worse, then engine-engine matches follow. I test against 10 engines from range 100 ELO better to 100 ELO weaker than the last public Critter release, 500-1000 games each. I wish I had more computers at my disposal.
In these times a lot of engines are available. Users of chess software prefer engines with its own face. Why Critter is an individual engine? Which part of Critter works especially well?
Every engine which is an original work has its own "face" or "individuality". It will have unique set of strengths and weaknesses, even bugs. Even if two programmers implement same ideas, their implementation will be different enough to show up in engine's perceived playing style. But with so many engines out there, users aren't very interested in yet another one, if it is not strong enough. The first thing users typically ask about a new engine is "How strong it is?" or "Can it beat Rybka?". I think that expectations for amateur engines are simply too high.
Do you have problems with different parts in chess programming. Perhaps a problem you can't solved up to now. Means, a problem which makes you headaches since a longer time.
Programming itself is not very hard. Most ideas are straightforward to implement. The hard part is to come up with ideas that actually work. For me the biggest frustrations come from evaluation tuning. It is often very counter intuitive and can be very boring.
I will give you 6 items. Could you shortly comment them?
a) Winboard / UCI protocol
When I started with Critter I read both protocol specifications. I decided to go with UCI because at that time it seemed to me more clear and easier to implement.
Today it doesn't make much difference. With PVS algorithm as implemented in Critter, most searches are done with zero sized window anyway. And the PV nodes aren't searched with full window either, they are still bound by aspiration margins. Maybe MTD would save a few more nodes, but the complications aren't worth it.
c) Alpha-beta pruning
Alpha-beta is the heart of any modern chess program. Without a major paradigm shift it will stay with us for long time.
d) Null-move pruning
Another "must have" feature. Since it gives a very nice ELO boost, everyone does it.
e) Permanent brain on/off matches
For testing I prefer matches with ponder off. But when I just want to sit down and watch some games, I use long time control with ponder on.
f) Fabien Letouzey, free Fruit sources
At the time when Fruit appeared I wasn't involved in chess programming. I'm sure it was a huge contribution to the community, as most programs of today use some ideas from Fruit.
In which part of Critter are you particularly pride?
Oh, it's just a computer program. It is not about pride at all, rather about satisfaction. I tend to look at it as a whole. Every engine is only as strong as its weakest part.
For the future, how much time it costs, to reach the playing strength of Rybka 3? The question seems to be okay, if I compare the great ELO jumping's of Critter in the latest past (CEGT ratings and other results I found)?
It's hard to tell. Improving a pure alpha-beta searcher is quite easy. But as your program get stronger it is gradually harder to improve upon it. Maybe in a year it will reach the strength of R3, but I'm sure by that time there will be even stronger engines.
Have thanks for your time Richard.
SCHACHWELT wish you many success with Critter in the future.
Copyrights and Sources by http://www.schach-welt.de & Frank Quisinsky
Further publication of this interview is allowed and wished,
but with the permission of http://www.schach-welt.de only.
One condition is the complete casting (e.g. imprinted media).
Frank Quisinsky, February 20th, 2010