-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
85 lines (69 loc) · 2.78 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
TODO list
=========
Each task is sorted by importance/priority (or ROI if you want), one relative to another
4 June 2011:
The engine is almost done.
It remains to do the fifty moves rule, repetition rule and a lot of optimisation !
Done - Set up TDD (RSpec) 19-May
Done - choose a board representation => bitboards 19-May => 20-May
Done - write functions to update chessboard representation
Done - write utility function to translate FEN position into your chessboard representation (if not, no easy TDD for move generator) 25-May
Done - write moves generator 21-May => 25-May
Done - write a Perft function 25-May
Done - write a search function with simple evaluation function (end of may)
Done - xboard interface (end of may)
Done ! - play !
In progress - optimisation: Quiescence search (done), etc...
- play !
- FICS interface
- play !
- DB to store moves evaluations
- ... and play !
Other
- fifty moves rule
- repetitions rule
Current detailled TODO list
===========================
- currently an horizon effect: queen is taken early in the game
- deepen search if in check and set eval_king_safety in_check? value higher
- do not prunes tactical moves
- 3 repetition rule
- Hash table
- xboard class
- xboard mode shall output nothing
- generate_until_history generates some bugs with unmake: play, play, unmake, d7d5, play => bug !
- Passer les tests
- read https://chessprogramming.wikispaces.com/MVV-LVA
- Do not prune until depth > 3 to find WAC#1 ? impossible....
- Finish LMR
- opening book
- Idea: For legal moves, do not check it up-front, but wait until the move is detected as a good move (not pruned) and then verify if it is legal.
- Started: moves generation really using bitboard (and premove tables ?)
- Setup a match routine between different versions of MyTeacher to see ELO improvements ! :)
The speed of move generator is not very important.
If you have a 20% faster move generator, your engine will be only 1% faster.
More important is:
-bugfree engine
-good tactic (extension, checks and capture at first ply of quiescence)
-good depth (nullmove with R 3, late move reduction, move sorting with history and killer move)
n/s are useless, a very slow engine can have a very high depth search if you make reduction on useless move (lmr).
You should test your engine on tactical test suite like WAC to estimate the level of each version.
Board indexes
=============
56 57 58 59 60 61 62 63
48 49 50 51 52 53 54 55
40 41 42 43 44 45 46 47
32 33 34 35 36 37 38 39
24 25 26 27 28 29 30 31
16 17 18 19 20 21 22 23
08 09 10 11 12 13 14 15
00 01 02 03 04 05 06 07
side hply ply
w 0 1
b 1 1
w 2 2
b 3 2
w 4 3
b 5 3
w 6 4
b 7 4