Which are the chess engines written from scratch ?

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

Moderator: Ras

JVMerlino
Posts: 1396
Joined: Wed Mar 08, 2006 10:15 pm
Location: San Francisco, California

Re: Which are the chess engines written from scratch ?

Post by JVMerlino »

mar wrote:You can add the following engines (from memory):
Dirty, EveAnn, Myrddin, FireFly, iCE, DiscoCheck, ExChess, Tornado, Frenzee, Glass, Arminius (used to be Hermann), cheng and of course GreKo :)
It is not accurate to say that Myrddin was "written from scratch". I initially used Tom Kerrigan's TSCP code for the Winboard support (with Tom's approval) and, although it has since been heavily modified, its bones are still clearly visible.

And I'm pretty sure that Sungorus is original.

jm
Sedat Canbaz
Posts: 3018
Joined: Thu Mar 09, 2006 11:58 am
Location: Antalya/Turkey

Re: Which are the chess engines written from scratch ?

Post by Sedat Canbaz »

JVMerlino wrote:
mar wrote:You can add the following engines (from memory):
Dirty, EveAnn, Myrddin, FireFly, iCE, DiscoCheck, ExChess, Tornado, Frenzee, Glass, Arminius (used to be Hermann), cheng and of course GreKo :)
It is not accurate to say that Myrddin was "written from scratch". I initially used Tom Kerrigan's TSCP code for the Winboard support (with Tom's approval) and, although it has since been heavily modified, its bones are still clearly visible.

And I'm pretty sure that Sungorus is original.

jm
Thanks for clarification!
Sedat Canbaz
Posts: 3018
Joined: Thu Mar 09, 2006 11:58 am
Location: Antalya/Turkey

Re: Which are the chess engines written from scratch ?

Post by Sedat Canbaz »

Evert wrote:
syzygy wrote: I think "written from scratch" is ill-defined.
It's certainly a term that needs to be defined, because people have different interpretations of the term. To me, it means "I wrote all the code", but it seems that the definition here is more restricted.
Crafty was based on Cray Blitz. It was not written "from scratch".
By the same author though, and the code had to be written from scratch in the sense that it had to be typed in an editor by the programmer, since Cray Blitz is written in FORTRAN and Crafty is C.
Pro Deo might be based in part on Rebel (I don't know).
I thought it was basically the current version of Rebel and the name-change is because of Ed's formal retirement (personally I prefer the name Rebel).
My private engine is a rewrite of an earlier engine, so it was not written "from scratch".
Evidently, the current version of Jazz is based on an earlier version of Jazz Where do you draw the line? When all earlier versions of the program had the same name?

Yes...Agreed with you

In my opinion,
Crafty and Pro Deo should be counted as scratch engines and both engines will be participated too

Cray Blitz and Rebel chess programs belongs to 1980-1990's years, where later both engines become compatible to play on decent hardwares and GUIs
User avatar
pedrox
Posts: 1056
Joined: Fri Mar 10, 2006 6:07 am
Location: Basque Country (Spain)

Re: Which are the chess engines written from scratch ?

Post by pedrox »

Sedat Canbaz wrote:
Uri Blass wrote: I will explain what I did with movei
I did not srart from another engine and modified it(like all the programs that are considered to be clones) but
you can decide that I did not write it from scratch.

1)I started by copying some names of variables and name of functions from tscp but at that point I had no working code(only variables and empty functions and few arrays when I needed to add code for it).

2)I added my own code to make my original legal move generator
and I worked on fixing bugs that I found in it and improving the speed of the program when I use perft to debug it.

3)I added piece square table evaluation that is of course not part of tscp
and is practically worse than tscp evaluation because it did not have knowledge about pawn structure or king safety.

4)I added code to use the alpha beta algorithm based on tscp when I also added some pruning when the remaining depth is small.

This was the first version and later I improved the search and the evaluation.

In the last versions I clearly used ideas from fruit.
For example old movei evaluated mobility based on the number of the legal moves and I changed the code to give a bigger weight to knight moves or bishop moves based on the ideas from fruit.
Another example is that fruit use average between opening function and endgame function based on the stage of the game.

I did not have this idea in movei and changed it to have average between opening and endgame evaluation because I learned it from fruit.

Fabien did not invent this idea but I did not know earlier that this idea is a good idea.
Thanks for the honest answer dear Uri

