Graham Banks wrote:Original engine or Toga clone?
At present I'm treating it as original, unless the consensus says otherwise.
Cheers,
Graham.
I made a quick look over the telling areas for Toga/Fruit clones. These areas are the search and the eval. Is it exactly Toga/Fruit - No.
Is all of Toga/Fruit's personality/style under the hood - YES.
The eval contains all of Toga/Fruit. Piece mobility is calculated exactly the same way and with exactly the same values. One can go down
through the eval source for both programs and easily see identical bonuses/penalties for various pawn structural issues for both opening
and endgame stages. The stages are calculated the same as Fruit.
The main search is split into two parts: searchBest and SearchBestWithoutNullmove. Only Fruti and its clones do that.
Yes, there is more in it than Fruti. So, it is a superset of Fruit. I didn't look at move ordering or move generation. For all I know that could be cloned from Crafty.
I'll say this: if I were to rerelease Protector with all the eval code learned from Fruit/Toga ripped out it would loose several hundred rating points.
The clone discussions have been around for decades and we have batted around the definition of clone. A few years ago, we converged
on our clearest definition of what is and isn't acceptable. I'll paraphrase Bob's definition of black box code here:
It is ok to reuse an algorithm (not code) if that algorithm is a black box. An algorithm is a black box if no matter how you write it,
it can only produce the same output for a given input as anybody else's code would.
Sections of code and algorithms which define the programs personality/style are not acceptable for reproduction. This includes,
but not limited to: the position evaluation, move ordering, pruning, reduction and extension conditions and transposition tables.
Given that Protector clearly copied the Fruit/Toga's eval and bonus/penalty values into Protector. It violates the above statement. The fact that he added extra stuff to the eval doesn't make a difference.The search similarities are almost meaningless given the violations in the eval code.
BTW: the same goes for Sloppy's eval and it's eval is more of a Fruit clone than Protector's thanks to Protector's extra eval code.Sloppy's author admits that in a comment in the eval source code.
An example of something commonly reused: Random number generators. They are required to create hash numbers, but do nothing
to define the personality/style of the programs play. There is another
case in which actual code reuse is nearly acceptable: if the code has to do with OS interaction and the OS doesn't allow any other way
to do that sort of thing. Basically, that falls into the black box definition but does allow for some code reuse.
Mobility can be calculated in another program in lots of different ways. Fruit's method is just one way and Fruit's mobility values and equations are just one way to do it. Thus, reusing them is cloning.
In other words, you could rewrite the entire program in another coding language with your own style of coding. However, if you reuse the eval values and algorithms or any other part that defines playing personality/style then it is cloning.
There are lots of ways to create an eval routine, a pawn eval or a piece mobility eval, therefore reusing those algorithms or source code is cloning.
To me there seems an attempt to make his own program. Maybe not, to completely say that I'd have to read his move gen and move ordering code.
If the eval was rewritten without reuse of Fruit and the move gen/ordering code isn't a clone of any other program, then such a new version wouldn't be a clone.
So, this version is a clone but give the guy a chance to fix the issues in a new version.