Moderator: Andres Valverde
Abhay Kumar wrote:Hi Friends,
I need some help from you all chesslovers and chess programmers. I am doing my final year Btech project on developing a computer program that can play (standard) chess successfully. As most of you are playing chess for a long time, and I assume that you have good knowledge of chess (and are good chess programmers also), can you please help and tell me about some useful resources on the internet related to 'chess programming' or any useful sites, articles or books related to chess programs, that can give me some ideas on what are the user needs and how to successfully write a chess program?
Also where I can find the source code for various chess engines? I also like to know in which language should I program? Any suggestions.
I also need some help for the interface part. Do you know anything about it? And can you suggest me where to look for some standard interfaces for playing chess? I look forward to a helpful response, and thanks for any help that you can provide.
Any help and suggestions you provide will be greatly appreciated.
Thanks in advance.
best regards,
abhay
DA-IICT, Btech, 4th yr
INDIA
PS: You can also mail your replies to: abhay_kumar at da-iict.org
abhay.kumars at gmail.com
Abhay Kumar wrote:Hi Friends,
I need some help from you all chesslovers and chess programmers. I am doing my final year Btech project on developing a computer program that can play (standard) chess successfully. As most of you are playing chess for a long time, and I assume that you have good knowledge of chess (and are good chess programmers also), can you please help and tell me about some useful resources on the internet related to 'chess programming' or any useful sites, articles or books related to chess programs, that can give me some ideas on what are the user needs and how to successfully write a chess program?
Also where I can find the source code for various chess engines?
I also like to know in which language should I program? Any suggestions.
I also need some help for the interface part. Do you know anything about it? And can you suggest me where to look for some standard interfaces for playing chess? I look forward to a helpful response, and thanks for any help that you can provide.
Any help and suggestions you provide will be greatly appreciated.
Thanks in advance.
best regards,
abhay
DA-IICT, Btech, 4th yr
INDIA
PS: You can also mail your replies to: abhay_kumar at da-iict.org
abhay.kumars at gmail.com
Abhay Kumar wrote:Hi,
Thanks for all the replies. I wasn't expecting such great help in such a short time!
I checked the links and found them to be quite useful, especially the gamedev.net link.
I would like to know If it's possible that if I write in Java, then I would be able to implement the winboard protocol.
Any good books you know for programming that you want to recommend?
And how tougher is to build your own interface?
I look forward to some more help.
Thanks again,
Abhay Kumar
Abhay Kumar wrote:Hi,
Thanks for all the replies. I wasn't expecting such great help in such a short time!
I checked the links and found them to be quite useful, especially the gamedev.net link.
I would like to know If it's possible that if I write in Java, then I would be able to implement the winboard protocol.
Any good books you know for programming that you want to recommend? And how tougher is to build your own interface?
I look forward to some more help.
Thanks again,
Abhay Kumar
Pallav Nawani wrote:(a) How much time do you have to implement your project? All depends on that. Don't try to do so much that you can't finish it in time.
(b) Don't make all your text bold. We can read normal text.
(c) What is a good programming book for you? Depends on how much you already know. Without knowing that, it is not possible to reccomend a book.
(d) The gamedev link reccommends MTDF over NegaScout, but you don't need to use either, you can get away with simple alpha-beta. Also, his code is probably buggy.
(e) Building interfaces is easy, but tedious, and takes a lot of time. Designing a good interface is hard, however.
As I said, all depends on the amount of time you have. This is the one thing that trips most final year projects
Pallav
Abhay Kumar wrote:Hi,
Thanks for the info.
My project is of about 1 and 1/2 months duration,atmost 2. So I would like to buld a decent engine that will be strong but no very advanced.
I think I would have to do it in C/C++ since it is hard to make a strong chess program in Java. However I haven't programmed in C/C++ for almost 2 years, I program mostly in Java these days.
Abhay Kumar wrote:Hi,
Thanks for the info.
My project is of about 1 and 1/2 months duration,atmost 2. So I would like to buld a decent engine that will be strong but no very advanced.
As you said, if I implement Alpha-beta, will it be a strong program. And if I use any other algorithms will it save my work and make the program better? What do you recommend.
Pradu wrote:You can make a simple engine in a weekend (if you work all weekend) but it is the learning processes that takes the most time. The only thing you would need to research is minimax then the alphabeta algorithm. Learning the concepts (espically alphabeta) was difficult for me. Implementing them is quite difficult too for the first time. Here I suggest a set of goals you might want to go through.
Research Process:
1) Know your programming language well.
2) Research AlphaBeta and know it really well.
3) Research the Winboard Protocol and ways to implement it.
Implementation Process:
1) Create a board structure
2) Create a move structure
3) Create a makemove() & takeback()
4) Test your makemove() & takeback() with hardcoded moves
5) Write a move-generator
7) Write perft to test your makemove() & takeback() and the movegenerator.
8) Write minimax
9) Write alphabeta
And you are done with your program.
One hint that greatly helped me when writing my chess program is using divide to do perft tests. Some engines implement the divide which gives data on the perft of every move that can be made from the current position.
http://homepages.caverock.net.nz/~peter/perft.htm - some perft results for positions
http://witz.sf.net/Other/Witz.exe my in development chess program that does not play chess yet but has implemented perft and divide
just type xboard then divide depth or perft depth
you can setup the board position by using setboard [FEN]
I believe another program called Sharper implements divide and perft as well:
http://www.albert.nu/programs/sharper/main.htm
Abhay Kumar wrote:Pradu wrote:7) Write perft to test your makemove() & takeback() and the movegenerator.
Thanks for your insights, but what actually is a perft?
Pradu wrote:
I believe another program called Sharper implements divide and perft as well:
http://www.albert.nu/programs/sharper/main.htm
Pradu wrote:
I believe another program called Sharper implements divide and perft as well:
http://www.albert.nu/programs/sharper/main.htm
My program (Roce) hast that feature too. Especially divide is very usefull to track bugs down!
I had so many bugs in my movegenerator that I even added some functionality to run perft and check for bugs automatically (reads an epd file and checks the precalculated perft values with the calculated ones).
Roman
... but what actually is a perft? ...
And what is the common process for making a move generator?
I would also very much like to include an opening book...
Eduardo Waghabi wrote:Bruce Moreland?s site has changed to http://www.brucemo.com/compchess/programming/index.htm, but the old URL is still up and running, though without many of the new topics.
This forum?s main page has this link and many others under the ?Theory and Programming? topic. Just scroll the page down.
TSCP implements bitboards with an easier move generation than rotated bitboards. But with less than 2 months and no chess programming knowledge, I wouldn?t recommend getting even close to bitboards.
Some years ago, when I first thought about writing a chess engine, I remember this nice James Swafford website, ?Creating the Digital GrandMaster?. Do you know whatever happened to this site?
Uri Blass wrote:
There is a mistake here.
TSCP does not use bitboards.
I do not recommend tscp but for different reasons.
It has a lot of global variables and I think that it is not the best way for starting a chess program.
Uri
Return to Programming and Technical Discussions
Users browsing this forum: No registered users and 29 guests