Hippo Lite, what's really going on?

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

Moderators: hgm, Rebel, chrisw

mcostalba
Posts: 2684
Joined: Sat Jun 14, 2008 9:17 pm

Re: Hippo Lite, what's really going on?

Post by mcostalba »

Sergei Markoff wrote:
Christopher Conkie wrote:Do you agree with Osipov's opinion that Ippolit is a disassembled Rybka?
I think the Ippolit is the joke by Vasik or by people that Vasik provided by his sources.

I just looked at Ippolit sources, it looks clearly like a joke. Some clever people laughing on some cospiracy-theory moroons. I'm also enjoying throlling here because today I don't beleive in computer chess community any more.
Can I ask why do you think it is a joke ?

For what I can see it is a clearly partially obfuscated source (http://en.wikipedia.org/wiki/Obfuscated_code)

But the reason some obfuscated code of uncertain origin has been posted I don't think it is for joking.

Rybka author lives with the earnings from his code, so I would tend to exclude he posts its secret work, although in an obfuscated form, just for joking.

Someone else could have posted an obfscated source of a disassembled program (and keeping the real and clear source in his pocket...until now at least).

But if I were the original author of that code and I make a living out of that I for sure don't see any joke in it. On the contrary I very probably would see a threat, a sign, a kind of message that someone wants to send to me....for sure not a joke.
User avatar
Dr.Wael Deeb
Posts: 9773
Joined: Wed Mar 08, 2006 8:44 pm
Location: Amman,Jordan

Re: Hippo Lite, what's really going on?

Post by Dr.Wael Deeb »

Christopher Conkie wrote:
Sergei Markoff wrote:
Christopher Conkie wrote:Do you agree with Osipov's opinion that Ippolit is a disassembled Rybka?
I think the Ippolit is the joke by Vasik or by people that Vasik provided by his sources.

I just looked at Ippolit sources, it looks clearly like a joke. Some clever people laughing on some cospiracy-theory moroons. I'm also enjoying throlling here because today I don't beleive in computer chess community any more.
I hope you do believe in them. They need to believe in you or you will not sell much.

Let's call a truce on it. I'm 100% certain it's not a joke, this much is certain.

The very fact that you need to correct basic problems in an engine that strong implies a lot.

You think it is a deliberate ruse? I think you could even ask Gerd Isenberg if it was. He was around when the guy posted in the chessprogramming wiki. We watched it all (as he knows).

See here........

http://chessprogramming.wikispaces.com/ ... s/12040041

This is the last remnant of what was there.

You think Vas would do that to Gerd and the community?

Come on Sergei.....get real please.....

Seriously, no hard feelings but I disagree completely.

Christopher
Sorry Sergei,but I am afraid that Christopher is right....I mean how could Vas be making a joke by throwing away in the net a source code that beats Rybka 3 by at least 50-60 Elo,what kind of joke is this :!: :?:
Regardless of the buggy source code,it would still harm him a lot and I personaly think that after these recent events,the dominance of Rybka is about to come to it's end....
In fact I think that in the upcoming 2-3 months we will witnesss the appearance of several chess engines playing at the level or even stronger than Rybka 4,let alone Rybka 3 which is already has been surpassed....
Dr.D
_No one can hit as hard as life.But it ain’t about how hard you can hit.It’s about how hard you can get hit and keep moving forward.How much you can take and keep moving forward….
James Constance
Posts: 358
Joined: Wed Mar 08, 2006 8:36 pm
Location: UK

Re: Hippo Lite, what's really going on?

Post by James Constance »

Gian-Carlo Pascutto wrote:
James Constance wrote: Agree. The output and evaluation of Strelka and Rybka were almost identical. I haven't seen anything from the output yet that says this is Rybka 3. Perhaps it's a clone of Rybka 4.
Output is meaningless, it's trivial to change. For one, it actually reports the real depth and knps of Rybka, which is interesting in itself :)
Clearly displayed depth and nps can be meaningless. But I would have thought evaluation and the pv are useful in determining whether one engine is based upon another.
Sergei Markoff

Re: Hippo Lite, what's really going on?

Post by Sergei Markoff »

Most importantly.......

http://chessprogramming.wikispaces.com/ ... s/12040041

Remember that 2 == 1 ply

Code: Select all

Cut node reduction: 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10, 10
All node reduction: 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7
Could you tell me which program does this please?

Christopher
It's hard to confess, but I don't know what this numbers mean :) Probably it's neccessary to learn some strange Ippolit stuff to understand it, but I don't really want to do it now because I have a lot of my own ideas to try.

