In practice, for Rybka, this goes up and down. Now, Rybka is getting quite bloated again. There is a constant fight against entropy - both code entropy and "algorithm entropy".
Anyway, computer chess is a funny field, isn't it. 40+ years of work by some of the smarter guys on the planet and what do we really have to show for all of it?
Vas
Anyway, would you say that there is potentially a similar danger of someone doing this with Zappa (current or future versions), or would it seem too complicated to be able to put the product back into its original form with minor changes and whatnot? I know that at least theoretically, the same thing could be tried with your program, but I don't know what would be the results, or if it would take far longer to do something meaningful than with Rybka.
//////////////////////////////////////////////////////////////////////////
// хМХЖХЮКХГЮЖХЪ ОНГХЖХХ ХГ ЯРПНЙХ FEN
void board_from_fen(const char fen[])
{ int pos, i, j;
char c;
memset(Board, 0, sizeof(struct board_t));
pos = 0;
Where is Board supposed to be declared? There are no #includes in that file...
Or is this some funky non-ANSI precompiled header stuff from MSVC?
/* Steinar */
You compile only 3 files
Strelka.c
CONSTS.c
PARSE.c
Board.c is included in strelka.c that has
#include "trans.c"
#include "board.c"
#include "search.c"
#include "eval.c"
#include "genmov.c"
#include "utils.c"
#include "emater.c"
Uri
/* Steinar */
anthony
/* Steinar */
(For the case in question, -combine -fwhole-program will gobble in all files, combine them and do global optimizations on the whole thing. It will only work for C, though, not C++.)
/* Steinar */
else {
GetNumberOfConsoleInputEvents(stdin_h,&val);
return val > 1;
}
Finally I understand why I needed to return two events and not one in microwine! :-)
/* Steinar */
It took about half an hour. I wonder if Rybka itself it as easy to port :-)
/* Steinar */
/* Steinar */
/* Steinar */
Alan
Sure Covekta can contact with S Markoff.
Vas,
this might be suboptimal and could be rather messy.
Even if some parts of Strelka source belong to you, not all of them do and this would make it difficult to claim 'ownership' on the entire code-base.
Additionally, those who have a claim on some of the source code (outside of your claims) might have released their code under a license that is incompatible with the license under which you want to release.
Better option for you, IMO, is to add your name and 'copyright disclaimer' to the existing source (without claiming ownership on the entire code) and then let the other authors, who might find stolen material, do the same. If it happens that some portions of the code must be under GPL while others must not (and are under incompatible license), then the code as such can no longer be distributed.
Claiming ownership on the entire code is probably going to be more burdensome to you than it is worth.
However, taking the position that
1) Strelka contains code stolen from Rybka.
2) You want this (#1) to be known.
3) You, currently, have no reasonable way of enforcing your copyrights ... but might do so in the future.
is simpler to understand, defend, and leaves the door open for you to seek justice at some point.
Regards,
Hristo
How exactly would I go about doing what you suggest?
Vas
"How exactly would I go about doing what you suggest?"
the best thing is to talk to a lawyer about how to do this.
My suggestion would be to identify the parts that belong to you and itemize them (item #1, #2, etc) and then place a copyright notice in all pertinent files:
"[Item name] Copyright (C) Year-Year Vasik Rajlich. All rights reserved."
and then include a disclaimer that some or all of the copyrighted items that belong to you were obtained improperly by Strelka's author.
Since the code is out, by doing the above you would not only 'protect' yourself, but also help other developers (especially the commercial guys) who will have a clear warning as to what they should stay away from in order to avoid getting in legal disputes.
Regarding licenses: if you were to claim ownership (which I think you shouldn't) then you have to select the license and if there is anything in the code that is under the GPL then you must release the whole thing under the GPL or not at all. (Obviously, ideas methods, and procedures don't fall under GPL protection ... only code.) Besides, if Osipov has some original code then that particular code belongs to him and can't be appropriated, even if he has stolen (verbatim) most of the other code.
One of the points of this 'license - ownership' discussion is that if you take ownership you might be not allowed to (legally) distribute the code and therefore no one will see the items upon which you claim copyright. (It is twisted, but the whole thing is twisted)
This becomes a very tricky situation if you assert ownership ... and I'm not sure it is worth it.
Protect what is yours and let the vultures croak.
Best Regards,
Hristo
p.s.
Vas,
this whole thing is so preposterous, ugly and disgusting.
ok, thanks for the comments. I'm going to hold off on doing anything for now, this will all take some time.
Vas
I'm also shocked by some of the logic that these people are using to justify their beliefs--it's worse than a fundamentalist religion in that they are making statements involving elementary logical flaws and then "linking" Strelka to Rybka as engines that use ideas from Fruit. (After all, how would the person who we call Yuri Osipov have had the idea of this without having already seen Rybka's decompiled code?) They then do this and forget that Strelka also uses much of Rybka's code and say that the reasons for the similarities are that Rybka is derived from Fruit. It's really quite incredible.
Geno at TalkChess
GenoM here
thenewone at KasparovChess
Evgenii Manev, Plovdiv, Bulgaria
I would like to encourage anyone who may have a copy of Rybka (or any other commercial engine like Hiarcs... :-P to Harvey)... I would encourage you to pay for it if you haven't done so. "A laborer deserves his wages," and the simple "treats others how you would wish to be treated" if you were the author of a commercial software product. Personally I feel I received much more than I paid for with Rybka (having purchased it back at 2.0Beta8).
Hopefully someone here can help you with the licensing issues (and assist in the code theft issues).
Thanks for your work, Vas.
Rob O.
> The author did at first make attempts to hide the Rybka origins
I'm not sure I completely agree about this - especially with the unchanged values of eval.c (which would be trivial to modify), it seems "obvious" that the author is deliberately trying to show that Strelka 2.0 and Rybka 1.0 have some common parts. It is dangerous to devolve to guessing motives (you alluded to possible blackmail), but one can note that there also seems to be a large "Fruit"-iness to the Strelka 2.0 code, and so perhaps the "main purpose" of the Strelka 2.0 distribution is to enlarge the Rybka-Fruit hypothesis. [I particularly like the function "move_order(move)" in utils.c that does nothing but return move - is there any reason for this but to re-use the Fruit name?]
http://www.ubl.com/artists/belkaandstrelka/
*sigh* i know it's not very important :(
Albert
I live in Turin, the city of the Fiat ( cars industry). In the years 70, the Japanese invaded our city photographing everything. In the following years, the Japanese invaded the market with more beautiful and less expensive models of cars. The Fiat entered a serious phase of crisis (also for other motives). It assembled her efforts on the improvement of the quality of the her production. And she succeeded in holding up the competition.
Then, I believe, that the only way that you have for defending your commercial laws, to be : to create always, more powerful programs.
Remembered that the Japanese, have made never a Ferrari!
despite the so many attempts, the so many copies...
I cannot believe we still have a few unevolved, leftover stragglers of homo erectus in the TalkChess forum denying the Rybka clone nature of Strelka. However, they keep going on, and it should be positively annoying for anyone who has a brain significantly larger than a walnut. The most amusing thing is some keep talking about the supposed "real" nature of 'Yuri Osipov'. I even recall one comment that to those of "us" in the Kasparov chess forum, he is as real as Vas is to Rybka users. How incredibly stupid and naive! When 'Osipov' is interviewed, photographed, and/or otherwise documented by any source of similar reputation to all of the journals, periodicals, etc. in which we've seen Vas (including Chessbase!), then such stupid comments won't be laughable. If 'Osipov' officially comes forward for something that isn't a spoof with 'his' 'own' 'followers', then we might have something on the board...and even when and if that happens, the comments mentioned above would still be incredibly stupid and naive.
[/intemperate thoughts]
I am sorry to hear that a release of Strelka 2.0 sources may have damaged Rybka business.
I have implemented Strelka's 2.0 material tables into Crafty. Is that legal? I am trying to improve Crafty for an eventual re-match against GM Kiril Georgiev... http://www.jurjevic.org.uk/chess/crafty/
May I ask if the material tables are based on IM Larry Kaufman's research published in the article: The Evaluation of Material Imbalances, Chess Life, March 1999?
I am running an interesting tournament at the moment...
http://www.jurjevic.org.uk/chess/crafty/Test.html
The version of Crafty in this tournament uses Strelka 2.0 material tables for material evaluation and slightly modified set of original evaluation parameters, which are in jurjevic.cpf, it also has Strelka's assembler Windows routines for 'find_first' and 'find_last', as well as a Windows assembler routine for 'pop_count', in previous versions of Crafty I haven't used these assembler routines (forgot to set the compiler flag), also this version of Crafty has corrected bugs in quiescent search, EL of AEL pruning is switched off.
I use a version of Strelka 2.0 compiled by me, I used similar compilation flags as for Crafty. I think that I can speed up Strelka a bit by using Crafty's assembler 'pop_count', Strelka uses an non-assembler one (haven't done that yet).
I will most likely not run the tournament to the end, I simply want to get an impression how strong Strelka 2.0 is. So far I found that the style of play of Strelka 2.0 and Rybka is similar.
I sorted out a bit Strelka 2.0 sources, looking at the sources one may come to the concussion that the author of Strelka 2.0 is not well versed in C programming (he included .c files into a .c file, a problem which could have been easily sorted out by introducing an additional .h file) or that he does not bother much about these things.
Zappa looks as the slowest engine of all (assuming that one cannot trust Rybka's nps output), and most of the times its search is the shallowest, Rybka's search is the deepest on average, Strelka is deep too, deeper than Crafty with no EL of AEL pruning.
I must admit that I do not understand how Zappa Mexico could have won in Mexico, apparently the Mexico version is only a marginally improved Zappa 1.1, my tests, including this one, show that Rybka is stronger than Zappa.
The games are played from a selected set of Nunn positions in "the silver suite".
May I ask if it is true that Rybka is based on Fruit?
Thanks.
I did the opposite than you and tried to remove the material imbalance code from strelka and I found that strelka has clear wrong evaluation of material that no program has when it simply seems to overevaluate pawns.
Inspite of this wrong tables strelka was still strong and only lost by a small margin against glaurung so
my opinion is that the material imbalance tables are not the secret of strelka's strength.
Strelka's material imbalance tables are based on some evaluation as beginning point and Crafty has not the same beginning point.
I also see no reason to copy and paste strelka's tables with no understanding.
For your question about how zappa won against rybka then I can say the following:
1)Zappa is better in taking advantage from additional processors and I guess that you did not use 8 processors in your test
2)It is possible that zappa had better book and that does not mean that zappa got better positions out of book but that zappa got positions that it knows to play better.
Uri
> I did the opposite than you and tried to remove the material imbalance code from strelka and I found that strelka has clear wrong evaluation of material that no program has when it simply seems to overevaluate pawns.
My understanding is that the tables contain material scores for all possible material combinations on the board and not only the material imbalance corrections, so I would think that by removing material tables from Strelka 2.0 you would practically remove material knowledge, i.e. Strelka would have no clue that say a queen is more valuable than a pawn.
> Strelka's material imbalance tables are based on some evaluation as beginning point and Crafty has not the same beginning point.
That can easily be scaled, if Crafty's pawn value is a 100, then the scaling factor is 100 / 3399.
> I also see no reason to copy and paste strelka's tables with no understanding.
There is not much to understand here, material values are given for any possible combination of the material on the board and pre-stored in a table for fast access during play, my understanding is that the values were derived using a statistical analysis of high quality games of strong human chess players... http://tinyurl.com/2axzfe
> For your question about how zappa won against rybka then I can say the following: 1)Zappa is better in taking advantage from additional processors and I guess that you did not use 8 processors in your test 2)It is possible that zappa had better book and that does not mean that zappa got better positions out of book but that zappa got positions that it knows to play better.
Right, that could be the explanation. By the way, I think that Crafty has a pretty good parallel algorithm (though I do not understand it). Another though could be that the faster engines calculate (i.e. they run on an 8-core machine) the differences in evaluation between the two engines matters less (as both engines reach 'a critical' depth), just a speculation.
The table is table of correction to the original values that are 1 for pawn 3 for knight and bishop 5 for rook 9 for queen.
The problem is that together with bonus for passed pawns the practical value of pawn is more than 1 and strelka simply overevaluate pawns without the material imbalance tables.
I do not know how the tables were achieved and it is only a conjecture.
You basically cannot use tables of another program with different evaluation and hope for improvement.
If you want to improve crafty by material imbalance tables then the way to do it is to build your own tables when the statistics should be based not only on games but also on crafty's positional evaluation that is different than strelka's evaluation.
Uri
> The table is table of correction to the original values that are 1 for pawn 3 for knight and bishop 5 for rook 9 for queen.
My tests with Crafty show that the tables contain material scores for all possible material combinations on the board and not only the material imbalance corrections, I removed all material evaluation from Crafty and replaced it with Strelka 2.0 tables, i.e. Crafty relies on Strelka 2.0 material tables to say find out how much is queen worth compared to a pawn.
> You basically cannot use tables of another program with different evaluation and hope for improvement.
These tables are generated based on a sound statistical analysis, Crafty had a simple heuristics for material evaluation.
> If you want to improve crafty by material imbalance tables then the way to do it is to build your own tables when the statistics should be based not only on games but also on crafty's positional evaluation that is different than strelka's evaluation.
I see no reason to attempt to correct Strelka 2.0 tables, unless I am going to repeat the same statistical analysis with say different set of games, etc., material versus positional evaluation can be easily scaled.
I do not see how your tests with crafty can show that the table contain material scores and not material corrections when the code clearly show that strelka has material evaluation except the tables.
2)Chess programs have static evaluation that is not about material imbalance and if one chess program has different static evaluation then it means that the material scores that it needs are different scores.
statistical analysis that is only based on games for scores is simply nosense.
You cannot do statistical analysis and say that KRPPP vs KRN is better for the pawns when you ignore the fact that the program has bonus for passed pawns so it already evaluates KRPPP as better than KRN
If you find based on statistical analysis that the average value of KRPPP vs KRN should be one pawn advantage for the side with the pawns and your program already have average positional evaluation of +1 for the pawns then it is illogical to add to this evaluation another +1 for the pawns.
I do not think that material versus positional can be easily scaled and if you try to add to crafty tables from strelka then I expect crafty to be weaker program.
I simply see no reason to do it and if you want to add material imbalance tables then I suggest that you build your own.
Note that I doubt if the material imbalance table help strelka because strelka may use something that is clearly wrong if one side has more than one queen or more than 2 rooks or more than 2 bishops or more than 2 knights.
You can easily see that the evaluation is not symmetric KNNN vs kb may be evaluated different than KB vs knnn and I do not see why do you insist to use tables of a buggy program.
Strelka is strong but material tables are implemented in buggy way and they are simply not the main reason.
Uri
> 1)The tables clearly contain material imbalance corrections for many material configuration(and not for every one because the table does not have material scores for situation when one side has 2 queens).
You may be right, not for every material configuration.
> I do not see how your tests with crafty can show that the table contain material scores and not material corrections when the code clearly show that strelka has material evaluation except the tables.
Strelka 2.0 material evaluation code is...
diff = Board->mat_diff; // ìàòåðèàëüíàÿ ðàçíèöà
summ = (Board->mat_summ) & 0x3FFFF; // ìàòåðèàëüíàÿ ñóììà
flags = 0;
value = diff * 3399;
if (summ < MAX_MATERIAL) {
value += Material[summ].value;
flags = Material[summ].flags;
}
and although...
value = diff * 3399;
is 'outside' the tables it assumes that the relative material values are in 1 : 3 : 3 : 5 : 10 proportion for the imbalance correction...
if (summ < MAX_MATERIAL) {
value += Material[summ].value;
}
to work.
My Strelka 2.0 material evaluation implementation in Crafty goes as follows...
/*
**********************************************************************
* *
* material calculated based on Strtelka 2.0 material tables, which *
* are probably based on IM Larry Kaufman's research published in *
* the article: The Evaluation of Material Imbalances, Chess Life, *
* March 1999. *
* *
**********************************************************************
*/
if (material_table) {
wq = TotalWhiteQueens;
bq = TotalBlackQueens;
wr = TotalWhiteRooks;
br = TotalBlackRooks;
wb = TotalWhiteBishops;
bb = TotalBlackBishops;
wn = TotalWhiteKnights;
bn = TotalBlackKnights;
wp = TotalWhitePawns;
bp = TotalBlackPawns;
summ = wq+bq*2+wr*4+br*12+wb*36+bb*108+wn*324+bn*972+wp*2916+bp*26244;
summ &= 0x3FFFF;
diff = (wq-bq)*10+(wr-br)*5+(wb-bb)*3+(wn-bn)*3+(wp-bp);
value = diff * 3399;
if (summ < MAX_MATERIAL) {
value += MaterialTable[summ].value;
}
score = value * pawn_value / 3399;
}
where normally...
pawn_value = 100
and, when using the tables, all...
knight_value = 325
bishop_value = 325
rook_value = 500
queen_value = 975
are ignored.
> Statistical analysis that is only based on games for scores is simply nosense. You cannot do statistical analysis and say that KRPPP vs KRN is better for the pawns when you ignore the fact that the program has bonus for passed pawns so it already evaluates KRPPP as better than KRN. If you find based on statistical analysis that the average value of KRPPP vs KRN should be one pawn advantage for the side with the pawns and your program already have average positional evaluation of +1 for the pawns then it is illogical to add to this evaluation another +1 for the pawns.
I do not know how the statistical analysis has been carried out, but somehow it should take into account material and not positional factors.
Is the advantage of a bishop pair a material or a positional factor? I understand that most programs treat bishop pair bonus as a non-material score (I think Crafty does too). All which is already covered in the material tables should not be re-evaluated as a positional factor. I'll check Crafty's code and see which evaluation terms need to be disabled when using the tables. Thanks for pointing this out.
> Strelka is strong but material tables are implemented in buggy way and they are simply not the main reason.
I do not know why Strelka is strong, but the material tables look to me as a good idea.
material table is basically table of corrections to scores that the program has without the table.
Crafty and Strelka have different evaluations so you cannot take table from one and put it in another program without demage to playing strengh,
You may delete code for bonus for bishop pairs but there are positional factors that are non constants and not only about material imbalance.
Example:
Strelka has bonus for passed pawns and Crafty also has bonus for passed pawns.
If you analyze games and use statistics then in most cases of KPPPPP vs KNPP the sides with more pawns has passed pawns and get
some bonus for passed pawns.
If the average positional score when you do not consider material is 0.3 pawns for Crafty and 0.6 pawns for strelka then strelka needs different score for the KPPPPP vs KNPP to correct the positional evaluation.
You may try to Compare strelka's score and Crafty's score in many positions from games in order to see how to change the material imbalance scores but if you plan to do something like that then I think that it is simpler to take games and use them to calculate different tables without strelka.
Uri
> You cannot have material table that does not consider positional factors assuming that you have positional evaluation that is not based on the material in the board (and not to evaluate passed pawns or mobility is a bad idea)
Strelka 2.0 material table does not care where the pieces are and in that sense the corrections are not positional.
> Material table is basically table of corrections to scores that the program has without the table. Crafty and Strelka have different evaluations so you cannot take table from one and put it in another program without damage to playing strength.
My understanding is that material table accounts for various material combinations, RP vs BN, RP vs BB, BB vs NN, BB vs BN, and all this taking into account the whole material on the board, i.e. evaluation of BB vs BN depends on the number of pawns on the board, etc. Of course, in that 'material' evaluation there is a 'positional' element, say BB is better then BN when there are less pawns on the board, probably because of the bishops' mobility, but the bishops' mobility has not been exactly calculated, we do not know if the pawns are actually blocking the bishops or not. You can look at the material table score corrections as to account to piece synergy, i.e. P + P is not always 2 * P, etc.
> Example: Strelka has bonus for passed pawns and Crafty also has bonus for passed pawns. If you analyse games and use statistics then in most cases of KPPPPP vs KNPP the sides with more pawns has passed pawns and get some bonus for passed pawns.
If you look at PPPPP vs NPP evaluation correction in the material table as a synergy effect, then passed pawns should be evaluated separately.
> If the average positional score when you do not consider material is 0.3 pawns for Crafty and 0.6 pawns for strelka then strelka needs different score for the KPPPPP vs KNPP to correct the positional evaluation.
Material is material and the table should account for piece synergy correctly no matter how you evaluate your positional score, if I got the ratio between material and positional score right is another matter.
> You may try to Compare strelka's score and Crafty's score in many positions from games in order to see how to change the material imbalance scores but if you plan to do something like that then I think that it is simpler to take games and use them to calculate different tables without strelka.
I have done some comparison between Streelka's 2.0 (complete, not only material) and Crafty's evaluation and I have got that the average absolute difference (calculated based on a relatively large number of positions evaluated when searching a test suite to a fixed depth) is about 1 pawn.
I have done this to see if this difference is correlated to playing strength (not to correct the material table).
"thanks. Yeah, for an open source engine like Crafty I will allow it."
Note that I understand that the table does not consider positional factors and this is the reason that I believe that you cannot expect the same table to be good for all programs.
I understood that the table is about different material combinations but
the table basically correct positional evaluation that is different without the tables.
You may need different corrections for different programs
Suppose that the average positional score of strelka without the tables for KPPPPP vs KNPP is +1 pawn for the pawns because of bonus for passed pawns and suppose the average score based on statistics is 50%
It means that Strelka needs to have score of -1 pawns in the table for KPPPPP vs KNPP to correct the positional score to show average of 0 score.
If the positional score of Crafty is only 0.5 pawns for the side with more pawns then crafty may need -0.5 pawns in the tables to correct the positional score.
You cannot expect table of one program to be used in another program with positive result and the problem is not only direct bonus for specific material structures but also indirect bonuses of mobility and passed pawns that are different for different programs.
Uri
>In light of the above, I am claiming Strelka 2.0 as my own and will release it in the next few days under my own name. The name of the author with the pen name "Osipov" will be included if he comes forward with hiw own real name, otherwise an anonymous contribution will be noted. The contributions of Igor Korshunov will also be confirmed and noted if appropriate. All usage permissions will be granted with this release.
I wonder how many days are "next few days".
"ä" is not a Hungarian letter.
All Hungarian vowels have a short and a long form. The longer forms aren't necessarily just longer, but sometimes are pronounced somewhat differently. Here they are:
a - á, e - é, i - í, o - ó, ö -ő, u - ú, ü - ű
The written (spelt?) e is pronounced like bed and é sounds something like Spain, but only the first part of it, because it's a monophthong. Something like the German später.
So yes, ä sounds similar to é, but the latter is longer and more "open".
And ó in Lékó is something like door.
I hope this is what you wanted to know. :)
Look a little ways up on this page:
> ok, thanks for the comments. I'm going to hold off on doing anything for now, this will all take some time.
How much time are we going to wait?
>In the meantime, if someone has information about 'Osipov', please get in touch with me.
In the latest ICGA Journal, there is a report on the 1st CIS Computer Championship. Strelka participated.
There are 2 pictures of Yuri Osipov included in the report.
http://rybkaforum.net/cgi-bin/rybkaforum/topic_show.pl?tid=3370
The ICGA photos are different from that one, but it is clearly the same person pictured.
Powered by mwForum 2.27.4 © 1999-2012 Markus Wichitill