Yes, I see... it seems you put a lot of efforts for creating Movei

But however, in my understanding Movei is not a scratch engine

Note that my new tournament project is just for participants which are totally written from scratch

If you use alpha-beta, you do not you start from scratch.
If you use null move, you do not you start from scratch.
If you use hash tables, you do not you start from scratch.
If you use mailbox or bitboards for gen moves, you do not start from scratch.
If you're using futility prunning, razoring or LMR you do not you start from scratch.
etc.

A programmer who starts his engine from scratch with their own ideas without ever seeing anything about chess programming hardly he get a program thath play above 1800 Elo points.

Copy these ideas from the discussion in a forum, website or publication in book not have any difference to find ideas in the code of another engine.

If you exclude Movei engine into your list, then will be difficult to find a engine that has started from scratch. I think Uri copied ideas, not code.

In your list you have engines that by your definition does not start from scratch. I'm sure all engines on your list use ideas that are not only of this programmer, so theses engines are not written from scratch.

If you consider that use ideas of others is permitted and has nothing to do with starting from scratch then I do not understand why you exclude Movei.
Henk
Posts: 7251
Joined: Mon May 27, 2013 10:31 am

Re: Which are the chess engines written from scratch ?

Post by Henk »

pedrox wrote:
Sedat Canbaz wrote:
Uri Blass wrote: I will explain what I did with movei
I did not srart from another engine and modified it(like all the programs that are considered to be clones) but
you can decide that I did not write it from scratch.

1)I started by copying some names of variables and name of functions from tscp but at that point I had no working code(only variables and empty functions and few arrays when I needed to add code for it).

2)I added my own code to make my original legal move generator
and I worked on fixing bugs that I found in it and improving the speed of the program when I use perft to debug it.

3)I added piece square table evaluation that is of course not part of tscp
and is practically worse than tscp evaluation because it did not have knowledge about pawn structure or king safety.

4)I added code to use the alpha beta algorithm based on tscp when I also added some pruning when the remaining depth is small.

This was the first version and later I improved the search and the evaluation.

In the last versions I clearly used ideas from fruit.
For example old movei evaluated mobility based on the number of the legal moves and I changed the code to give a bigger weight to knight moves or bishop moves based on the ideas from fruit.
Another example is that fruit use average between opening function and endgame function based on the stage of the game.

I did not have this idea in movei and changed it to have average between opening and endgame evaluation because I learned it from fruit.

Fabien did not invent this idea but I did not know earlier that this idea is a good idea.
Thanks for the honest answer dear Uri

Yes, I see... it seems you put a lot of efforts for creating Movei

But however, in my understanding Movei is not a scratch engine

Note that my new tournament project is just for participants which are totally written from scratch

If you use alpha-beta, you do not you start from scratch.
If you use null move, you do not you start from scratch.
If you use hash tables, you do not you start from scratch.
If you use mailbox or bitboards for gen moves, you do not start from scratch.
If you're using futility prunning, razoring or LMR you do not you start from scratch.
etc.

A programmer who starts his engine from scratch with their own ideas without ever seeing anything about chess programming hardly he get a program thath play above 1800 Elo points.

Copy these ideas from the discussion in a forum, website or publication in book not have any difference to find ideas in the code of another engine.

If you exclude Movei engine into your list, then will be difficult to find a engine that has started from scratch. I think Uri copied ideas, not code.

In your list you have engines that by your definition does not start from scratch. I'm sure all engines on your list use ideas that are not only of this programmer, so theses engines are not written from scratch.

If you consider that use ideas of others is permitted and has nothing to do with starting from scratch then I do not understand why you exclude Movei.
According to this definition my chess program did not start from scratch. At school they already tell you about alpha beta algorithm. And when you start searching on the internet using the words 'computer chess' you are already lost.
Sedat Canbaz
Posts: 3018
Joined: Thu Mar 09, 2006 11:58 am
Location: Antalya/Turkey

Re: Which are the chess engines written from scratch ?

Post by Sedat Canbaz »

pedrox wrote:
Sedat Canbaz wrote:
Uri Blass wrote: I will explain what I did with movei
I did not srart from another engine and modified it(like all the programs that are considered to be clones) but
you can decide that I did not write it from scratch.