Ipplit name probably came from this movie: http://en.wikipedia.org/wiki/The_Irony_of_Fate
Christopher Conkie
Posts: 6073
Joined: Sat Apr 01, 2006 9:34 pm
Location: Scotland

Re: Hippo Lite, what's really going on?

Post by Christopher Conkie »

Sergei Markoff wrote:
Most importantly.......

http://chessprogramming.wikispaces.com/ ... s/12040041

Remember that 2 == 1 ply

Code: Select all

Cut node reduction: 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10, 10
All node reduction: 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7
Could you tell me which program does this please?

Christopher
It's hard to confess, but I don't know what this numbers mean :) Probably it's neccessary to learn some strange Ippolit stuff to understand it, but I don't really want to do it now because I have a lot of my own ideas to try.

Ipplit name probably came from this movie: http://en.wikipedia.org/wiki/The_Irony_of_Fate
Yes, I should watch that. Maybe the answer is in there........

:)

Bye for now, OK?

:P

Christopher
Sergei Markoff

Re: Hippo Lite, what's really going on?

Post by Sergei Markoff »

Dr.Wael Deeb wrote:Sorry Sergei,but I am afraid that Christopher is right....I mean how could Vas be making a joke by throwing away in the net a source code that beats Rybka 3 by at least 50-60 Elo,what kind of joke is this :!: :?:
Regardless of the buggy source code,it would still harm him a lot and I personaly think that after these recent events,the dominance of Rybka is about to come to it's end....
In fact I think that in the upcoming 2-3 months we will witnesss the appearance of several chess engines playing at the level or even stronger than Rybka 4,let alone Rybka 3 which is already has been surpassed....
Dr.D
I think Rybka 4 will be clearly stronger.
And also I think Ippolit can't change anything in Rybka sales, so Vasik can just enjoy this stuff.
Sergei Markoff

Re: Hippo Lite, what's really going on?

Post by Sergei Markoff »

mcostalba wrote:Can I ask why do you think it is a joke ?
Did you seen Ippolit site?
User avatar
Dr.Wael Deeb
Posts: 9773
Joined: Wed Mar 08, 2006 8:44 pm
Location: Amman,Jordan

Re: Hippo Lite, what's really going on?

Post by Dr.Wael Deeb »

Sergei Markoff wrote:
Dr.Wael Deeb wrote:Sorry Sergei,but I am afraid that Christopher is right....I mean how could Vas be making a joke by throwing away in the net a source code that beats Rybka 3 by at least 50-60 Elo,what kind of joke is this :!: :?:
Regardless of the buggy source code,it would still harm him a lot and I personaly think that after these recent events,the dominance of Rybka is about to come to it's end....
In fact I think that in the upcoming 2-3 months we will witnesss the appearance of several chess engines playing at the level or even stronger than Rybka 4,let alone Rybka 3 which is already has been surpassed....
Dr.D
I think Rybka 4 will be clearly stronger.
And also I think Ippolit can't change anything in Rybka sales, so Vasik can just enjoy this stuff.
As the russians like to say:

Мы будем жить и мы увидим :D

Again I wish you the best with SmarThink's marketing and selling 8-)
A great and unique chess engine....
Dr.D
_No one can hit as hard as life.But it ain’t about how hard you can hit.It’s about how hard you can get hit and keep moving forward.How much you can take and keep moving forward….
Alexander Schmidt
Posts: 1202
Joined: Thu May 10, 2007 2:49 pm

Re: Hippo Lite, what's really going on?

Post by Alexander Schmidt »

After all the discussions I looked as well at Ippolit.

It is totally different to Rybka. Noone is allowed here to say "Rybka is based on Fruit", but there are more similaries between Rybka and Fruit than between Ippolit and Rybka.

Different movegen, Different eval, different UCI handling.

