user19433: I'm starting my college project to build my own chess engine. The problem is that I have no clue where to start or what to read. I found videos on YouTube but I don't want to be a copycat. I want to build it on my own. What should I read and how can I build it? Is there any chance that I can make it with my own ideas?

user30247: I would recommend this video by Sebastian Lague. It will not give you all the answers, probably, but it summarizes a process of how he himself tried making an engine from scratch and what he learned along the way.

user9192: Others have mentioned www.chessprogramming.org, but it does not seem to give a good explanation of negamax with alpha-beta pruning. You really need to understand this, as it is the key ingredient in getting an efficient chess engine. The static evaluation function is still important but much less than alpha-beta pruning and move-ordering heuristics and other pruning heuristics, as briefly mentioned in this related post. That is, if you replace the static evaluation function just by a checkmate checker plus a material balance evaluator, you would lose only a few moves of effective depth (i.e. you would need to search a few moves deeper to do as well as a better evaluation function that takes a small constant times as long to run). But if you remove alpha-beta pruning, your effective depth would be reduced by a significant fraction (possibly up to half)! And the move-ordering heuristics used with alpha-beta pruning as well as other pruning techniques would in general multiply the effective depth, hence improving them is very important!

user7985: I think it has to be stated: you should start low.
First of all, as we are interested in a chess engine you should not spend effort creating a user interface (not even a crude one). You sbould make your engine speak either Chess Engine Communication Protocol or UCI. This way a number of existing graphical boards can be used with your engine, and lets you focus on the actual engine. This is exactly what is done by other enginesm such as Stockfish. And speaking the standard language for chess engines allows you run your program tests with other existing engines, to match against other programs, etc.
Second, your program will have to use some kind of internal representation of the game state. This will be basically the state of the board plus some additional flags (is castling allowed? An en-passant is possible?) Forsyth-Edwards Notation shows what you have to take into account. You could operate directly on FEN strings, but internally you may use any representation you want. You will need to translate between FEN and your internal structures.
Third, you will need to determine the moves you have available, as noted by MSalters. Initially make it pick a move at random.
At this point, you have a Minimum viable product. You have made your own chess engine. It plays quite badly, but you made an engine. From this point on, you could run out of time with your college project and provide a working project.
Then the actual task is "just" making your engin play well, which is where things become really complex. You can build on existing algorithms, implement your own ideas and heuristics, etc.