1)I started by copying some names of variables and name of functions from tscp but at that point I had no working code(only variables and empty functions and few arrays when I needed to add code for it).

2)I added my own code to make my original legal move generator
and I worked on fixing bugs that I found in it and improving the speed of the program when I use perft to debug it.

3)I added piece square table evaluation that is of course not part of tscp
and is practically worse than tscp evaluation because it did not have knowledge about pawn structure or king safety.

4)I added code to use the alpha beta algorithm based on tscp when I also added some pruning when the remaining depth is small.

This was the first version and later I improved the search and the evaluation.

In the last versions I clearly used ideas from fruit.
For example old movei evaluated mobility based on the number of the legal moves and I changed the code to give a bigger weight to knight moves or bishop moves based on the ideas from fruit.
Another example is that fruit use average between opening function and endgame function based on the stage of the game.

I did not have this idea in movei and changed it to have average between opening and endgame evaluation because I learned it from fruit.

Fabien did not invent this idea but I did not know earlier that this idea is a good idea.
Thanks for the honest answer dear Uri

Yes, I see... it seems you put a lot of efforts for creating Movei

But however, in my understanding Movei is not a scratch engine

Note that my new tournament project is just for participants which are totally written from scratch

If you use alpha-beta, you do not you start from scratch.
If you use null move, you do not you start from scratch.
If you use hash tables, you do not you start from scratch.
If you use mailbox or bitboards for gen moves, you do not start from scratch.
If you're using futility prunning, razoring or LMR you do not you start from scratch.
etc.

A programmer who starts his engine from scratch with their own ideas without ever seeing anything about chess programming hardly he get a program thath play above 1800 Elo points.

Copy these ideas from the discussion in a forum, website or publication in book not have any difference to find ideas in the code of another engine.

If you exclude Movei engine into your list, then will be difficult to find a engine that has started from scratch. I think Uri copied ideas, not code.

In your list you have engines that by your definition does not start from scratch. I'm sure all engines on your list use ideas that are not only of this programmer, so theses engines are not written from scratch.

If you consider that use ideas of others is permitted and has nothing to do with starting from scratch then I do not understand why you exclude Movei.

I started by copying some names of variables and name of functions from tscp but at that point I had no working code(only variables and empty functions and few arrays when I needed to add code for it).

Thanks for the useful info...

First of all,
I have nothing against Uri or his engine

So...after reading the above Uri's posting, I noticed that Movei is not started 100 % from scratch...

I could be wrong too...

Of course we need more clarifications by the experts, who knows maybe later I can include Movei too :)
Last edited by Sedat Canbaz on Sat Jan 18, 2014 2:33 pm, edited 1 time in total.
User avatar
pedrox
Posts: 1056
Joined: Fri Mar 10, 2006 6:07 am
Location: Basque Country (Spain)

Re: Which are the chess engines written from scratch ?

Post by pedrox »

Henk wrote:
pedrox wrote:
Sedat Canbaz wrote:
Uri Blass wrote: I will explain what I did with movei
I did not srart from another engine and modified it(like all the programs that are considered to be clones) but
you can decide that I did not write it from scratch.

1)I started by copying some names of variables and name of functions from tscp but at that point I had no working code(only variables and empty functions and few arrays when I needed to add code for it).

2)I added my own code to make my original legal move generator
and I worked on fixing bugs that I found in it and improving the speed of the program when I use perft to debug it.

3)I added piece square table evaluation that is of course not part of tscp
and is practically worse than tscp evaluation because it did not have knowledge about pawn structure or king safety.

4)I added code to use the alpha beta algorithm based on tscp when I also added some pruning when the remaining depth is small.

This was the first version and later I improved the search and the evaluation.

In the last versions I clearly used ideas from fruit.
For example old movei evaluated mobility based on the number of the legal moves and I changed the code to give a bigger weight to knight moves or bishop moves based on the ideas from fruit.
Another example is that fruit use average between opening function and endgame function based on the stage of the game.

I did not have this idea in movei and changed it to have average between opening and endgame evaluation because I learned it from fruit.

Fabien did not invent this idea but I did not know earlier that this idea is a good idea.
Thanks for the honest answer dear Uri

Yes, I see... it seems you put a lot of efforts for creating Movei

But however, in my understanding Movei is not a scratch engine

Note that my new tournament project is just for participants which are totally written from scratch