I am looking forward to see someone showing the similaries between Ippolit and Rybka :lol:
User avatar
Zach Wegner
Posts: 1922
Joined: Thu Mar 09, 2006 12:51 am
Location: Earth

Re: Hippo Lite, what's really going on?

Post by Zach Wegner »

Osipov Jury wrote:I think, it was the decompiler.
See:

if ((tower_dynamics->flag & 128))
{
if (score > 0)
{
if (position_fixed.bitboard[enumerated_white_bright])
score -= 20 * (((((((((((((A8) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((A8) & 7) - ((position_fixed.black_king) & 7)) : -(((A8) & 7) - ((position_fixed.black_king) & 7))))) >= (((((((A8) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((A8) >> 3) - ((position_fixed.black_king) >> 3)) : -(((A8) >> 3) - ((position_fixed.black_king) >> 3)))))) ? (((((((A8) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((A8) & 7) - ((position_fixed.black_king) & 7)) : -(((A8) & 7) - ((position_fixed.black_king) & 7))))) : (((((((A8) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((A8) >> 3) - ((position_fixed.black_king) >> 3)) : -(((A8) >> 3) - ((position_fixed.black_king) >> 3)))))))) <= (((((((((((H1) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((H1) & 7) - ((position_fixed.black_king) & 7)) : -(((H1) & 7) - ((position_fixed.black_king) & 7))))) >= (((((((H1) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((H1) >> 3) - ((position_fixed.black_king) >> 3)) : -(((H1) >> 3) - ((position_fixed.black_king) >> 3)))))) ? (((((((H1) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((H1) & 7) - ((position_fixed.black_king) & 7)) : -(((H1) & 7) - ((position_fixed.black_king) & 7))))) : (((((((H1) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((H1) >> 3) - ((position_fixed.black_king) >> 3)) : -(((H1) >> 3) - ((position_fixed.black_king) >> 3))))))))) ? (((((((((((A8) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((A8) & 7) - ((position_fixed.black_king) & 7)) : -(((A8) & 7) - ((position_fixed.black_king) & 7))))) >= (((((((A8) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((A8) >> 3) - ((position_fixed.black_king) >> 3)) : -(((A8) >> 3) - ((position_fixed.black_king) >> 3)))))) ? (((((((A8) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((A8) & 7) - ((position_fixed.black_king) & 7)) : -(((A8) & 7) - ((position_fixed.black_king) & 7))))) : (((((((A8) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((A8) >> 3) - ((position_fixed.black_king) >> 3)) : -(((A8) >> 3) - ((position_fixed.black_king) >> 3)))))))) : (((((((((((H1) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((H1) & 7) - ((position_fixed.black_king) & 7)) : -(((H1) & 7) - ((position_fixed.black_king) & 7))))) >= (((((((H1) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((H1) >> 3) - ((position_fixed.black_king) >> 3)) : -(((H1) >> 3) - ((position_fixed.black_king) >> 3)))))) ? (((((((H1) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((H1) & 7) - ((position_fixed.black_king) & 7)) : -(((H1) & 7) - ((position_fixed.black_king) & 7))))) : (((((((H1) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((H1) >> 3) - ((position_fixed.black_king) >> 3)) : -(((H1) >> 3) - ((position_fixed.black_king) >> 3))))))))) + 10 * (((((((((((((A8) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((A8) & 7) - ((position_fixed.black_king) & 7)) : -(((A8) & 7) - ((position_fixed.black_king) & 7))))) <= (((((((A8) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((A8) >> 3) - ((position_fixed.black_king) >> 3)) : -(((A8) >> 3) - ((position_fixed.black_king) >> 3)))))) ? (((((((A8) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((A8) & 7) - ((position_fixed.black_king) & 7)) : -(((A8) & 7) - ((position_fixed.black_king) & 7))))) : (((((((A8) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((A8) >> 3) - ((position_fixed.black_king) >> 3)) : -(((A8) >> 3) - ((position_fixed.black_king) >> 3)))))))) <= (((((((((((H1) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((H1) & 7) - ((position_fixed.black_king) & 7)) : -(((H1) & 7) - ((position_fixed.black_king) & 7))))) <= (((((((H1) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((H1) >> 3) - ((position_fixed.black_king) >> 3)) : -(((H1) >> 3) - ((position_fixed.black_king) >> 3)))))) ? (((((((H1) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((H1) & 7) - ((position_fixed.black_king) & 7)) : -(((H1) & 7) - ((position_fixed.black_king) & 7))))) : (((((((H1) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((H1) >> 3) - ((position_fixed.black_king) >> 3)) : -(((H1) >> 3) - ((position_fixed.black_king) >> 3))))))))) ? (((((((((((A8) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((A8) & 7) - ((position_fixed.black_king) & 7)) : -(((A8) & 7) - ((position_fixed.black_king) & 7))))) <= (((((((A8) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((A8) >> 3) - ((position_fixed.black_king) >> 3)) : -(((A8) >> 3) - ((position_fixed.black_king) >> 3)))))) ? (((((((A8) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((A8) & 7) - ((position_fixed.black_king) & 7)) : -(((A8) & 7) - ((position_fixed.black_king) & 7))))) : (((((((A8) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((A8) >> 3) - ((position_fixed.black_king) >> 3)) : -(((A8) >> 3) - ((position_fixed.black_king) >> 3)))))))) : (((((((((((H1) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((H1) & 7) - ((position_fixed.black_king) & 7)) : -(((H1) & 7) - ((position_fixed.black_king) & 7))))) <= (((((((H1) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((H1) >> 3) - ((position_fixed.black_king) >> 3)) : -(((H1) >> 3) - ((position_fixed.black_king) >> 3)))))) ? (((((((H1) & 7) - ((position_fixed.black_king) & 7)) >= 0) ? (((H1) & 7) - ((position_fixed.black_king) & 7)) : -(((H1) & 7) - ((position_fixed.black_king) & 7))))) : (((((((H1) >> 3) - ((position_fixed.black_king) >> 3)) >= 0) ? (((H1) >> 3) - ((position_fixed.black_king) >> 3)) : -(((H1) >> 3) - ((position_fixed.black_king) >> 3)))))))));
I agree that this code was generated automatically, but not by a decompiler. In fact, a decompiler would produce much simpler code here, since this all reduces to a simple statement:

Code: Select all

score -= 20 * MIN&#40;DISTANCE&#40;king, A8&#41;, DISTANCE&#40;king, H1&#41;) + 10 * MIN&#40;DISTANCE&#40;king, H8&#41;, DISTANCE&#40;king, A1&#41;)
...to get the distance from the nearest "correct" corner in a bishop endgame, and still penalize the other corners. (I think that's correct at least...).

I'm pretty sure it's just a preprocessor running this. All of this looks like the original code had some pretty twisted nested macros. If you look at each piece, they look like expanded FILE_OF, RANK_OF, ABS, MIN, and MAX macros. Example:

Code: Select all

#define RANK_OF&#40;x&#41; (&#40;x&#41; >> 3&#41;
#define ABS&#40;a&#41; ((&#40;a&#41;>=0&#41;?&#40;a&#41;&#58;-&#40;a&#41;)
#define RANK_DIST&#40;a,b&#41; &#40;ABS&#40;RANK_OF&#40;a&#41;-RANK_OF&#40;b&#41;))

((&#40;H1&#41; >> 3&#41; - (&#40;position_fixed.black_king&#41; >> 3&#41;) >= 0&#41; ? ((&#40;H1&#41; >> 3&#41; - (&#40;position_fixed.black_king&#41; >> 3&#41;) &#58; -((&#40;H1&#41; >> 3&#41; - (&#40;position_fixed.black_king&#41; >> 3&#41;))

//...turns into...
RANK_DIST&#40;H1, position_fixed.black_king&#41;
Also, it's pretty clear to me that the b code (I know that's not the right letter :)) is just phony. Total nonsense. Written in Microsoft Word?? So I'd guess that this code was decompiled by hand, condensed into readable macros, and then preprocessed. Also notice that there are no macros (besides #includes and the stuff in localdefs.h).

I'd also agree with Nelson Hernandez that the site is absolutely hilarious. The arguing between them, the English that was obviously from an online translator, etc. etc.