user30244: If your main goal is the engine, you can get the basic functionality following this kind of guide (i.e. https://andreasstckl.medium.com/writing-a-chess-program-in-one-day-30daff4610ec). With this, you can develop the basics (that guide is in python, but you can follow along with other languages): board painting, piece managing... (things that may be out of scope for your interests: the engine).
For creating a basic engine, you could start with this site: https://www.chessprogramming.org/Main_Page, in which you will have content to create your engine (you'll get the concepts, not the code itself), like the simplified evaluation: https://www.chessprogramming.org/Simplified_Evaluation_Function
With those concepts, you can enrich your engine as you go by.
Hope this helps!

user27980: The number 1 goal is to make an engine that makes a legal move. The immediate next goal is to make an engine that calculates all legal moves - you can choose one at random.
Next up is an evaluator - how good is a position? Again, we can start with a low goal - just consider checkmate to be the ultimate score, and count the pieces if the position is not checkmate. We can always improve the evaluation function, but you need one to get started.

19433: <p>I'm starting my college project to build my own chess engine. The problem is that I have no clue where to start or what to read. I found videos on YouTube but I don't want to be a copycat. I want to build it on my own. What should I read and how can I build it? Is there any chance that I can make it with my own ideas?</p>
 30247: <p>I would recommend this <a href="https://www.youtube.com/watch?v=U4ogK0MIzqk&amp;t=847s&amp;ab_channel=SebastianLague" rel="nofollow noreferrer">video</a> by Sebastian Lague. It will not give you all the answers, probably, but it summarizes a process of how he himself tried making an engine from scratch and what he learned along the way.</p>
 9192: <p>Others have mentioned <a href="http://www.chessprogramming.org" rel="nofollow noreferrer">www.chessprogramming.org</a>, but it does not seem to give a good explanation of <a href="https://chat.stackexchange.com/rooms/108579/conversation/negamax-alpha-beta-pruning">negamax with alpha-beta pruning</a>. You really need to understand this, as it is the key ingredient in getting an efficient chess engine. The static evaluation function is still important but much less than alpha-beta pruning and move-ordering heuristics and other pruning heuristics, as briefly mentioned in <a href="https://chess.stackexchange.com/a/29842/9192">this related post</a>. That is, if you replace the static evaluation function just by a checkmate checker plus a material balance evaluator, you would lose only a few moves of effective depth (i.e. you would need to search a few moves deeper to do as well as a better evaluation function that takes a small constant times as long to run). But if you remove alpha-beta pruning, your effective depth would be reduced by a significant fraction (possibly up to half)! And the move-ordering heuristics used with alpha-beta pruning as well as other pruning techniques would in general multiply the effective depth, hence improving them is very important!</p>
 7985: <p>I think it has to be stated: you should start low.</p>
<p>First of all, as we are interested in a chess <em>engine</em> you should not spend effort creating a user interface (not even a crude one). You sbould make your engine speak either <a href="https://www.chessprogramming.org/Chess_Engine_Communication_Protocol" rel="noreferrer">Chess Engine Communication Protocol</a> or <a href="https://www.chessprogramming.org/UCI" rel="noreferrer">UCI</a>. This way a number of existing graphical boards can be used with your engine, and lets you focus on the actual engine. This is exactly what is done by other enginesm such as Stockfish. And speaking the standard language for chess engines allows you run your program tests with other existing engines, to match against other programs, etc.</p>
<p>Second, your program will have to use some kind of internal representation of the game state. This will be basically the state of the board <em>plus some additional flags</em> (is castling allowed? An <em>en-passant</em> is possible?) <a href="https://www.chessprogramming.org/Forsyth-Edwards_Notation" rel="noreferrer">Forsyth-Edwards Notation</a> shows what you have to take into account. You could operate directly on FEN strings, but internally you may use any representation you want. You will need to translate between FEN and your internal structures.</p>
<p>Third, you will need to determine the moves you have available, as <a href="https://chess.stackexchange.com/a/37350/7985">noted by MSalters</a>. Initially make it pick a move at random.</p>
<p>At this point, <em>you have a Minimum viable product</em>. You have made your own chess engine. It plays quite badly, but you made an engine. From this point on, you could run out of time with your college project and provide a working project.</p>
<p>Then the actual task is &quot;just&quot; making your engin <em>play well</em>, which is where things become really complex. You can build on existing algorithms, implement your own ideas and heuristics, etc.</p>
 30244: <p>If your main goal is the engine, you can get the basic functionality following this kind of guide (i.e. <a href="https://andreasstckl.medium.com/writing-a-chess-program-in-one-day-30daff4610ec" rel="noreferrer">https://andreasstckl.medium.com/writing-a-chess-program-in-one-day-30daff4610ec</a>). With this, you can develop the basics (that guide is in python, but you can follow along with other languages): board painting, piece managing... (things that may be out of scope for your interests: the engine).</p>
<p>For creating a basic engine, you could start with this site: <a href="https://www.chessprogramming.org/Main_Page" rel="noreferrer">https://www.chessprogramming.org/Main_Page</a>, in which you will have content to create your engine (you'll get the concepts, not the code itself), like the simplified evaluation: <a href="https://www.chessprogramming.org/Simplified_Evaluation_Function" rel="noreferrer">https://www.chessprogramming.org/Simplified_Evaluation_Function</a></p>
<p>With those concepts, you can enrich your engine as you go by.</p>
<p>Hope this helps!</p>
 27980: <p>The number 1 goal is to make an engine that makes a <em>legal</em> move. The immediate next goal is to make an engine that calculates all legal moves - you can choose one at random.</p>
<p>Next up is an evaluator - how good is a position? Again, we can start with a low goal - just consider checkmate to be the ultimate score, and count the pieces if the position is not checkmate. We can always improve the evaluation function, but you need one to get started.</p>
