sandermvdb / chess22k

Chessengine written in Java
GNU General Public License v3.0
32 stars 8 forks source link

Tests not working properly #10

Closed respel closed 3 years ago

respel commented 3 years ago

Hi, I was rewriting chess22k in C# and noticed that tests NodeCounter.java and Perft.java are throwing. Is that expected?

sandermvdb commented 3 years ago

Hi,

NodeCounter is not being maintained and can be deleted. The reason Perft is throwing is probably because you need to set EngineConstants.GENERATE_BR_PROMOTIONS=true to enable the generation of bishop- and rook-promotions. This value is being checked by Perft.

Nice that you are rewriting chess22k in C#! May I ask why you've choosen chess22k? And did you make any progress yet? Maybe you could make the C# sourcecode opensource as well :)

In the past I've also looked into this and one thing I noticed is that C# doesn't have built-in methods for Long.bitCount() or Long.numberOfTrailingZeros(). Therefore my assumption was that it would not be as fast as in Java.

These are some features I would like to implement which are currently not possible in Java:

respel commented 3 years ago

NodeCounter is not being maintained and can be deleted. The reason Perft is throwing is probably because you need to set EngineConstants.GENERATE_BR_PROMOTIONS=true to enable the generation of bishop- and rook-promotions. This value is being checked by Perft.

This solves it.

Nice that you are rewriting chess22k in C#! May I ask why you've choosen chess22k? And did you make any progress yet? Maybe you could make the C# sourcecode opensource as well :)

My main aim was to become more proficient at C# itself and thought (re)writing a chess engine could be a good way to do that. I tried first with an engine called "demolito"(written in C) but found out that I was getting bogged down with too many chess engine specific details, thus defeating my initial purpose of learning the language. chess22k, written in Java, provided a good sweet spot for me.

Well, I am done with the initial rewrite but it's not stable and crashing a lot. I'll open source it once those are resolved. I can share with you though if you wanna have a look.

In the past I've also looked into this and one thing I noticed is that C# doesn't have built-in methods for Long.bitCount() or Long.numberOfTrailingZeros(). Therefore my assumption was that it would not be as fast as in Java.

They have this stuff now.

These are some features I would like to implement which are currently not possible in Java:

I certainly will be interested in adding this stuff :)

respel commented 3 years ago

Closing this as the issued has been resolved for me :)