It seems to me that you should not worry too much about speed yet. Engines around this level are often weak not because of lack of speed, or because of their simple design, (lack of implemented features), but because of
bugs.
A good reference would be micro-Max 1.6, which is not much more than a flat alpha-beta search (no extensions or reductions of any kind) with an evaluation of untuned material (just the classical 1, 3, 3, 5, 9) and a primitive drive towards centralization for P,N,B,K.
No King safety, virtually no Pawn structure (it doesn't know about doubled Pawns or passers), no open Rook files... No opening book, no hash table, no EGTBs, no end-game knowledge whatsoever...
So it really has nothing. But it is too small to contain any bugs!
I tried micro-Max 1.6 against Goyaz 3 at 40/1' and 40/2', and it consistenly beat it (both with white and black). Despite the fact that Goyaz claims to outsearch it by 1 or 2 ply! This suggests you still have some bugs.
In the game where Goyaz lasted longest (which I thought would surely go draw, knowing how inept the early micro-Max versions are with passers) this is very clear:
- Code: Select all
[Event "Computer chess game"]
[Site "Pentium IV"]
[Date "2007.08.31"]
[Round "-"]
[White "umax1_6w"]
[Black "GOYAZ"]
[Result "1-0"]
[TimeControl "40/120"]
1. Nc3 e6 2. e4 Qf6 3. Nf3 Nc6 4. Bc4 Qg6 5. O-O Qh5 6. d4 Bd6 7. e5 Bb4 8.
Nb5 Ba5 9. Bd2 a6 10. Nc3 Nge7 11. Ne2 Bxd2 12. Qxd2 Qf5 13. Bd3 Qh5 14.
Ng3 Qh6 15. Qxh6 gxh6 16. Nh5 d6 17. Nf6+ Kd8 18. Bxh7 Nd5 19. Nxd5 exd5
20. Bd3 Be6 21. h4 Kc8 22. a4 dxe5 23. dxe5 a5 24. Kh2 Nb4 25. Nd4 c5 26.
Nxe6 fxe6 27. Rac1 Rg8 28. Bb5 Rg4 29. Kh3 Re4 30. f4 Na2 31. Ra1 Nb4 32.
Rf2 d4 33. Kg3 Nd5 34. Bc4 Ra7 35. Bxd5 exd5 36. Kg4 Re3 37. Kf5 Kd7 38.
Rc1 Ra8 39. Kg6 Ra6+ 40. Kf5 Kc8 41. c4 dxc4 42. Rxc4 Rc6 43. Rfc2 d3 44.
Rc1 b6 45. R4c3 Rc7 46. Kg6 d2 47. Rd1 Re4 48. Kxh6 Rd7 49. Rc2 Re2 50. g4
Re4 51. Kg5 Re2 52. b3 Rg7+ 53. Kf5 Rd7 54. Kg5 Rg7+ 55. Kf5 Rxg4 ???? 56. Kxg4
Rg2+ 57. Kf3 Rh2 58. Kg4 Rg2+ 59. Kf3 c4 ???? 60. Kxg2 Kd7 61. Rxc4 Ke6 62. Rxd2
Kf5 63. Kf3 Kg6 64. Rd7 Kh5 65. Rc6 Kxh4 66. Rh6#
{White mates} 1-0
Obviously there is something wrong with your rep-draw code here: uMax 1.6, not recognizing rep-draws, falls in a repeat cycle despite its overwhelming Pawn front, but as soon as Goyaz can bring about the repeat it gives away a Rook instead (twice!).
Another dramatic loss for Goyaz (considering the simplicity of the opponent):
- Code: Select all
[Event "Computer chess game"]
[Site "Pentium IV"]
[Date "2007.08.31"]
[Round "-"]
[White "umax1_6w"]
[Black "GOYAZ"]
[Result "1-0"]
[TimeControl "40/60"]
1. Nc3 e6 2. e4 Qf6 3. Nf3 Nc6 4. Bc4 Qg6 5. O-O Qh5 6. d4 Bd6 7. e5 Na5 8.
exd6 Nxc4 9. dxc7 Qa5 10. Qe1 Qxc7 11. Nd5 Qd6 12. Nc3 Nb6 13. Ne4 Qd5 14.
Bf4 Nc4 15. b3 Qf5 16. Bd6 Qd5 ???? 17. bxc4 Qxc4 18. Be5 Kf8 19. Nd6 Qxc2 ????
20. Rc1 Qd3 21. Rxc8+ Rxc8 22. Nxc8 Ne7 23. Qb4 Kg8 24. Nxe7+ Kf8 25. Ng6+ Kg8
26. Qf8#
{White mates} 1-0
It seems to me there are some blunders here that it should have surely recognized as such in the reported 5 or 6 ply. E.g. Qxc2, and 3 ply later you are a piece down. And I don't see any moves for black to push it over the horizon.