I'm an amateur compared to most of the people on this board, and I too found it a challenge, so perhaps my experiences as an amateur in overcoming some of the hurdles will benefit you.
Before I try to offer some advice, I have a couple of questions...
Is this your first engine?
Will you be writing your own GUI also?
What language will you use?
How would you grade your overall programing skills?
Writing a Chess engine can be done in a day if you are an experienced engne author, and in a weak if you are an experienced programmer that never wrote a Chess engine before. So I would say it is easy. It is as easy as riding a bike.
Of curse, if you really mean, "but I want to write the strongest engine in the World"... Well, then it is a bit harder, of course. Just like riding a bicycle faster than Lance Armstrong is a tad harder than just riding a bicycle.
If you want help, two pieces of information are critical:
1. Are you already an experienced programmer?
2. What are your goals for your chess engine?
I would personally suggest meager goals for your first chess engine, and not worry about performance or strength. Such things can be saved for subsequent efforts.
If you want help, two pieces of information are critical:
1. Are you already an experienced programmer?
2. What are your goals for your chess engine?
I would personally suggest meager goals for your first chess engine, and not worry about performance or strength. Such things can be saved for subsequent efforts.
I have thought it will be easier . it seems that it is extremly difficult.
You started just few days ago (after some nonsense hand waving about Cobol)....and now you give up.
Apart from technical skills the most important things in computer chess are determination and patience. Without these I suggest you to just keep posting here and there and forget writing some code
When I wanted to write a chess program I looked every where for some kind of examples but found none, so Idecided to write one from scratch.
The first thing I did was to create an outline of all the different part needed to in a chess rprogram, ie., borad representation, move generator, evaluation subroutine, legalility verifaction (in-check), Make/unmake piece mover, display borad.
Once these basic things things are done then you can start making it play better hess. I spent a geat amouunt of time working on improving the evaluation suboutine as this helps to determing the real atrenght of the program, well at least in my opinion.
Bill
P.S.
On top of the Wikepedia reference page you might also look up Bruce Morlands reference page as both are great examples for guidance.
Bill Rogers wrote:...
On top of the Wikepedia reference page you might also look up Bruce Morlands reference page as both are great examples for guidance.
I'll second that. In my opinion Moreland's page is better for newbs such as myself because it is not too advanced.
Patience as was suggested earlier is also a must. Don't byte off more than you can chew. write small little programs that focus on small specific aspect of chess. Then slowly put the pieces together.
I will third the recommendation about Bruce Moreland's page. Very clear directions on the basics, with excellent and small code samples.
I also second Miguel's recommendation that you really can't do anything else until you have a perfect move generator and make/unmake, confirmed with perft. Thankfully, I had the Chessmaster code available, and that gave me a huge head start (despite the fact that Myrddin still suffers from a slow move generator and somebody I'm going to switch to bitboards).
If you want help, two pieces of information are critical:
1. Are you already an experienced programmer?
2. What are your goals for your chess engine?
I would personally suggest meager goals for your first chess engine, and not worry about performance or strength. Such things can be saved for subsequent efforts.
-Sam
First stepping stone: Write a bug-free perft.
Miguel
Agreed. If you want to make a strong engine, forget it at first. Make something that can generate moves, make moves, and undo moves. Verify it works with a simple perft function. THEN you worry about search stuff and eval stuff.
And at some point, you'll probably start over from scratch, incorporating the ideas you learned from the first time around. But it'll go much faster because you already have an idea of where you're going.