From: mrx <pat...@gm...> - 2015-09-25 08:24:44
|
Hi, I would like to play Chess960 in Scid vs. PC but the feature is not worked on as i understand it. I'm trying to understand where the limitation really is. Given you have a chess engine that supports Chess960, like stockfish, and you configure the engine to work in Chess960 mode. If you would present the engine with a 'normal'/default start position. Wouldn't the Chess960 configured engine still adhere to all the chess rules including castling? The 'normal' start position is one of several valid Chess960 start positions, right? I wanted to try this last night but the UCI_Chess960 UCI config option for Stockfish was not presented in the UI so i couldn't tick the box. Any special reason why this option is being neglected? If i'm correct, I guess this would mean that as long as Scid vs. PC can generate valid Chess960 start positions and the engine can be configured to play according to Chess960 rules, no further changes to Scid vs. PC would be necessary. We could play Chess960 in Scid vs. PC... Am i missing something? // Patrik |
From: Gregor C. <re...@gm...> - 2015-09-25 09:20:15
|
Hi Patrik, > I would like to play Chess960 in Scid vs. PC but the feature is not worked > on as i understand it. Yes, Scid vs PC does not support Chess960: 1. The quite complicated castling rules are not implemented. The implementation of these rules has more impact than only the change of one function, the internal move generator has to be changed, and some more. This is not trivial, and requires a good knowledge of the code. 2. The opening tree is not prepared for Chess960 positions. Scid is using some acceleration data for fast position search, without this acceleration the opening tree couldn't be so fast, but the acceleration works only for standard chess positions. With Chess960 databases the opening tree is working, but quite slow. > I wanted to try this last night but the UCI_Chess960 UCI config option for > Stockfish was not presented in the UI so i couldn't tick the box. Any > special reason why this option is being neglected? The UCI_Chess960 configuration is not supported. Scid cannot handle Chess960 castling, and this is the precondition for Chess960 engine support. Cheers, Gregor |
From: mrx <pat...@gm...> - 2015-09-25 14:56:04
|
Hi Gregor, I'm not at all familiar with the code base yet so please do forgive my questions if they seem unenlightened. What is the internal move generator used for? Is it just the castling rules that are missing from the internal move generator? What is the opening tree used for when i play against an engine? Concerning the castling rules, wouldn't the engine you play against tell you if you try to make an invalid move? I cannot see why Scid vs. PC would have to implement the castling rules at all, if Scid vs. PC could handle that response. Of cource, it's a completely different ballgame if you play against someone on a server. There might not be any sanity check on the moves. Perhaps it would be a good start to just support Chess960 against an engine to begin with. // Patrik On Fri, Sep 25, 2015 at 11:20 AM, Gregor Cramer <re...@gm...> wrote: > Hi Patrik, > > > I would like to play Chess960 in Scid vs. PC but the feature is not > worked > > on as i understand it. > > Yes, Scid vs PC does not support Chess960: > > 1. The quite complicated castling rules are not implemented. The > implementation of these rules has more impact than only the change of one > function, the internal move generator has to be changed, and some more. > This > is not trivial, and requires a good knowledge of the code. > > 2. The opening tree is not prepared for Chess960 positions. Scid is using > some > acceleration data for fast position search, without this acceleration the > opening tree couldn't be so fast, but the acceleration works only for > standard > chess positions. With Chess960 databases the opening tree is working, but > quite slow. > > > I wanted to try this last night but the UCI_Chess960 UCI config option > for > > Stockfish was not presented in the UI so i couldn't tick the box. Any > > special reason why this option is being neglected? > > The UCI_Chess960 configuration is not supported. Scid cannot handle > Chess960 > castling, and this is the precondition for Chess960 engine support. > > Cheers, > Gregor > > > ------------------------------------------------------------------------------ > _______________________________________________ > Scidvspc-users mailing list > Sci...@li... > https://lists.sourceforge.net/lists/listinfo/scidvspc-users > |
From: Gregor C. <re...@gm...> - 2015-09-25 15:58:01
|
Hi Patrik, > What is the internal move generator used for? 1. Validation of the move on the board. The current validation does not allow to play Chess960 castlings (except if king is on e, and the rooks are on a,h). 2. Computation of move suggestions, this feature facilitates move input on the GUI board. > Is it just the castling rules that are missing from the internal move > generator? Yes, but this requires more changes, for example how a castling move will be stored inside the move structure, the current handling is not appropriate for Chess960. Furthermore the code of the board stuff has to be prepared for these castling rules. > What is the opening tree used for when i play against an engine? It depends on your decision if you want to use the opening tree or not. But implementing the Chess960 castling rules without preparing also the position search (for the opening tree) for Chess960 would be half-baked. > Concerning the castling rules, wouldn't the engine you play against tell > you if you try to make an invalid move? I cannot see why Scid vs. PC would > have to implement the castling rules at all, if Scid vs. PC could handle > that response. Some engines are responding with an error message in case of an invalid move, some are silently ignoring such a move, and some are crashing. The behavior depends on the diligence of the developer. Scid cannot handle the response if the move is a real Chess960 castling, this move cannot be played on the board without support. Any response of the engine will be validated - without validation it would be possible to store corrupted games in the database if the engine is responding with an invalid move (the binary decoding of the moves in the database depends on the standard chess rules, an invalid move is corrupting the database) - and without support the validation of Chess960 castling fails. > Perhaps it would be a good start to just support Chess960 against an engine > to begin with. This is not possible, the engine support requires that the move generator (and this implies also the internal board) is already prepared for Chess960. The effort for Chess960 support is high, and requires deep knowledge of the code base. The only easement is that the binary encoding of the moves in the database must not be changed, the current encoding for castling moves even works for Chess960. But a new database version number - this means .si5 - is unavoidable (if you store Chess960 games in .si4, then an older Scid version will have problems with such a database). Probably sometimes someone will do the implementation for Chess960!? Cheers, Gregor |
From: mrx <pat...@gm...> - 2015-09-25 16:31:42
|
Hi, I would be interested in giving it a try. Though the knowledge level of the code base you hint is required to do this is far above mine. Thanks for your prompt answer! // Patrik Den 25 sep 2015 17:58 skrev "Gregor Cramer" <re...@gm...>: > Hi Patrik, > > > What is the internal move generator used for? > > 1. Validation of the move on the board. The current validation does not > allow > to play Chess960 castlings (except if king is on e, and the rooks are on > a,h). > > 2. Computation of move suggestions, this feature facilitates move input on > the > GUI board. > > > Is it just the castling rules that are missing from the internal move > > generator? > > Yes, but this requires more changes, for example how a castling move will > be > stored inside the move structure, the current handling is not appropriate > for > Chess960. Furthermore the code of the board stuff has to be prepared for > these > castling rules. > > > What is the opening tree used for when i play against an engine? > > It depends on your decision if you want to use the opening tree or not. But > implementing the Chess960 castling rules without preparing also the > position > search (for the opening tree) for Chess960 would be half-baked. > > > Concerning the castling rules, wouldn't the engine you play against tell > > you if you try to make an invalid move? I cannot see why Scid vs. PC > would > > have to implement the castling rules at all, if Scid vs. PC could handle > > that response. > > Some engines are responding with an error message in case of an invalid > move, > some are silently ignoring such a move, and some are crashing. The behavior > depends on the diligence of the developer. > > Scid cannot handle the response if the move is a real Chess960 castling, > this > move cannot be played on the board without support. Any response of the > engine > will be validated - without validation it would be possible to store > corrupted > games in the database if the engine is responding with an invalid move (the > binary decoding of the moves in the database depends on the standard chess > rules, an invalid move is corrupting the database) - and without support > the > validation of Chess960 castling fails. > > > Perhaps it would be a good start to just support Chess960 against an > engine > > to begin with. > > This is not possible, the engine support requires that the move generator > (and > this implies also the internal board) is already prepared for Chess960. The > effort for Chess960 support is high, and requires deep knowledge of the > code > base. The only easement is that the binary encoding of the moves in the > database must not be changed, the current encoding for castling moves even > works for Chess960. But a new database version number - this means .si5 - > is > unavoidable (if you store Chess960 games in .si4, then an older Scid > version > will have problems with such a database). Probably sometimes someone will > do > the implementation for Chess960!? > > Cheers, > Gregor > |
From: Steve A <ste...@gm...> - 2015-09-27 02:26:42
|
You're welcome to have a go Patrik. I have updated the chess960 patch in the "patches" directory with a few tweaks, including trying to set UCI_Chess960 properly. But getting this going is very tough. Like Gregor said - because Scid's main functionality is as a database, it is much more complicated than just getting the engines to work. Steve On Sat, Sep 26, 2015 at 2:31 AM, mrx <pat...@gm...> wrote: > Hi, > > I would be interested in giving it a try. Though the knowledge level of the > code base you hint is required to do this is far above mine. > > Thanks for your prompt answer! > > // Patrik > > Den 25 sep 2015 17:58 skrev "Gregor Cramer" <re...@gm...>: >> >> Hi Patrik, >> >> > What is the internal move generator used for? >> >> 1. Validation of the move on the board. The current validation does not >> allow >> to play Chess960 castlings (except if king is on e, and the rooks are on >> a,h). >> >> 2. Computation of move suggestions, this feature facilitates move input on >> the >> GUI board. >> >> > Is it just the castling rules that are missing from the internal move >> > generator? >> >> Yes, but this requires more changes, for example how a castling move will >> be >> stored inside the move structure, the current handling is not appropriate >> for >> Chess960. Furthermore the code of the board stuff has to be prepared for >> these >> castling rules. >> >> > What is the opening tree used for when i play against an engine? >> >> It depends on your decision if you want to use the opening tree or not. >> But >> implementing the Chess960 castling rules without preparing also the >> position >> search (for the opening tree) for Chess960 would be half-baked. >> >> > Concerning the castling rules, wouldn't the engine you play against tell >> > you if you try to make an invalid move? I cannot see why Scid vs. PC >> > would >> > have to implement the castling rules at all, if Scid vs. PC could handle >> > that response. >> >> Some engines are responding with an error message in case of an invalid >> move, >> some are silently ignoring such a move, and some are crashing. The >> behavior >> depends on the diligence of the developer. >> >> Scid cannot handle the response if the move is a real Chess960 castling, >> this >> move cannot be played on the board without support. Any response of the >> engine >> will be validated - without validation it would be possible to store >> corrupted >> games in the database if the engine is responding with an invalid move >> (the >> binary decoding of the moves in the database depends on the standard chess >> rules, an invalid move is corrupting the database) - and without support >> the >> validation of Chess960 castling fails. >> >> > Perhaps it would be a good start to just support Chess960 against an >> > engine >> > to begin with. >> >> This is not possible, the engine support requires that the move generator >> (and >> this implies also the internal board) is already prepared for Chess960. >> The >> effort for Chess960 support is high, and requires deep knowledge of the >> code >> base. The only easement is that the binary encoding of the moves in the >> database must not be changed, the current encoding for castling moves even >> works for Chess960. But a new database version number - this means .si5 - >> is >> unavoidable (if you store Chess960 games in .si4, then an older Scid >> version >> will have problems with such a database). Probably sometimes someone will >> do >> the implementation for Chess960!? >> >> Cheers, >> Gregor > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Scidvspc-users mailing list > Sci...@li... > https://lists.sourceforge.net/lists/listinfo/scidvspc-users > |
From: Ashwin S. <ash...@gm...> - 2015-09-27 08:27:25
|
chess960 would be a great addition, and well, I'm really a beginner when it comes to software/programming and such (not to chess though), but if you need someone to do some testing I might be of some help. I might need a bit of guidance of how to report errors and basic stuff like that. Apparently Chess960 is really hard to implement, so good luck in your effort! Ashwin On 2015年09月27日 10:26, Steve A wrote: > You're welcome to have a go Patrik. > > I have updated the chess960 patch in the "patches" directory > with a few tweaks, including trying to set UCI_Chess960 properly. > > But getting this going is very tough. Like Gregor said - because > Scid's main functionality is as a database, it is much more > complicated than just getting the engines to work. > > Steve > > On Sat, Sep 26, 2015 at 2:31 AM, mrx <pat...@gm...> wrote: >> Hi, >> >> I would be interested in giving it a try. Though the knowledge level of the >> code base you hint is required to do this is far above mine. >> >> Thanks for your prompt answer! >> >> // Patrik >> >> Den 25 sep 2015 17:58 skrev "Gregor Cramer" <re...@gm...>: >>> Hi Patrik, >>> >>>> What is the internal move generator used for? >>> 1. Validation of the move on the board. The current validation does not >>> allow >>> to play Chess960 castlings (except if king is on e, and the rooks are on >>> a,h). >>> >>> 2. Computation of move suggestions, this feature facilitates move input on >>> the >>> GUI board. >>> >>>> Is it just the castling rules that are missing from the internal move >>>> generator? >>> Yes, but this requires more changes, for example how a castling move will >>> be >>> stored inside the move structure, the current handling is not appropriate >>> for >>> Chess960. Furthermore the code of the board stuff has to be prepared for >>> these >>> castling rules. >>> >>>> What is the opening tree used for when i play against an engine? >>> It depends on your decision if you want to use the opening tree or not. >>> But >>> implementing the Chess960 castling rules without preparing also the >>> position >>> search (for the opening tree) for Chess960 would be half-baked. >>> >>>> Concerning the castling rules, wouldn't the engine you play against tell >>>> you if you try to make an invalid move? I cannot see why Scid vs. PC >>>> would >>>> have to implement the castling rules at all, if Scid vs. PC could handle >>>> that response. >>> Some engines are responding with an error message in case of an invalid >>> move, >>> some are silently ignoring such a move, and some are crashing. The >>> behavior >>> depends on the diligence of the developer. >>> >>> Scid cannot handle the response if the move is a real Chess960 castling, >>> this >>> move cannot be played on the board without support. Any response of the >>> engine >>> will be validated - without validation it would be possible to store >>> corrupted >>> games in the database if the engine is responding with an invalid move >>> (the >>> binary decoding of the moves in the database depends on the standard chess >>> rules, an invalid move is corrupting the database) - and without support >>> the >>> validation of Chess960 castling fails. >>> >>>> Perhaps it would be a good start to just support Chess960 against an >>>> engine >>>> to begin with. >>> This is not possible, the engine support requires that the move generator >>> (and >>> this implies also the internal board) is already prepared for Chess960. >>> The >>> effort for Chess960 support is high, and requires deep knowledge of the >>> code >>> base. The only easement is that the binary encoding of the moves in the >>> database must not be changed, the current encoding for castling moves even >>> works for Chess960. But a new database version number - this means .si5 - >>> is >>> unavoidable (if you store Chess960 games in .si4, then an older Scid >>> version >>> will have problems with such a database). Probably sometimes someone will >>> do >>> the implementation for Chess960!? >>> >>> Cheers, >>> Gregor >> >> ------------------------------------------------------------------------------ >> >> _______________________________________________ >> Scidvspc-users mailing list >> Sci...@li... >> https://lists.sourceforge.net/lists/listinfo/scidvspc-users >> > ------------------------------------------------------------------------------ > _______________________________________________ > Scidvspc-users mailing list > Sci...@li... > https://lists.sourceforge.net/lists/listinfo/scidvspc-users |