If you use alpha-beta, you do not you start from scratch.
If you use null move, you do not you start from scratch.
If you use hash tables, you do not you start from scratch.
If you use mailbox or bitboards for gen moves, you do not start from scratch.
If you're using futility prunning, razoring or LMR you do not you start from scratch.
etc.

A programmer who starts his engine from scratch with their own ideas without ever seeing anything about chess programming hardly he get a program thath play above 1800 Elo points.

Copy these ideas from the discussion in a forum, website or publication in book not have any difference to find ideas in the code of another engine.

If you exclude Movei engine into your list, then will be difficult to find a engine that has started from scratch. I think Uri copied ideas, not code.

In your list you have engines that by your definition does not start from scratch. I'm sure all engines on your list use ideas that are not only of this programmer, so theses engines are not written from scratch.

If you consider that use ideas of others is permitted and has nothing to do with starting from scratch then I do not understand why you exclude Movei.
According to this definition my chess program did not start from scratch. At school they already tell you about alpha beta algorithm. And when you start searching on the internet using the words 'computer chess' you are already lost.
You can start your engine from scratch and not have a single original idea, everything your engine has existed before.

On the other hand you can start your engine from a generator of movements, adding a search and an evaluation that are works of art and completely original and yet be punished for not starting from scratch.
Henk
Posts: 7251
Joined: Mon May 27, 2013 10:31 am

Re: Which are the chess engines written from scratch ?

Post by Henk »

pedrox wrote:
Henk wrote:
pedrox wrote:
Sedat Canbaz wrote:
Uri Blass wrote: I will explain what I did with movei
I did not srart from another engine and modified it(like all the programs that are considered to be clones) but
you can decide that I did not write it from scratch.

1)I started by copying some names of variables and name of functions from tscp but at that point I had no working code(only variables and empty functions and few arrays when I needed to add code for it).

2)I added my own code to make my original legal move generator
and I worked on fixing bugs that I found in it and improving the speed of the program when I use perft to debug it.

3)I added piece square table evaluation that is of course not part of tscp
and is practically worse than tscp evaluation because it did not have knowledge about pawn structure or king safety.

4)I added code to use the alpha beta algorithm based on tscp when I also added some pruning when the remaining depth is small.

This was the first version and later I improved the search and the evaluation.

In the last versions I clearly used ideas from fruit.
For example old movei evaluated mobility based on the number of the legal moves and I changed the code to give a bigger weight to knight moves or bishop moves based on the ideas from fruit.
Another example is that fruit use average between opening function and endgame function based on the stage of the game.

I did not have this idea in movei and changed it to have average between opening and endgame evaluation because I learned it from fruit.

Fabien did not invent this idea but I did not know earlier that this idea is a good idea.
Thanks for the honest answer dear Uri

Yes, I see... it seems you put a lot of efforts for creating Movei

But however, in my understanding Movei is not a scratch engine

Note that my new tournament project is just for participants which are totally written from scratch

If you use alpha-beta, you do not you start from scratch.
If you use null move, you do not you start from scratch.
If you use hash tables, you do not you start from scratch.
If you use mailbox or bitboards for gen moves, you do not start from scratch.
If you're using futility prunning, razoring or LMR you do not you start from scratch.
etc.

A programmer who starts his engine from scratch with their own ideas without ever seeing anything about chess programming hardly he get a program thath play above 1800 Elo points.

Copy these ideas from the discussion in a forum, website or publication in book not have any difference to find ideas in the code of another engine.

If you exclude Movei engine into your list, then will be difficult to find a engine that has started from scratch. I think Uri copied ideas, not code.

In your list you have engines that by your definition does not start from scratch. I'm sure all engines on your list use ideas that are not only of this programmer, so theses engines are not written from scratch.

If you consider that use ideas of others is permitted and has nothing to do with starting from scratch then I do not understand why you exclude Movei.
According to this definition my chess program did not start from scratch. At school they already tell you about alpha beta algorithm. And when you start searching on the internet using the words 'computer chess' you are already lost.
You can start your engine from scratch and not have a single original idea, everything your engine has existed before.

On the other hand you can start your engine from a generator of movements, adding a search and an evaluation that are works of art and completely original and yet be punished for not starting from scratch.
Perhaps if you invent a new original random number generator and only use that as your evaluation in your chess program then users will certainly judge your chess program as highly original.
Sedat Canbaz
Posts: 3018
Joined: Thu Mar 09, 2006 11:58 am
Location: Antalya/Turkey

Re: Which are the chess engines written from scratch ?

Post by Sedat Canbaz »

Just to make it more clear,

I have already started the test with the bellow conditions:
QX9650 3.0GHz
Win XP Pro x64
Arena 3.0GUI
Perfect 2013
3 Minutes
Ponder ON
1 Core
128 MB Hashtable size
Nalimov 4-men
16 MB Tb cache

So...I hope to publish the new results in a few days...

After playing many games (approx. 100 games) per player, I will have a request from the Chess Experts about running a similarity test/data (the tool by Don Dailey)

In other words,
Those engines, which are with 50 % + similarity will be out of my Scratch engine testing and later I will continue testing only the top 20 scratch engines, which are bellow than 50 % similarity !

Please don't take very seriously my new testing project, its just a fun test, my main goal with the current test is to see more real own engine playings styles...!!



Thanks for your understanding and good luck to all,
Sedat
Last edited by Sedat Canbaz on Sat Jan 18, 2014 3:08 pm, edited 1 time in total.
Henk
Posts: 7251
Joined: Mon May 27, 2013 10:31 am

Re: Which are the chess engines written from scratch ?

Post by Henk »

Henk wrote:
pedrox wrote:
Henk wrote:
pedrox wrote:
Sedat Canbaz wrote:
Uri Blass wrote: I will explain what I did with movei
I did not srart from another engine and modified it(like all the programs that are considered to be clones) but
you can decide that I did not write it from scratch.

1)I started by copying some names of variables and name of functions from tscp but at that point I had no working code(only variables and empty functions and few arrays when I needed to add code for it).

2)I added my own code to make my original legal move generator
and I worked on fixing bugs that I found in it and improving the speed of the program when I use perft to debug it.

3)I added piece square table evaluation that is of course not part of tscp
and is practically worse than tscp evaluation because it did not have knowledge about pawn structure or king safety.

4)I added code to use the alpha beta algorithm based on tscp when I also added some pruning when the remaining depth is small.

This was the first version and later I improved the search and the evaluation.

In the last versions I clearly used ideas from fruit.
For example old movei evaluated mobility based on the number of the legal moves and I changed the code to give a bigger weight to knight moves or bishop moves based on the ideas from fruit.
Another example is that fruit use average between opening function and endgame function based on the stage of the game.

I did not have this idea in movei and changed it to have average between opening and endgame evaluation because I learned it from fruit.

Fabien did not invent this idea but I did not know earlier that this idea is a good idea.
Thanks for the honest answer dear Uri

Yes, I see... it seems you put a lot of efforts for creating Movei

But however, in my understanding Movei is not a scratch engine

Note that my new tournament project is just for participants which are totally written from scratch

If you use alpha-beta, you do not you start from scratch.
If you use null move, you do not you start from scratch.
If you use hash tables, you do not you start from scratch.
If you use mailbox or bitboards for gen moves, you do not start from scratch.
If you're using futility prunning, razoring or LMR you do not you start from scratch.
etc.

A programmer who starts his engine from scratch with their own ideas without ever seeing anything about chess programming hardly he get a program thath play above 1800 Elo points.

Copy these ideas from the discussion in a forum, website or publication in book not have any difference to find ideas in the code of another engine.

If you exclude Movei engine into your list, then will be difficult to find a engine that has started from scratch. I think Uri copied ideas, not code.

In your list you have engines that by your definition does not start from scratch. I'm sure all engines on your list use ideas that are not only of this programmer, so theses engines are not written from scratch.

If you consider that use ideas of others is permitted and has nothing to do with starting from scratch then I do not understand why you exclude Movei.
According to this definition my chess program did not start from scratch. At school they already tell you about alpha beta algorithm. And when you start searching on the internet using the words 'computer chess' you are already lost.
You can start your engine from scratch and not have a single original idea, everything your engine has existed before.

On the other hand you can start your engine from a generator of movements, adding a search and an evaluation that are works of art and completely original and yet be punished for not starting from scratch.
Perhaps if you invent a new original random number generator and only use that as your evaluation in your chess program then users will certainly judge your chess program as highly original.
Actually this number generator should not be random. A strange algorithm with some major bugs will do, but it should always produce a number.